Revision 37333
branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/FeatureStoreProviderFactory.java | ||
---|---|---|
16 | 16 |
public List getSupportedGeometries(); |
17 | 17 |
|
18 | 18 |
public int allowMultipleGeometryTypes(); |
19 |
|
|
20 |
public int allowEditableFeatureType(); |
|
21 |
|
|
19 | 22 |
} |
branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/spi/BaseFeatureStoreProviderFactory.java | ||
---|---|---|
1 |
package org.gvsig.fmap.dal.feature.spi; |
|
2 |
|
|
3 |
import java.lang.reflect.Constructor; |
|
4 |
import java.util.List; |
|
5 |
|
|
6 |
import org.gvsig.fmap.dal.DataParameters; |
|
7 |
import org.gvsig.fmap.dal.DataStoreProvider; |
|
8 |
import org.gvsig.fmap.dal.exception.InitializeException; |
|
9 |
import org.gvsig.fmap.dal.feature.FeatureStoreProviderFactory; |
|
10 |
import org.gvsig.fmap.dal.spi.AbstractDataStoreProviderFactory; |
|
11 |
import org.gvsig.fmap.dal.spi.DataStoreProviderServices; |
|
12 |
import org.gvsig.tools.dynobject.DynObject; |
|
13 |
|
|
14 |
public class BaseFeatureStoreProviderFactory extends |
|
15 |
AbstractDataStoreProviderFactory implements FeatureStoreProviderFactory { |
|
16 |
|
|
17 |
private Class providerClass = null; |
|
18 |
private Class parametersClass = null; |
|
19 |
|
|
20 |
public BaseFeatureStoreProviderFactory(String name, String description, |
|
21 |
Class provider, Class parametersClass) { |
|
22 |
super(name, description); |
|
23 |
this.providerClass = provider; |
|
24 |
this.parametersClass = parametersClass; |
|
25 |
} |
|
26 |
|
|
27 |
public DataStoreProvider createProvider(DataParameters parameters, |
|
28 |
DataStoreProviderServices providerServices) |
|
29 |
throws InitializeException { |
|
30 |
try { |
|
31 |
Class[] argsTypes = new Class[] { DataParameters.class, |
|
32 |
DataStoreProviderServices.class }; |
|
33 |
Object[] args = new Object[] { parameters, providerServices }; |
|
34 |
|
|
35 |
Constructor contructor; |
|
36 |
contructor = findConstructor(providerClass, argsTypes); |
|
37 |
return (DataStoreProvider) contructor.newInstance(args); |
|
38 |
} catch (Throwable e) { |
|
39 |
throw new InitializeException(e); |
|
40 |
} |
|
41 |
} |
|
42 |
|
|
43 |
public final DynObject createParameters() { |
|
44 |
try { |
|
45 |
return (DynObject) parametersClass.newInstance(); |
|
46 |
} catch (Exception e) { |
|
47 |
throw new RuntimeException(e); |
|
48 |
} |
|
49 |
} |
|
50 |
|
|
51 |
protected Constructor findConstructor(Class clazz, Class[] types) |
|
52 |
throws SecurityException, NoSuchMethodException { |
|
53 |
try { |
|
54 |
return clazz.getConstructor(types); |
|
55 |
} catch (NoSuchMethodException e) { |
|
56 |
// Nothing to do |
|
57 |
} |
|
58 |
|
|
59 |
// search for the required constructor |
|
60 |
Constructor[] constrs = clazz.getConstructors(); |
|
61 |
boolean allMatch; |
|
62 |
for (int i = 0; i < constrs.length; i++) { |
|
63 |
Class[] paramTypes = constrs[i].getParameterTypes(); |
|
64 |
if (paramTypes.length == types.length) { // a general candidate |
|
65 |
allMatch = true; |
|
66 |
for (int j = 0; j < paramTypes.length; j++) { |
|
67 |
if (!isParameterCompatible(types[j], paramTypes[j])) { |
|
68 |
allMatch = false; |
|
69 |
break; |
|
70 |
} |
|
71 |
} |
|
72 |
if (allMatch) { |
|
73 |
return constrs[i]; |
|
74 |
} |
|
75 |
|
|
76 |
} |
|
77 |
} |
|
78 |
StringBuffer strb = new StringBuffer(); |
|
79 |
strb.append(clazz.getName()); |
|
80 |
strb.append('('); |
|
81 |
if (types.length > 0) { |
|
82 |
for (int i = 0; i < types.length - 1; i++) { |
|
83 |
strb.append(types[i].getName()); |
|
84 |
strb.append(','); |
|
85 |
} |
|
86 |
strb.append(types[types.length - 1].getName()); |
|
87 |
} |
|
88 |
strb.append(')'); |
|
89 |
throw new NoSuchMethodException(strb.toString()); |
|
90 |
} |
|
91 |
|
|
92 |
private boolean isParameterCompatible(Class current, Class defined) { |
|
93 |
if (current == null) { |
|
94 |
return !defined.isPrimitive(); |
|
95 |
} else { |
|
96 |
return current.isAssignableFrom(defined); |
|
97 |
} |
|
98 |
} |
|
99 |
|
|
100 |
public List getSupportedGeometries() { |
|
101 |
return null; |
|
102 |
} |
|
103 |
|
|
104 |
public int allowMultipleGeometryTypes() { |
|
105 |
return UNKNOWN; |
|
106 |
} |
|
107 |
|
|
108 |
} |
branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/spi/AbstractFeatureStoreProviderFactory.java | ||
---|---|---|
1 |
package org.gvsig.fmap.dal.feature.spi; |
|
2 |
|
|
3 |
import java.util.List; |
|
4 |
|
|
5 |
import org.gvsig.fmap.dal.feature.FeatureStoreProviderFactory; |
|
6 |
import org.gvsig.fmap.dal.spi.AbstractDataStoreProviderFactory; |
|
7 |
|
|
8 |
public abstract class AbstractFeatureStoreProviderFactory extends |
|
9 |
AbstractDataStoreProviderFactory implements FeatureStoreProviderFactory { |
|
10 |
|
|
11 |
|
|
12 |
public AbstractFeatureStoreProviderFactory(String name, String description) { |
|
13 |
super(name, description); |
|
14 |
} |
|
15 |
|
|
16 |
public List getSupportedGeometries() { |
|
17 |
return null; |
|
18 |
} |
|
19 |
|
|
20 |
public int allowMultipleGeometryTypes() { |
|
21 |
return UNKNOWN; |
|
22 |
} |
|
23 |
|
|
24 |
public int allowEditableFeatureType() { |
|
25 |
return UNKNOWN; |
|
26 |
} |
|
27 |
|
|
28 |
} |
branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/spi/DataStoreProviderToFeatureStoreProviderFactoryWrapper.java | ||
---|---|---|
1 |
package org.gvsig.fmap.dal.feature.spi; |
|
2 |
|
|
3 |
import java.lang.reflect.Constructor; |
|
4 |
|
|
5 |
import org.gvsig.fmap.dal.DataParameters; |
|
6 |
import org.gvsig.fmap.dal.DataStoreProvider; |
|
7 |
import org.gvsig.fmap.dal.exception.InitializeException; |
|
8 |
import org.gvsig.fmap.dal.feature.FeatureStoreProviderFactory; |
|
9 |
import org.gvsig.fmap.dal.spi.DataStoreProviderServices; |
|
10 |
import org.gvsig.tools.dynobject.DynObject; |
|
11 |
|
|
12 |
public class DataStoreProviderToFeatureStoreProviderFactoryWrapper extends |
|
13 |
AbstractFeatureStoreProviderFactory implements FeatureStoreProviderFactory { |
|
14 |
|
|
15 |
private Class providerClass = null; |
|
16 |
private Class parametersClass = null; |
|
17 |
|
|
18 |
public DataStoreProviderToFeatureStoreProviderFactoryWrapper(String name, String description, |
|
19 |
Class provider, Class parametersClass) { |
|
20 |
super(name, description); |
|
21 |
this.providerClass = provider; |
|
22 |
this.parametersClass = parametersClass; |
|
23 |
} |
|
24 |
|
|
25 |
public DataStoreProvider createProvider(DataParameters parameters, |
|
26 |
DataStoreProviderServices providerServices) |
|
27 |
throws InitializeException { |
|
28 |
try { |
|
29 |
Class[] argsTypes = new Class[] { DataParameters.class, |
|
30 |
DataStoreProviderServices.class }; |
|
31 |
Object[] args = new Object[] { parameters, providerServices }; |
|
32 |
|
|
33 |
Constructor contructor; |
|
34 |
contructor = findConstructor(providerClass, argsTypes); |
|
35 |
return (DataStoreProvider) contructor.newInstance(args); |
|
36 |
} catch (Throwable e) { |
|
37 |
throw new InitializeException(e); |
|
38 |
} |
|
39 |
} |
|
40 |
|
|
41 |
public final DynObject createParameters() { |
|
42 |
try { |
|
43 |
return (DynObject) parametersClass.newInstance(); |
|
44 |
} catch (Exception e) { |
|
45 |
throw new RuntimeException(e); |
|
46 |
} |
|
47 |
} |
|
48 |
|
|
49 |
protected Constructor findConstructor(Class clazz, Class[] types) |
|
50 |
throws SecurityException, NoSuchMethodException { |
|
51 |
try { |
|
52 |
return clazz.getConstructor(types); |
|
53 |
} catch (NoSuchMethodException e) { |
|
54 |
// Nothing to do |
|
55 |
} |
|
56 |
|
|
57 |
// search for the required constructor |
|
58 |
Constructor[] constrs = clazz.getConstructors(); |
|
59 |
boolean allMatch; |
|
60 |
for (int i = 0; i < constrs.length; i++) { |
|
61 |
Class[] paramTypes = constrs[i].getParameterTypes(); |
|
62 |
if (paramTypes.length == types.length) { // a general candidate |
|
63 |
allMatch = true; |
|
64 |
for (int j = 0; j < paramTypes.length; j++) { |
|
65 |
if (!isParameterCompatible(types[j], paramTypes[j])) { |
|
66 |
allMatch = false; |
|
67 |
break; |
|
68 |
} |
|
69 |
} |
|
70 |
if (allMatch) { |
|
71 |
return constrs[i]; |
|
72 |
} |
|
73 |
|
|
74 |
} |
|
75 |
} |
|
76 |
StringBuffer strb = new StringBuffer(); |
|
77 |
strb.append(clazz.getName()); |
|
78 |
strb.append('('); |
|
79 |
if (types.length > 0) { |
|
80 |
for (int i = 0; i < types.length - 1; i++) { |
|
81 |
strb.append(types[i].getName()); |
|
82 |
strb.append(','); |
|
83 |
} |
|
84 |
strb.append(types[types.length - 1].getName()); |
|
85 |
} |
|
86 |
strb.append(')'); |
|
87 |
throw new NoSuchMethodException(strb.toString()); |
|
88 |
} |
|
89 |
|
|
90 |
private boolean isParameterCompatible(Class current, Class defined) { |
|
91 |
if (current == null) { |
|
92 |
return !defined.isPrimitive(); |
|
93 |
} else { |
|
94 |
return current.isAssignableFrom(defined); |
|
95 |
} |
|
96 |
} |
|
97 |
} |
|
0 | 98 |
branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/impl/DefaultDataManager.java | ||
---|---|---|
54 | 54 |
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore; |
55 | 55 |
import org.gvsig.fmap.dal.feature.paging.FeaturePagingHelper; |
56 | 56 |
import org.gvsig.fmap.dal.feature.paging.impl.FeaturePagingHelperImpl; |
57 |
import org.gvsig.fmap.dal.feature.spi.BaseFeatureStoreProviderFactory;
|
|
57 |
import org.gvsig.fmap.dal.feature.spi.DataStoreProviderToFeatureStoreProviderFactoryWrapper;
|
|
58 | 58 |
import org.gvsig.fmap.dal.feature.spi.FeatureStoreProvider; |
59 | 59 |
import org.gvsig.fmap.dal.feature.spi.FeatureStoreProviderServices; |
60 | 60 |
import org.gvsig.fmap.dal.feature.spi.cache.FeatureCacheProvider; |
... | ... | |
239 | 239 |
|
240 | 240 |
if (FeatureStoreProvider.class.isAssignableFrom(storeProviderClass)) { |
241 | 241 |
// Envuelve al proveedor en una factoria por defecto. |
242 |
this.registerStoreProviderFactory(new BaseFeatureStoreProviderFactory(
|
|
242 |
this.registerStoreProviderFactory(new DataStoreProviderToFeatureStoreProviderFactoryWrapper(
|
|
243 | 243 |
name, "", storeProviderClass, parametersClass)); |
244 | 244 |
return; |
245 | 245 |
} |
branches/v2_0_0_prep/libraries/libFMap_dalfile/src/org/gvsig/fmap/dal/store/dxf/DXFStoreProviderFactory.java | ||
---|---|---|
1 |
package org.gvsig.fmap.dal.store.dxf; |
|
2 |
|
|
3 |
import java.util.List; |
|
4 |
|
|
5 |
import org.gvsig.fmap.dal.DataParameters; |
|
6 |
import org.gvsig.fmap.dal.DataStoreProvider; |
|
7 |
import org.gvsig.fmap.dal.exception.InitializeException; |
|
8 |
import org.gvsig.fmap.dal.feature.FeatureStoreProviderFactory; |
|
9 |
import org.gvsig.fmap.dal.feature.spi.AbstractFeatureStoreProviderFactory; |
|
10 |
import org.gvsig.fmap.dal.spi.DataStoreProviderServices; |
|
11 |
import org.gvsig.tools.dynobject.DynObject; |
|
12 |
|
|
13 |
public class DXFStoreProviderFactory extends AbstractFeatureStoreProviderFactory implements FeatureStoreProviderFactory{ |
|
14 |
|
|
15 |
protected DXFStoreProviderFactory(String name, String description) { |
|
16 |
super(name, description); |
|
17 |
} |
|
18 |
|
|
19 |
public DataStoreProvider createProvider(DataParameters parameters, |
|
20 |
DataStoreProviderServices providerServices) |
|
21 |
throws InitializeException { |
|
22 |
return new DXFStoreProvider((DXFStoreParameters) parameters, providerServices); |
|
23 |
} |
|
24 |
|
|
25 |
public DynObject createParameters() { |
|
26 |
return new DXFStoreParameters(); |
|
27 |
} |
|
28 |
|
|
29 |
public int allowCreate() { |
|
30 |
return YES; |
|
31 |
} |
|
32 |
|
|
33 |
public int allowWrite() { |
|
34 |
return YES; |
|
35 |
} |
|
36 |
|
|
37 |
public int allowRead() { |
|
38 |
return YES; |
|
39 |
} |
|
40 |
|
|
41 |
public int hasRasterSupport() { |
|
42 |
return NO; |
|
43 |
} |
|
44 |
|
|
45 |
public int hasTabularSupport() { |
|
46 |
return YES; |
|
47 |
} |
|
48 |
|
|
49 |
public int hasVectorialSupport() { |
|
50 |
return YES; |
|
51 |
} |
|
52 |
|
|
53 |
public List getSupportedGeometries() { |
|
54 |
return null; |
|
55 |
} |
|
56 |
|
|
57 |
public int allowMultipleGeometryTypes() { |
|
58 |
return NO; |
|
59 |
} |
|
60 |
|
|
61 |
public int allowEditableFeatureType() { |
|
62 |
return NO; |
|
63 |
} |
|
64 |
|
|
65 |
} |
branches/v2_0_0_prep/libraries/libFMap_dalfile/src/org/gvsig/fmap/dal/store/dxf/DXFStoreParameters.java | ||
---|---|---|
11 | 11 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters; |
12 | 12 |
import org.gvsig.fmap.dal.spi.AbstractDataParameters; |
13 | 13 |
import org.gvsig.fmap.dal.spi.DataStoreProviderServices; |
14 |
import org.gvsig.fmap.geom.Geometry; |
|
14 | 15 |
import org.gvsig.tools.dynobject.DelegatedDynObject; |
15 | 16 |
|
16 | 17 |
public class DXFStoreParameters extends AbstractDataParameters implements |
... | ... | |
93 | 94 |
} |
94 | 95 |
|
95 | 96 |
public EditableFeatureType getDefaultFeatureType() { |
96 |
throw new UnsupportedOperationException();
|
|
97 |
return DXFStoreProvider.createFeatureType(null, Geometry.SUBTYPES.GEOM3D);
|
|
97 | 98 |
} |
98 | 99 |
|
99 | 100 |
public void setDefaultFeatureType(FeatureType defaultFeatureType) { |
branches/v2_0_0_prep/libraries/libFMap_dalfile/src/org/gvsig/fmap/dal/store/dxf/DXFLibrary.java | ||
---|---|---|
36 | 36 |
import org.gvsig.fmap.dal.DALLocator; |
37 | 37 |
import org.gvsig.fmap.dal.FileHelper; |
38 | 38 |
import org.gvsig.fmap.dal.spi.DataManagerProviderServices; |
39 |
import org.gvsig.fmap.dal.store.shp.SHPStoreProvider; |
|
40 |
import org.gvsig.fmap.dal.store.shp.SHPStoreProviderFactory; |
|
39 | 41 |
import org.gvsig.metadata.exceptions.MetadataException; |
40 | 42 |
import org.gvsig.tools.library.AbstractLibrary; |
41 | 43 |
import org.gvsig.tools.library.LibraryException; |
... | ... | |
72 | 74 |
|
73 | 75 |
try { |
74 | 76 |
if (!dataman.getStoreProviders().contains(DXFStoreProvider.NAME)) { |
75 |
dataman.registerStoreProvider(DXFStoreProvider.NAME,
|
|
76 |
DXFStoreProvider.class, DXFStoreParameters.class); |
|
77 |
dataman.registerStoreProviderFactory(new DXFStoreProviderFactory(DXFStoreProvider.NAME, DXFStoreProvider.DESCRIPTION));
|
|
78 |
|
|
77 | 79 |
} |
78 | 80 |
} catch (RuntimeException e) { |
79 | 81 |
exs.add(e); |
branches/v2_0_0_prep/libraries/libFMap_dalfile/src/org/gvsig/fmap/dal/store/dxf/DXFStoreProvider.java | ||
---|---|---|
107 | 107 |
public static final String NAME_FIELD_HEIGHTTEXT = "HeightText"; |
108 | 108 |
public static final String NAME_FIELD_ROTATIONTEXT = "Rotation"; |
109 | 109 |
|
110 |
private int ID_FIELD_ID = 0; |
|
111 |
private int ID_FIELD_GEOMETRY = 1; |
|
112 |
private int ID_FIELD_ENTITY = 2; |
|
113 |
private int ID_FIELD_LAYER = 3; |
|
114 |
private int ID_FIELD_COLOR = 4; |
|
115 |
private int ID_FIELD_ELEVATION = 5; |
|
116 |
private int ID_FIELD_THICKNESS = 6; |
|
117 |
private int ID_FIELD_TEXT = 7; |
|
118 |
private int ID_FIELD_HEIGHTTEXT = 8; |
|
119 |
private int ID_FIELD_ROTATIONTEXT = 9; |
|
110 |
private static final int ID_FIELD_ID = 0;
|
|
111 |
private static final int ID_FIELD_GEOMETRY = 1;
|
|
112 |
private static final int ID_FIELD_ENTITY = 2;
|
|
113 |
private static final int ID_FIELD_LAYER = 3;
|
|
114 |
private static final int ID_FIELD_COLOR = 4;
|
|
115 |
private static final int ID_FIELD_ELEVATION = 5;
|
|
116 |
private static final int ID_FIELD_THICKNESS = 6;
|
|
117 |
private static final int ID_FIELD_TEXT = 7;
|
|
118 |
private static final int ID_FIELD_HEIGHTTEXT = 8;
|
|
119 |
private static final int ID_FIELD_ROTATIONTEXT = 9;
|
|
120 | 120 |
|
121 | 121 |
private IProjection projection; |
122 | 122 |
private ResourceProvider resource; |
... | ... | |
377 | 377 |
} |
378 | 378 |
} |
379 | 379 |
|
380 |
public static EditableFeatureType createFeatureType(IProjection projection, int geometrySubtype){ |
|
381 |
DataManager manager = DALLocator.getDataManager(); |
|
382 |
EditableFeatureType featureType = manager.createFeatureType(); |
|
383 |
|
|
384 |
featureType.setHasOID(true); |
|
385 |
|
|
386 |
// ID_FIELD_ID = 0; |
|
387 |
featureType.add(NAME_FIELD_ID, DataTypes.INT) |
|
388 |
.setDefaultValue(Integer.valueOf(0)) |
|
389 |
.getIndex(); |
|
390 |
|
|
391 |
EditableFeatureAttributeDescriptor attr = featureType.add( |
|
392 |
NAME_FIELD_GEOMETRY, DataTypes.GEOMETRY); |
|
393 |
attr.setSRS(projection); |
|
394 |
attr.setGeometryType(Geometry.TYPES.GEOMETRY); |
|
395 |
//If is a 3D file, set the geometry subtype |
|
396 |
attr.setGeometrySubType(geometrySubtype); |
|
397 |
|
|
398 |
// ID_FIELD_GEOMETRY = 1; //attr.getIndex(); |
|
399 |
|
|
400 |
featureType.setDefaultGeometryAttributeName(NAME_FIELD_GEOMETRY); |
|
401 |
|
|
402 |
// FIXME: Cual es el size y el valor por defecto para Entity ? |
|
403 |
// ID_FIELD_ENTITY = 2; |
|
404 |
featureType.add(NAME_FIELD_ENTITY, |
|
405 |
DataTypes.STRING, 100) |
|
406 |
.setDefaultValue("") |
|
407 |
.getIndex(); |
|
408 |
|
|
409 |
// FIXME: Cual es el size de Layer ? |
|
410 |
// ID_FIELD_LAYER = 3; |
|
411 |
featureType.add(NAME_FIELD_LAYER, |
|
412 |
DataTypes.STRING, 100) |
|
413 |
.setDefaultValue( |
|
414 |
"default").getIndex(); |
|
415 |
|
|
416 |
// ID_FIELD_COLOR = 4; |
|
417 |
featureType.add(NAME_FIELD_COLOR, |
|
418 |
DataTypes.INT) |
|
419 |
.setDefaultValue( |
|
420 |
Integer.valueOf(0)).getIndex(); |
|
421 |
|
|
422 |
// ID_FIELD_ELEVATION = 5; |
|
423 |
featureType.add(NAME_FIELD_ELEVATION, |
|
424 |
DataTypes.DOUBLE) |
|
425 |
.setDefaultValue( |
|
426 |
Double.valueOf(0)).getIndex(); |
|
427 |
|
|
428 |
// ID_FIELD_THICKNESS = 6; |
|
429 |
featureType.add(NAME_FIELD_THICKNESS, |
|
430 |
DataTypes.DOUBLE) |
|
431 |
.setDefaultValue( |
|
432 |
Double.valueOf(0)).getIndex(); |
|
433 |
|
|
434 |
// FIXME: Cual es el size de Text ? |
|
435 |
// ID_FIELD_TEXT = 7; |
|
436 |
featureType.add(NAME_FIELD_TEXT, |
|
437 |
DataTypes.STRING, 100) |
|
438 |
.setDefaultValue("") |
|
439 |
.getIndex(); |
|
440 |
|
|
441 |
// ID_FIELD_HEIGHTTEXT = 8; |
|
442 |
featureType.add(NAME_FIELD_HEIGHTTEXT, |
|
443 |
DataTypes.DOUBLE).setDefaultValue( |
|
444 |
Double.valueOf(10)).getIndex(); |
|
445 |
|
|
446 |
// ID_FIELD_ROTATIONTEXT = 9; |
|
447 |
featureType.add(NAME_FIELD_ROTATIONTEXT, |
|
448 |
DataTypes.DOUBLE).setDefaultValue( |
|
449 |
Double.valueOf(0)).getIndex(); |
|
450 |
|
|
451 |
// FIXME: Parece que el DXF puede tener mas atributos opcionales. |
|
452 |
// Habria que ver de pillarlos ? |
|
453 |
|
|
454 |
return featureType; |
|
455 |
} |
|
380 | 456 |
public class Reader { |
381 | 457 |
private File file; |
382 | 458 |
private String fileName; |
... | ... | |
422 | 498 |
} |
423 | 499 |
|
424 | 500 |
taskStatus.message("_preparing_featureType"); |
425 |
EditableFeatureType featureType = store.createFeatureType(); |
|
426 |
|
|
427 |
featureType.setHasOID(true); |
|
428 |
|
|
429 |
ID_FIELD_ID = featureType.add(NAME_FIELD_ID, DataTypes.INT) |
|
430 |
.setDefaultValue(Integer.valueOf(0)) |
|
431 |
.getIndex(); |
|
432 |
|
|
433 |
EditableFeatureAttributeDescriptor attr = featureType.add( |
|
434 |
NAME_FIELD_GEOMETRY, DataTypes.GEOMETRY); |
|
435 |
attr.setSRS(this.projection); |
|
436 |
attr.setGeometryType(Geometry.TYPES.GEOMETRY); |
|
437 |
//If is a 3D file, set the geometry subtype |
|
438 |
if (featureMaker.isDxf3DFile() && headerManager.isWritedDxf3D()){ |
|
439 |
attr.setGeometrySubType(Geometry.SUBTYPES.GEOM3D); |
|
501 |
int geometrySubtype; |
|
502 |
if (featureMaker.isDxf3DFile() && headerManager.isWritedDxf3D()){ |
|
503 |
geometrySubtype = Geometry.SUBTYPES.GEOM3D; |
|
440 | 504 |
}else{ |
441 |
attr.setGeometrySubType(Geometry.SUBTYPES.GEOM2D);
|
|
505 |
geometrySubtype = Geometry.SUBTYPES.GEOM2D;
|
|
442 | 506 |
} |
443 |
ID_FIELD_GEOMETRY = attr.getIndex();
|
|
507 |
EditableFeatureType featureType = createFeatureType(this.projection, geometrySubtype);
|
|
444 | 508 |
|
445 |
featureType.setDefaultGeometryAttributeName(NAME_FIELD_GEOMETRY); |
|
446 |
|
|
447 |
// FIXME: Cual es el size y el valor por defecto para Entity ? |
|
448 |
ID_FIELD_ENTITY = featureType.add(NAME_FIELD_ENTITY, |
|
449 |
DataTypes.STRING, 100) |
|
450 |
.setDefaultValue("") |
|
451 |
.getIndex(); |
|
452 |
|
|
453 |
// FIXME: Cual es el size de Layer ? |
|
454 |
ID_FIELD_LAYER = featureType.add(NAME_FIELD_LAYER, |
|
455 |
DataTypes.STRING, 100) |
|
456 |
.setDefaultValue( |
|
457 |
"default").getIndex(); |
|
458 |
|
|
459 |
ID_FIELD_COLOR = featureType.add(NAME_FIELD_COLOR, |
|
460 |
DataTypes.INT) |
|
461 |
.setDefaultValue( |
|
462 |
Integer.valueOf(0)).getIndex(); |
|
463 |
|
|
464 |
ID_FIELD_ELEVATION = featureType.add(NAME_FIELD_ELEVATION, |
|
465 |
DataTypes.DOUBLE) |
|
466 |
.setDefaultValue( |
|
467 |
Double.valueOf(0)).getIndex(); |
|
468 |
|
|
469 |
ID_FIELD_THICKNESS = featureType.add(NAME_FIELD_THICKNESS, |
|
470 |
DataTypes.DOUBLE) |
|
471 |
.setDefaultValue( |
|
472 |
Double.valueOf(0)).getIndex(); |
|
473 |
|
|
474 |
// FIXME: Cual es el size de Text ? |
|
475 |
ID_FIELD_TEXT = featureType.add(NAME_FIELD_TEXT, |
|
476 |
DataTypes.STRING, 100) |
|
477 |
.setDefaultValue("") |
|
478 |
.getIndex(); |
|
479 |
|
|
480 |
ID_FIELD_HEIGHTTEXT = featureType.add(NAME_FIELD_HEIGHTTEXT, |
|
481 |
DataTypes.DOUBLE).setDefaultValue( |
|
482 |
Double.valueOf(10)).getIndex(); |
|
483 |
|
|
484 |
ID_FIELD_ROTATIONTEXT = featureType.add(NAME_FIELD_ROTATIONTEXT, |
|
485 |
DataTypes.DOUBLE).setDefaultValue( |
|
486 |
Double.valueOf(0)).getIndex(); |
|
487 |
|
|
488 |
|
|
489 |
|
|
490 |
// FIXME: Parece que el DXF puede tener mas atributos opcionales. |
|
491 |
// Habria que ver de pillarlos ? |
|
492 |
|
|
493 | 509 |
types = new ArrayList(); |
494 | 510 |
types.add(featureType); |
495 | 511 |
|
branches/v2_0_0_prep/libraries/libFMap_dalfile/src/org/gvsig/fmap/dal/store/dgn/DGNStoreProviderFactory.java | ||
---|---|---|
6 | 6 |
import org.gvsig.fmap.dal.DataStoreProvider; |
7 | 7 |
import org.gvsig.fmap.dal.exception.InitializeException; |
8 | 8 |
import org.gvsig.fmap.dal.feature.FeatureStoreProviderFactory; |
9 |
import org.gvsig.fmap.dal.spi.AbstractDataStoreProviderFactory;
|
|
9 |
import org.gvsig.fmap.dal.feature.spi.AbstractFeatureStoreProviderFactory;
|
|
10 | 10 |
import org.gvsig.fmap.dal.spi.DataStoreProviderServices; |
11 | 11 |
import org.gvsig.tools.dynobject.DynObject; |
12 | 12 |
|
13 |
public class DGNStoreProviderFactory extends AbstractDataStoreProviderFactory implements FeatureStoreProviderFactory{
|
|
13 |
public class DGNStoreProviderFactory extends AbstractFeatureStoreProviderFactory implements FeatureStoreProviderFactory{
|
|
14 | 14 |
|
15 | 15 |
protected DGNStoreProviderFactory(String name, String description) { |
16 | 16 |
super(name, description); |
branches/v2_0_0_prep/libraries/libFMap_dalfile/src/org/gvsig/fmap/dal/store/shp/SHPStoreProviderFactory.java | ||
---|---|---|
6 | 6 |
import org.gvsig.fmap.dal.DataStoreProvider; |
7 | 7 |
import org.gvsig.fmap.dal.exception.InitializeException; |
8 | 8 |
import org.gvsig.fmap.dal.feature.FeatureStoreProviderFactory; |
9 |
import org.gvsig.fmap.dal.spi.AbstractDataStoreProviderFactory;
|
|
9 |
import org.gvsig.fmap.dal.feature.spi.AbstractFeatureStoreProviderFactory;
|
|
10 | 10 |
import org.gvsig.fmap.dal.spi.DataStoreProviderServices; |
11 | 11 |
import org.gvsig.tools.dynobject.DynObject; |
12 | 12 |
|
13 |
public class SHPStoreProviderFactory extends AbstractDataStoreProviderFactory implements FeatureStoreProviderFactory{
|
|
13 |
public class SHPStoreProviderFactory extends AbstractFeatureStoreProviderFactory implements FeatureStoreProviderFactory{
|
|
14 | 14 |
|
15 | 15 |
protected SHPStoreProviderFactory(String name, String description) { |
16 | 16 |
super(name, description); |
branches/v2_0_0_prep/libraries/org.gvsig.newlayer/org.gvsig.newlayer.lib/org.gvsig.newlayer.lib.impl/src/main/java/org/gvsig/newlayer/impl/FeatureTypePanel.java | ||
---|---|---|
35 | 35 |
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor; |
36 | 36 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
37 | 37 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
38 |
import org.gvsig.fmap.dal.feature.FeatureStoreProviderFactory; |
|
38 | 39 |
import org.gvsig.fmap.geom.DataTypes; |
39 | 40 |
import org.gvsig.fmap.geom.Geometry; |
40 | 41 |
import org.gvsig.gui.beans.wizard.panel.NotContinueWizardException; |
... | ... | |
142 | 143 |
.getFeatureType(); |
143 | 144 |
if (featureType != null) { |
144 | 145 |
int row = 0; |
146 |
tm.setRowCount(featureType.size()); |
|
145 | 147 |
Iterator it = featureType.iterator(); |
146 | 148 |
while (it.hasNext()) { |
147 | 149 |
FeatureAttributeDescriptor descriptor = (FeatureAttributeDescriptor) it |
... | ... | |
154 | 156 |
tm.setValueAt(descriptor.getSRS(), row, 5); |
155 | 157 |
tm.setValueAt(descriptor.isPrimaryKey(), row, 6); |
156 | 158 |
tm.setValueAt(descriptor.isMandatory(), row, 7); |
159 |
row++; |
|
157 | 160 |
} |
158 | 161 |
} |
159 | 162 |
|
160 | 163 |
} |
164 |
jTable.setEnabled(allowEditableFeatureType()); |
|
161 | 165 |
return jTable; |
162 | 166 |
} |
163 | 167 |
|
... | ... | |
297 | 301 |
}); |
298 | 302 |
|
299 | 303 |
} |
304 |
jButtonAddField.setEnabled(allowEditableFeatureType()); |
|
300 | 305 |
return jButtonAddField; |
301 | 306 |
} |
307 |
|
|
308 |
private boolean allowEditableFeatureType(){ |
|
309 |
NewLayerService service = this.wizard.getService(); |
|
310 |
DataManager dataManager = DALLocator.getDataManager(); |
|
311 |
FeatureStoreProviderFactory factory = (FeatureStoreProviderFactory) dataManager.getStoreProviderFactory(service.getStoreName()); |
|
312 |
if (factory.allowEditableFeatureType()==FeatureStoreProviderFactory.NO) { |
|
313 |
return false; |
|
314 |
} |
|
315 |
return true; |
|
316 |
} |
|
302 | 317 |
|
303 | 318 |
private class ComboItemDataType { |
304 | 319 |
private DataType dataType; |
... | ... | |
582 | 597 |
} |
583 | 598 |
}); |
584 | 599 |
} |
600 |
jButtonDeleteField.setEnabled(allowEditableFeatureType()); |
|
585 | 601 |
return jButtonDeleteField; |
586 | 602 |
} |
587 | 603 |
|
... | ... | |
590 | 606 |
} |
591 | 607 |
|
592 | 608 |
public void nextPanel() throws NotContinueWizardException { |
593 |
fillFeatureType(); |
|
609 |
if (allowEditableFeatureType()){ |
|
610 |
fillFeatureType(); |
|
611 |
} |
|
594 | 612 |
} |
595 | 613 |
|
596 | 614 |
private void fillFeatureType() { |
Also available in: Unified diff