Revision 5389 trunk/extensions/extCAD/src/com/iver/cit/gvsig/writers/WriterGT2.java

View differences:

WriterGT2.java
1 1
/**
2
 * 
2
 *
3 3
 */
4 4
package com.iver.cit.gvsig.writers;
5 5

  
......
38 38

  
39 39
/**
40 40
 * @author fjp
41
 * 
41
 *
42 42
 * Example of using a Geotools featureStore to write features
43 43
 * Example of use: Inside the extension, open a dataStore and
44 44
 * get the featureStore. Then create this class with it.
......
82 82
    }
83 83

  
84 84
	public static FeatureType getFeatureType(FLyrVect layer, String geomField, String featName) throws DriverException, com.iver.cit.gvsig.fmap.DriverException, FactoryConfigurationError, SchemaException {
85
		
85

  
86 86
		Class geomType = findBestGeometryClass(layer.getShapeType());
87 87
		// geomType = Geometry.class;
88 88
		AttributeType geom = AttributeTypeFactory.newAttributeType(geomField, geomType);
......
93 93
		{
94 94
			att[i] = AttributeTypeFactory.newAttributeType(
95 95
					layer.getRecordset().getFieldName(i-1),
96
					getClassBySqlTYPE(layer.getRecordset().getFieldType(i-1))); 
96
					getClassBySqlTYPE(layer.getRecordset().getFieldType(i-1)));
97 97
		}
98 98
		FeatureType featType = FeatureTypeBuilder.newFeatureType(att,featName);
99 99
		return featType;
100 100
	}
101
	
101

  
102 102
	  public static final Class findBestGeometryClass(int layerType) {
103 103
		    Class best = Geometry.class;
104 104
		    switch (layerType)
105 105
		    {
106
		    case FShape.LINE:		    	
106
		    case FShape.LINE:
107 107
		      best = MultiLineString.class;
108 108
		      break;
109 109
		    case FShape.MULTIPOINT:
......
117 117
		      break;
118 118
		    case FShape.MULTI:
119 119
			      best = Geometry.class;
120
			      break;		      
120
			      break;
121 121
		    default:
122 122
		      throw new RuntimeException("Unknown gvSigShapeType->GeometryClass : " + layerType);
123 123
		    }
124 124
		    return best;
125 125
		  }
126
	
127
	
126

  
127

  
128 128
	public WriterGT2(FeatureStore featureStore, boolean writeAllFeatures) throws IOException
129 129
	{
130 130
		this.featStore = featureStore;
131 131
		this.bWriteAll = writeAllFeatures;
132 132
	}
133
	
133

  
134 134
	/* (non-Javadoc)
135 135
	 * @see com.iver.cit.gvsig.fmap.edition.IWriter#preProcess()
136 136
	 */
......
139 139
			types = featStore.getSchema().getAttributeTypes();
140 140
			t = new DefaultTransaction("handle");
141 141
			featStore.setTransaction(t);
142
    	  
142

  
143 143
			t.addAuthorization("handle");  // provide authoriztion
144
			
145
			
144

  
145

  
146 146
		} catch (Exception e) {
147 147
			e.printStackTrace();
148 148
			throw new EditionException(e);
......
155 155
	 * @see com.iver.cit.gvsig.fmap.edition.IWriter#process(com.iver.cit.gvsig.fmap.edition.IRowEdited)
156 156
	 */
157 157
	public void process(IRowEdited row) throws EditionException {
158
		
158

  
159 159
		IFeature feat = (IFeature) row.getLinkedRow();
160 160
		// FeatureType featType = featStore.getSchema();
161 161
		// TODO: OJO CON EL ORDEN DE LOS CAMPOS, QUE NO ES EL MISMO
......
164 164
		for (int i=1; i < types.length; i++)
165 165
			values[i] = feat.getAttribute(i-1);
166 166

  
167
		Filter theFilter = filterFactory.createFidFilter(feat.getID()); 
167
		Filter theFilter = filterFactory.createFidFilter(feat.getID());
168 168
        try {
169 169
        	// System.out.println("Escribiendo numReg=" + numReg + " con STATUS=" + row.getStatus());
170 170
        	switch (row.getStatus())
171 171
        	{
172
        		case IRowEdited.STATUS_ADDED:        			
172
        		case IRowEdited.STATUS_ADDED:
173 173
        			Feature featGT2 = featStore.getSchema().create(values);
174 174
        			FeatureReader reader = DataUtilities.reader(
175 175
        					new Feature[] {featGT2});
176 176
        			featStore.addFeatures(reader);
177 177
        			break;
178 178
        		case IRowEdited.STATUS_MODIFIED:
179
        			featStore.modifyFeatures(types, values, theFilter);	
179
        			featStore.modifyFeatures(types, values, theFilter);
180 180
        			break;
181 181
        		case IRowEdited.STATUS_ORIGINAL:
182 182
        			if (bWriteAll)
......
185 185
            			reader = DataUtilities.reader(
186 186
            					new Feature[] {featGT2});
187 187
            			featStore.addFeatures(reader);
188
        			}        				
188
        			}
189 189
        			break;
190 190
        		case IRowEdited.STATUS_DELETED:
191
            		featStore.removeFeatures(theFilter);        			
191
            		featStore.removeFeatures(theFilter);
192 192
        			break;
193 193
        	}
194
        		
195 194

  
195

  
196 196
			numReg++;
197 197
		} catch (IOException e) {
198 198
			e.printStackTrace();
......
201 201
			e.printStackTrace();
202 202
			throw new EditionException(e);
203 203
		}
204
			
205
		
206
			
207 204

  
205

  
206

  
207

  
208 208
	}
209 209

  
210 210
	/* (non-Javadoc)
......
250 250
		case FShape.ARC:
251 251
			return false;
252 252
		case FShape.ELLIPSE:
253
			return false;			
253
			return false;
254 254
		case FShape.MULTIPOINT:
255
			return true;			
255
			return true;
256 256
		case FShape.TEXT:
257
			return false;						
257
			return false;
258 258
		}
259 259
		return false;
260 260
	}
......
263 263
		switch (sqlType)
264 264
		{
265 265
		case Types.DOUBLE:
266
		case Types.FLOAT: 
266
		case Types.FLOAT:
267 267
		case Types.INTEGER:
268 268
		case Types.BIGINT:
269 269
			return true;
......
271 271
			return true;
272 272
		case Types.BIT:
273 273
		case Types.BOOLEAN:
274
			return true;			
274
			return true;
275 275
		case Types.VARCHAR:
276
		case Types.CHAR: 
276
		case Types.CHAR:
277 277
		case Types.LONGVARCHAR:
278 278
			return true; // TODO: Revisar esto, porque no creo que admita campos muy grandes
279 279

  
280 280
		}
281
		
281

  
282 282
		return false;
283 283
	}
284
	
284

  
285
	public void setFlatness(double flatness) {
286
		// TODO Auto-generated method stub
287

  
288
	}
289

  
285 290
}

Also available in: Unified diff