Revision 41637

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.dbf/src/main/java/org/gvsig/fmap/dal/store/dbf/DBFFilesystemServerProvider.java
36 36
import org.gvsig.fmap.dal.exception.FileNotFoundException;
37 37
import org.gvsig.fmap.dal.exception.InitializeException;
38 38
import org.gvsig.fmap.dal.exception.RemoveException;
39
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
40
import org.gvsig.fmap.dal.feature.EditableFeatureType;
41
import org.gvsig.fmap.dal.feature.FeatureType;
39 42
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
40 43
import org.gvsig.fmap.dal.resource.ResourceAction;
41 44
import org.gvsig.fmap.dal.resource.exception.ResourceExecuteException;
......
46 49
import org.gvsig.fmap.dal.serverexplorer.filesystem.impl.AbstractFilesystemServerExplorerProvider;
47 50
import org.gvsig.fmap.dal.serverexplorer.filesystem.spi.FilesystemServerExplorerProvider;
48 51
import org.gvsig.fmap.dal.serverexplorer.filesystem.spi.FilesystemServerExplorerProviderServices;
52
import org.gvsig.tools.dataTypes.DataTypes;
49 53

  
50 54
public class DBFFilesystemServerProvider extends AbstractFilesystemServerExplorerProvider 
51 55
	implements FilesystemServerExplorerProvider, ResourceConsumer {
......
139 143
					DBFFeatureWriter writer =
140 144
							new DBFFeatureWriter(getDataStoreProviderName());
141 145

  
142
					writer.begin(params, params.getDefaultFeatureType(), 0);
146
					writer.begin(
147
                                                params, 
148
                                                fixFeatureType(params.getDefaultFeatureType()), 
149
                                                0
150
                                        );
143 151
					writer.end();
144 152
					writer.dispose();
145 153
					resource.notifyChanges();
......
203 211
		// Do nothing
204 212
	}
205 213

  
214
        protected EditableFeatureType fixFeatureType(FeatureType featureType) {
215
            EditableFeatureType newFeatureType;
216
            
217
            if( featureType instanceof EditableFeatureType ) {
218
                newFeatureType = (EditableFeatureType) featureType.getCopy();
219
            } else {
220
                newFeatureType = featureType.getEditable();
221
            }
222
            
223
            for( int i=0; i<newFeatureType.size(); i++ ) {
224
                EditableFeatureAttributeDescriptor attr = (EditableFeatureAttributeDescriptor) newFeatureType.getAttributeDescriptor(i);
225
                String s; 
226
                switch(attr.getType()) {
227
                case DataTypes.INT:
228
                    s = String.valueOf(Integer.MAX_VALUE);
229
                    attr.setSize(18);
230
                    attr.setPrecision(0);
231
                    break;
232
                case DataTypes.LONG:
233
                    s = String.valueOf(Long.MAX_VALUE);
234
                    attr.setSize(18);
235
                    attr.setPrecision(0);
236
                    break;
237
                case DataTypes.FLOAT:
238
                    attr.setSize(18);
239
                    attr.setPrecision(6);
240
                    break;
241
                case DataTypes.DOUBLE:
242
                    attr.setSize(18);
243
                    attr.setPrecision(6);
244
                    break;
245
                }
246
            }
247
            return newFeatureType;
248
        }
249
        
206 250
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.shp/src/main/java/org/gvsig/fmap/dal/store/shp/SHPFilesystemServerProvider.java
25 25

  
26 26
import java.io.File;
27 27
import java.io.IOException;
28
import javax.xml.datatype.DatatypeConfigurationException;
28 29

  
29 30
import org.gvsig.fmap.dal.DALLocator;
30 31
import org.gvsig.fmap.dal.DataManager;
......
46 47
import org.gvsig.fmap.dal.resource.spi.ResourceProvider;
47 48
import org.gvsig.fmap.dal.serverexplorer.filesystem.AbsolutePathRequiredException;
48 49
import org.gvsig.fmap.dal.store.dbf.DBFFilesystemServerProvider;
50
import org.gvsig.tools.dataTypes.DataTypes;
49 51

  
50 52
/**
51 53
 * @author jmvivo
......
139 141
			throws CreateException {
140 142

  
141 143
		final SHPNewStoreParameters params = (SHPNewStoreParameters) parameters;
142
		final FeatureType fType;
143
		// TODO Comprobar que el campo de geometria
144
		final EditableFeatureType dbfFtype;
145
		if (params.getDefaultFeatureType() instanceof EditableFeatureType) {
146
			fType = params.getDefaultFeatureType();
147
			dbfFtype = (EditableFeatureType) fType.getCopy();
148
		} else {
149
			fType = params.getDefaultFeatureType();
150
			dbfFtype = fType.getEditable();
151
			params.setDefaultFeatureType(fType.getEditable());
152
		}
144
                final EditableFeatureType fType  = params.getDefaultFeatureType();
153 145

  
146
                // Parche para crear con el tama?o que tocan los campos del DBF
147
                // Asumo que el dbfFtype se va a destruir tras crear el dbf.
148
                final EditableFeatureType dbfFtype = fixFeatureType(fType);
149

  
154 150
		SHPStoreProvider.removeGeometryColumn(dbfFtype);
151
                
155 152
		EditableFeatureAttributeDescriptor efad = SHPStoreProvider.addGeometryColumn((EditableFeatureType) fType);
156 153
		efad.setGeometryType(params.getGeometryType());
157 154
		
......
233 230
			resource.removeConsumer(this);
234 231
		}
235 232
	}
236

  
233
        
237 234
	// private boolean closeResources(FileResource[] resources)
238 235
	// throws ResourceException {
239 236
	// for (int i = 0; i < resources.length; i++) {

Also available in: Unified diff