Revision 38533 branches/v2_0_0_prep/libraries/libFMap_dalfile/src/org/gvsig/fmap/dal/store/shp/SHPStoreProviderFactory.java

View differences:

SHPStoreProviderFactory.java
1 1
package org.gvsig.fmap.dal.store.shp;
2 2

  
3
import java.util.ArrayList;
3 4
import java.util.List;
4 5

  
6
import org.slf4j.Logger;
7
import org.slf4j.LoggerFactory;
8

  
9
import org.gvsig.fmap.dal.DALLocator;
10
import org.gvsig.fmap.dal.DataManager;
5 11
import org.gvsig.fmap.dal.DataParameters;
6 12
import org.gvsig.fmap.dal.DataStoreProvider;
13
import org.gvsig.fmap.dal.DataStoreProviderFactory;
14
import org.gvsig.fmap.dal.DataTypes;
7 15
import org.gvsig.fmap.dal.exception.InitializeException;
16
import org.gvsig.fmap.dal.feature.EditableFeature;
17
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
18
import org.gvsig.fmap.dal.feature.EditableFeatureType;
8 19
import org.gvsig.fmap.dal.feature.FeatureStoreProviderFactory;
20
import org.gvsig.fmap.dal.feature.FeatureType;
9 21
import org.gvsig.fmap.dal.feature.spi.AbstractFeatureStoreProviderFactory;
10 22
import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
23
import org.gvsig.fmap.geom.Geometry;
24
import org.gvsig.fmap.geom.GeometryLocator;
25
import org.gvsig.fmap.geom.type.GeometryType;
26
import org.gvsig.tools.ToolsLocator;
27
import org.gvsig.tools.dataTypes.DataTypesManager;
11 28
import org.gvsig.tools.dynobject.DynObject;
12 29

  
13 30
public class SHPStoreProviderFactory extends AbstractFeatureStoreProviderFactory implements FeatureStoreProviderFactory{
14 31

  
32
    private static final Logger logger = LoggerFactory.getLogger(SHPStoreProviderFactory.class);
33
    
34
    public static final String DEFAULT_GEOMETRY_FIELD_NAME = "GEOMETRY";
35
    public static final int DEFAULT_GEOMETRY_TYPE = Geometry.TYPES.SURFACE;
36
    public static final int DEFAULT_GEOMETRY_SUBTYPE = Geometry.SUBTYPES.GEOM2D;
37
    
15 38
	protected SHPStoreProviderFactory(String name, String description) {
16 39
		super(name, description);
17 40
	}
......
50 73
		return YES;
51 74
	}
52 75

  
53
	public List getSupportedGeometries() {
54
		return null;
55
	}
56

  
57 76
	public int allowMultipleGeometryTypes() {
58 77
		return NO;
59 78
	}
60 79
	
80
	
81
    public int allowEditableFeatureType() {
82
        return YES;
83
    }
84
    
85
    public List getSupportedDataTypes() {
86
        
87
        DataTypesManager manager = ToolsLocator.getDataTypesManager();
88

  
89
        List resp = new ArrayList<Integer>();
90
        resp.add(manager.get(DataTypes.STRING));
91
        resp.add(manager.get(DataTypes.INT));
92
        resp.add(manager.get(DataTypes.FLOAT));
93
        resp.add(manager.get(DataTypes.DATE));
94
        resp.add(manager.get(DataTypes.GEOMETRY));
95
        return resp;
96
    }
97
    
