Revision 44740 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultEditableFeatureAttributeDescriptor.java

View differences:

DefaultEditableFeatureAttributeDescriptor.java
53 53
import org.gvsig.timesupport.Interval;
54 54
import org.gvsig.tools.ToolsLocator;
55 55
import org.gvsig.tools.dataTypes.DataType;
56
import org.gvsig.tools.dynobject.DynField;
56 57
import org.gvsig.tools.evaluator.Evaluator;
57 58

  
58 59
public class DefaultEditableFeatureAttributeDescriptor extends
......
578 579
            case "srs":
579 580
                this.setSRS(DataTypeUtils.toProjection(value, null));
580 581
                break;
582
            case "relation":
583
                this.setRelationType(toRelation(value));
584
                break;
581 585
            default:
582 586
                throw new IllegalArgumentException("Name attribute '"+name+"' not valid.");
583 587
        }     
584 588
        return this;
585 589
    }
586 590
    
587
    
591
    private int toRelation(Object value) {
592
      if (value == null) {
593
        return DynField.RELATION_TYPE_NONE;
594
      }
595
      Integer x = DataTypeUtils.toInteger(value, null);
596
      if (x != null) {
597
        return x;
598
      }
599
      try {
600
        String s = value.toString().toUpperCase();
601
        switch (s) {
602
          case "NONE":
603
          default:
604
            return DynField.RELATION_TYPE_NONE;
605
          case "IDENTITY":
606
            return DynField.RELATION_TYPE_IDENTITY;
607
          case "COLLABORATION":
608
            return DynField.RELATION_TYPE_COLLABORATION;
609
          case "COMPOSITION":
610
            return DynField.RELATION_TYPE_COMPOSITION;
611
          case "AGGREGATE":
612
            return DynField.RELATION_TYPE_AGGREGATE;
613
        }
614
      } catch(Exception ex) {
615
        return DynField.RELATION_TYPE_NONE;
616
      }
617
    }
588 618
}

Also available in: Unified diff