Revision 46162 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/DefaultFeature.java

View differences:

DefaultFeature.java
757 757
        return this.getFromProfile(descriptor.getIndex());
758 758
    }
759 759

  
760
    private Object get(String name, Class theClass, int type) {
761
        Object value = this.get(name);
762
        if (theClass.isInstance(value)) {
763
            return value;
764
        }
765
        try {
766
            return this.getDataTypesManager().coerce(type, value);
767
        } catch (CoercionException e) {
768

  
769
            if (value == null) {
770
                return null;
771
            }
772
            throw new IllegalArgumentException(
773
                    "Can't convert to " + theClass.getName()
774
                    + " from '" + value.getClass().getName()
775
                    + "' with value '" + value.toString() + "'.");
776
        }
777
    }
778

  
760 779
    @Override
761 780
    public Object get(String name) {
762 781
        int index = this.data.getType().getIndex(name);
......
955 974

  
956 975
    @Override
957 976
    public byte[] getByteArray(String name) {
958
        return this.getByteArray(this.data.getType().getIndex(name));
977
        return (byte[]) this.get(name);
959 978
    }
960 979

  
961 980
    @Override
......
965 984

  
966 985
    @Override
967 986
    public Object[] getArray(String name) {
968
        return this.getArray(this.data.getType().getIndex(name));
987
        return (Object[]) this.get(name);
969 988
    }
970 989

  
971 990
    @Override
......
975 994

  
976 995
    @Override
977 996
    public boolean getBoolean(String name) {
978
        return this.getBoolean(this.data.getType().getIndex(name));
997
        Boolean value = ((Boolean) this.get(name, Boolean.class, DataTypes.BOOLEAN));
998
        if (value == null) {
999
            return false;
1000
        }
1001
        return value;
979 1002
    }
980 1003

  
981 1004
    @Override
......
989 1012

  
990 1013
    @Override
991 1014
    public byte getByte(String name) {
992
        return this.getByte(this.data.getType().getIndex(name));
1015
        Byte value = ((Byte) this.get(name, Byte.class, DataTypes.BYTE));
1016
        if (value == null) {
1017
            return 0;
1018
        }
1019
        return value;
993 1020
    }
994 1021

  
995 1022
    @Override
......
1003 1030

  
1004 1031
    @Override
1005 1032
    public java.sql.Date getDate(String name) {
1006
        return this.getDate(this.data.getType().getIndex(name));
1033
        java.sql.Date value = ((java.sql.Date) this.get(name, java.sql.Date.class, DataTypes.DATE));
1034
        return value;
1007 1035
    }
1008 1036

  
1009 1037
    @Override
......
1014 1042

  
1015 1043
    @Override
1016 1044
    public java.sql.Time getTime(String name) {
1017
        return this.getTime(this.data.getType().getIndex(name));
1045
        java.sql.Time value = ((java.sql.Time) this.get(name, java.sql.Time.class, DataTypes.TIME));
1046
        return value;
1018 1047
    }
1019 1048

  
1020 1049
    @Override
......
1025 1054

  
1026 1055
    @Override
1027 1056
    public java.sql.Timestamp getTimestamp(String name) {
1028
        return this.getTimestamp(this.data.getType().getIndex(name));
1057
        java.sql.Timestamp value = ((java.sql.Timestamp) this.get(name, java.sql.Timestamp.class, DataTypes.TIMESTAMP));
1058
        return value;
1029 1059
    }
1030 1060

  
1031 1061
    @Override
......
1036 1066

  
1037 1067
    @Override
1038 1068
    public double getDouble(String name) {
1039
        return this.getDouble(this.data.getType().getIndex(name));
1069
        Double value = ((Double) this.get(name, Double.class, DataTypes.DOUBLE));
1070
        if (value == null) {
1071
            return 0;
1072
        }
1073
        return value;
1040 1074
    }
1041 1075

  
1042 1076
    @Override
......
1051 1085

  
1052 1086
    @Override
1053 1087
    public BigDecimal getDecimal(String name) {
1054
        return this.getDecimal(this.data.getType().getIndex(name));
1088
        BigDecimal value = ((BigDecimal) this.get(name, BigDecimal.class, DataTypes.DECIMAL));
1089
        return value;
1055 1090
    }
1056 1091

  
1057 1092
    @Override
......
1072 1107

  
1073 1108
    @Override
1074 1109
    public float getFloat(String name) {
1075
        return this.getFloat(this.data.getType().getIndex(name));
1110
        Float value = ((Float) this.get(name, Float.class, DataTypes.FLOAT));
1111
        if (value == null) {
1112
            return 0;
1113
        }
1114
        return value;
1076 1115
    }
1077 1116

  
1078 1117
    @Override
......
1086 1125

  
1087 1126
    @Override
1088 1127
    public Geometry getGeometry(String name) {
1089
        return this.getGeometry(this.data.getType().getIndex(name));
1128
        return (Geometry) this.get(name, Geometry.class, DataTypes.GEOMETRY);
1090 1129
    }
1091 1130

  
1092 1131
    @Override
......
1096 1135

  
1097 1136
    @Override
1098 1137
    public int getInt(String name) {
1099
        return this.getInt(this.data.getType().getIndex(name));
1138
        Integer value = ((Integer) this.get(name, Integer.class, DataTypes.INT));
1139
        if (value == null) {
1140
            return 0;
1141
        }
1142
        return value;
1100 1143
    }
1101 1144

  
1102 1145
    @Override
......
1110 1153

  
1111 1154
    @Override
1112 1155
    public long getLong(String name) {
1113
        return this.getLong(this.data.getType().getIndex(name));
1156
        Long value = ((Long) this.get(name, Long.class, DataTypes.LONG));
1157
        if (value == null) {
1158
            return 0;
1159
        }
1160
        return value;
1114 1161
    }
1115 1162

  
1116 1163
    @Override
......
1124 1171

  
1125 1172
    @Override
1126 1173
    public String getString(String name) {
1127
        return this.getString(this.data.getType().getIndex(name));
1174
        return (String) this.get(name, String.class, DataTypes.STRING);
1128 1175
    }
1129 1176

  
1130 1177
    @Override

Also available in: Unified diff