98
    public List getSupportedGeometryTypesSubtypes() {
99
        // null means all supported
100
        int[] item = null;
101
        List resp = new ArrayList<int[]>();
102
        // ====================================== 2d
103
        item = new int[2];
104
        item[0] = Geometry.TYPES.POINT;
105
        item[1] = Geometry.SUBTYPES.GEOM2D;
106
        resp.add(item);
107
        
108
        item = new int[2];
109
        item[0] = Geometry.TYPES.CURVE;
110
        item[1] = Geometry.SUBTYPES.GEOM2D;
111
        resp.add(item);
112
        
113
        item = new int[2];
114
        item[0] = Geometry.TYPES.SURFACE;
115
        item[1] = Geometry.SUBTYPES.GEOM2D;
116
        resp.add(item);
117
        
118
        item = new int[2];
119
        item[0] = Geometry.TYPES.MULTIPOINT;
120
        item[1] = Geometry.SUBTYPES.GEOM2D;
121
        resp.add(item);
122
        // ====================================== 3d
123
        item = new int[2];
124
        item[0] = Geometry.TYPES.POINT;
125
        item[1] = Geometry.SUBTYPES.GEOM3D;
126
        resp.add(item);
127
        
128
        item = new int[2];
129
        item[0] = Geometry.TYPES.CURVE;
130
        item[1] = Geometry.SUBTYPES.GEOM3D;
131
        resp.add(item);
132
        
133
        item = new int[2];
134
        item[0] = Geometry.TYPES.SURFACE;
135
        item[1] = Geometry.SUBTYPES.GEOM3D;
136
        resp.add(item);
137
        
138
        item = new int[2];
139
        item[0] = Geometry.TYPES.MULTIPOINT;
140
        item[1] = Geometry.SUBTYPES.GEOM3D;
141
        resp.add(item);
142
        // ====================================== 2dm
143
        item = new int[2];
144
        item[0] = Geometry.TYPES.POINT;
145
        item[1] = Geometry.SUBTYPES.GEOM2DM;
146
        resp.add(item);
147
        
148
        item = new int[2];
149
        item[0] = Geometry.TYPES.CURVE;
150
        item[1] = Geometry.SUBTYPES.GEOM2DM;
151
        resp.add(item);
152
        
153
        item = new int[2];
154
        item[0] = Geometry.TYPES.SURFACE;
155
        item[1] = Geometry.SUBTYPES.GEOM2DM;
156
        resp.add(item);
157
        
158
        item = new int[2];
159
        item[0] = Geometry.TYPES.MULTIPOINT;
160
        item[1] = Geometry.SUBTYPES.GEOM2DM;
161
        resp.add(item);
162
        // ======================================
163
        
164
        return resp;
165
    }
166
    
167
    public boolean allowsMandatoryAttributes() {
168
        return false;
169
    }
170
    
171
    public boolean allowsPrimaryKeyAttributes() {
172
        return false;
173
    }
174

  
175
    /**
176
     * @return  dummy feature type. Must be overridden by subclasses
177
     * 
178
     */
179
    public FeatureType createDefaultFeatureType() {
180
        DataManager dm = DALLocator.getDataManager();
181
        EditableFeatureType eft = dm.createFeatureType();
182
        
183
        EditableFeatureAttributeDescriptor efatd =
184
            eft.add(DEFAULT_GEOMETRY_FIELD_NAME, DataTypes.GEOMETRY);
185

  
186
        GeometryType gt = null;
187
        try {
188
            gt = GeometryLocator.getGeometryManager().getGeometryType(
189
                DEFAULT_GEOMETRY_TYPE,
190
                DEFAULT_GEOMETRY_SUBTYPE);
191
            efatd.setGeometryType(gt);
192
        } catch (Exception ex) {
193
            logger.info("Error while setting geom type: " + ex.getMessage());
194
            logger.info("Trying deprecated way...");
195
            efatd.setGeometryType(DEFAULT_GEOMETRY_TYPE);
196
            efatd.setGeometrySubType(DEFAULT_GEOMETRY_SUBTYPE);
197
        }
198
        eft.setDefaultGeometryAttributeName(DEFAULT_GEOMETRY_FIELD_NAME);
199
        return eft.getNotEditableCopy();
200
    }
201

  
202
	
61 203
}

Also available in: Unified diff