Revision 41637
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