Revision 44448

View differences:

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
173 173
            if ( objectClass.isInstance(value) ) {
174 174
                this.data.set(i, value);
175 175
                return;
176
            }
177

  
178
            if ( !objectClass.isInstance(value) ) {
176
            } else {
177
                DataProfile dataProfile = attribute.getDataProfile();
178
                if( dataProfile!=null ) {
179
                    try {
180
                        value = dataProfile.coerce(
181
                                attribute.getDataType(),
182
                                value, 
183
                                attribute.getTags()
184
                        );
185
                    } catch (CoercionException e) {
186
                        
187
                    }
188
                } 
179 189
                try {
180
                    value
181
                            = this.getDataTypesManager().coerce(attribute.getType(),
182
                                    value);
190
                    value= this.getDataTypesManager().coerce(attribute.getType(),value);
183 191
                } catch (CoercionException e) {
184 192
                    throw new IllegalArgumentException("Can't convert to "
185
                            + this.getDataTypesManager().getTypeName(
186
                                    attribute.getType()) + " from '"
193
                            + attribute.getDataType().getName()
194
                            + " from '"
187 195
                            + value.getClass().getName() + "' with value '"
188 196
                            + value.toString() + "'.");
189 197
                }
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/DefaultFeatureAttributeDescriptor.java
34 34
import org.apache.commons.lang3.ArrayUtils;
35 35
import org.apache.commons.lang3.StringUtils;
36 36
import org.cresques.cts.IProjection;
37
import org.gvsig.fmap.dal.DALLocator;
37 38
import org.gvsig.fmap.dal.DataStore;
38 39
import org.gvsig.fmap.dal.DataTypes;
40
import org.gvsig.fmap.dal.feature.DataProfile;
39 41
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
40 42
import org.gvsig.fmap.dal.feature.FeatureAttributeEmulator;
41 43
import org.gvsig.fmap.dal.feature.FeatureAttributeGetter;
......
952 954
    }
953 955

  
954 956
    @Override
957
    public DataProfile getDataProfile() {
958
        if( StringUtils.isBlank(dataProfile) ) {
959
            return null;
960
        }
961
        DataProfile profile = DALLocator.getDataManager().getDataProfile(dataProfile);
962
        return profile;
963
    }
964
    
965
    @Override
955 966
    public void validate(Object value) throws DynFieldValidateException {
956 967

  
957 968
        if (value == null && !this.allowNull()) {
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/impl/dataprofile/DataProfileText.java
4 4
import org.gvsig.fmap.dal.DALLocator;
5 5
import org.gvsig.fmap.dal.DataManager;
6 6
import org.gvsig.fmap.dal.feature.AbstractDataProfile;
7
import org.gvsig.tools.dataTypes.CoercionException;
8
import org.gvsig.tools.dataTypes.DataType;
7 9
import org.gvsig.tools.dynobject.Tags;
8 10

  
9 11
/**
......
21 23
    public Object createData(Object data, Tags tags) {
22 24
        return Objects.toString(data, null);
23 25
    }
26

  
27
    @Override
28
    public Object coerce(DataType dataType, Object data, Tags tags) throws CoercionException {
29
        String s = Objects.toString(data, null);
30
        if( s == null ) {
31
            return null;
32
        }    
33
        try {
34
            data = dataType.coerce(s);
35
            return data;
36
        } catch(Exception ex) {
37
            throw new CoercionException("Can't convert String to "+dataType.getName(), ex);            
38
        }
39
    }
24 40
    
25 41
    public static void selfRegister() {
26 42
        DataManager dataManager = DALLocator.getDataManager();
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretable/table/DynFieldFacadeOfAFeatureAttributeDescriptor.java
5 5
import java.util.List;
6 6
import java.util.Objects;
7 7
import org.cresques.cts.IProjection;
8
import org.gvsig.fmap.dal.feature.DataProfile;
8 9
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
9 10
import org.gvsig.fmap.dal.feature.FeatureAttributeEmulator;
10 11
import org.gvsig.fmap.dal.feature.FeatureAttributeGetter;
......
598 599
        return Objects.toString(value, "");
599 600
    }
600 601

  
602
    @Override
603
    public DataProfile getDataProfile() {
604
        return null;
605
    }
606

  
601 607
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/test/java/org/gvsig/fmap/dal/feature/DummyFeatureAttributeDescriptor.java
569 569
        return Objects.toString(value, "");
570 570
    }
571 571

  
572
    @Override
573
    public DataProfile getDataProfile() {
574
        return null;
575
    }
576
   
572 577
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/feature/FeatureAttributeDescriptor.java
62 62

  
63 63
        public String getDataProfileName();
64 64
        
65
        public DataProfile getDataProfile();
66
        
65 67
	/**
66 68
	 * Returns a number that indicates the size of this attribute. See the
67 69
	 * documentation for the various constants of {@link DataTypes}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/feature/DataProfile.java
1 1
package org.gvsig.fmap.dal.feature;
2 2

  
3
import org.gvsig.tools.dataTypes.CoercionException;
4
import org.gvsig.tools.dataTypes.DataType;
3 5
import org.gvsig.tools.dynobject.Tags;
4 6

  
5 7
/**
......
15 17
    public Class getDataClass();
16 18
    
17 19
    public Object createData(Object data, Tags tags);
20

  
21
    public Object coerce(DataType dataType, Object value, Tags tags) throws CoercionException;
18 22
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/extension/InitializeApplicationExtension.java
72 72
import org.gvsig.tools.bookmarksandhistory.Bookmark;
73 73
import org.gvsig.tools.bookmarksandhistory.Bookmarks;
74 74
import org.gvsig.tools.bookmarksandhistory.History;
75
import org.gvsig.tools.dataTypes.CoercionException;
76
import org.gvsig.tools.dataTypes.DataType;
77
import org.gvsig.tools.dataTypes.DataTypes;
75 78
import org.gvsig.tools.dynobject.DynObject;
76 79
import org.gvsig.tools.dynobject.Tags;
77 80
import org.gvsig.tools.folders.FoldersManager;
......
107 110
            SimpleImage image = toolsSwingManager.createSimpleImage(data);
108 111
            return image;
109 112
        }
113

  
114
        @Override
115
        public Object coerce(DataType dataType, Object data, Tags tags) throws CoercionException {
116
            final ToolsSwingManager toolsSwingManager;
117
            final SimpleImage image;
118
            try {
119
                switch(dataType.getType()) {
120
                    case DataTypes.BYTEARRAY:
121
                        toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
122
                        image = toolsSwingManager.createSimpleImage(data);
123
                        return image.toBytearray();
124
                    case DataTypes.STRING:
125
                        toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
126
                        image = toolsSwingManager.createSimpleImage(data);
127
                        return image.toString();
128
                    default:
129
                        break;
130
                }
131
            } catch(Exception ex) {
132
                throw new CoercionException("Can't convert imagen to "+dataType.getName(), ex);            
133
            }
134
            throw new CoercionException("Can't convert imagen to "+dataType.getName());            
135
        }
136
        
110 137
    }
111 138

  
112 139
    @Override

Also available in: Unified diff