Revision 4937 trunk/extensions/extCAD/src/com/iver/cit/gvsig/SaveAs.java

View differences:

SaveAs.java
27 27
import com.iver.cit.gvsig.fmap.edition.DefaultRowEdited;
28 28
import com.iver.cit.gvsig.fmap.edition.EditionException;
29 29
import com.iver.cit.gvsig.fmap.edition.IWriter;
30
import com.iver.cit.gvsig.fmap.edition.writers.dxf.DxfFieldsMapping;
31
import com.iver.cit.gvsig.fmap.edition.writers.dxf.DxfWriter;
30 32
import com.iver.cit.gvsig.fmap.edition.writers.shp.ShpWriter;
31 33
import com.iver.cit.gvsig.fmap.layers.FBitSet;
32 34
import com.iver.cit.gvsig.fmap.layers.FLayer;
......
107 109
			dbLayerDef.setCatalogName(cs.getDb());
108 110
			dbLayerDef.setTableName(tableName);
109 111
			dbLayerDef.setShapeType(layer.getShapeType());
110
		    SelectableDataSource sds = layer.getRecordset();
111
		    FieldDescription[] fieldsDescrip = sds.getFieldsDescription();
112
			SelectableDataSource sds = layer.getRecordset();
113
			FieldDescription[] fieldsDescrip = sds.getFieldsDescription();
112 114
			dbLayerDef.setFieldsDesc(fieldsDescrip);
113 115
			dbLayerDef.setFieldGeometry("the_geom");
114 116
			dbLayerDef.setFieldID("gid");
......
119 121
			dbLayerDef.setConnection(conex);
120 122

  
121 123
			PostGISWriter writer = new PostGISWriter(); // (PostGISWriter)LayerFactory.getWM().getWriter("PostGIS
122
														// Writer");
124
			// Writer");
123 125
			writer.setWriteAll(true);
124 126
			writer.setCreateTable(true);
125 127
			writer.initialize(dbLayerDef);
......
142 144
	}
143 145

  
144 146
	/**
145
	 * @param layer FLyrVect to obtain features. If selection, only selected features will be precessed.
146
	 * @param writer (Must be already initialized)
147
	 * @param layer
148
	 *            FLyrVect to obtain features. If selection, only selected
149
	 *            features will be precessed.
150
	 * @param writer
151
	 *            (Must be already initialized)
147 152
	 * @throws EditionException
148 153
	 * @throws DriverException
149 154
	 * @throws DriverIOException
150
	 * @throws com.hardcode.gdbms.engine.data.driver.DriverException 
155
	 * @throws com.hardcode.gdbms.engine.data.driver.DriverException
151 156
	 */
152
	public void writeFeatures(FLyrVect layer, IWriter writer) throws EditionException, DriverException, DriverIOException, com.hardcode.gdbms.engine.data.driver.DriverException {
157
	public void writeFeatures(FLyrVect layer, IWriter writer)
158
			throws EditionException, DriverException, DriverIOException,
159
			com.hardcode.gdbms.engine.data.driver.DriverException {
153 160
		ReadableVectorial va = layer.getSource();
154 161
		SelectableDataSource sds = layer.getRecordset();
155
		
162

  
156 163
		// Creamos la tabla.
157 164
		writer.preProcess();
158 165

  
159 166
		int rowCount;
160
		FBitSet bitSet = layer.getRecordset().getSelection(); 
161
		if (bitSet.cardinality() == 0)
162
		{
167
		FBitSet bitSet = layer.getRecordset().getSelection();
168
		if (bitSet.cardinality() == 0) {
163 169
			rowCount = va.getShapeCount();
164 170
			for (int i = 0; i < rowCount; i++) {
165 171
				IGeometry geom = va.getShape(i);
166 172

  
167 173
				if (geom != null) {
168 174
					Value[] values = sds.getRow(i);
169
					IFeature feat = new DefaultFeature(geom, values, ""+i);
175
					IFeature feat = new DefaultFeature(geom, values, "" + i);
170 176
					DefaultRowEdited edRow = new DefaultRowEdited(feat,
171 177
							DefaultRowEdited.STATUS_ADDED, i);
172 178
					writer.process(edRow);
173 179
				}
174 180
			}
175
		}
176
		else
177
		{
178
			for(int i=bitSet.nextSetBit(0); i>=0; i=bitSet.nextSetBit(i+1)) {
181
		} else {
182
			for (int i = bitSet.nextSetBit(0); i >= 0; i = bitSet
183
					.nextSetBit(i + 1)) {
179 184
				IGeometry geom = va.getShape(i);
180 185

  
181 186
				if (geom != null) {
182 187
					Value[] values = sds.getRow(i);
183
					IFeature feat = new DefaultFeature(geom, values, ""+i);
188
					IFeature feat = new DefaultFeature(geom, values, "" + i);
184 189
					DefaultRowEdited edRow = new DefaultRowEdited(feat,
185 190
							DefaultRowEdited.STATUS_ADDED, i);
186 191

  
187 192
					writer.process(edRow);
188 193
				}
189 194
			}
190
			
195

  
191 196
		}
192 197

  
193 198
		writer.postProcess();
194 199
	}
195 200

  
196
	public void saveToDxf(FLyrVect lv) {
197
		// TODO Auto-generated method stub
198
		System.err.println("Not implemented yet");
201
	public void saveToDxf(FLyrVect layer) throws EditionException {
202
		try {
203
			JFileChooser jfc = new JFileChooser();
204
			SimpleFileFilter filterShp = new SimpleFileFilter("dxf",
205
					PluginServices.getText(this, "dxf_files"));
206
			jfc.setFileFilter(filterShp);
207
			if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION)
208
			{
209
				File newFile = jfc.getSelectedFile();
210
				String path = newFile.getAbsolutePath();
211
				if (!(path.toLowerCase().endsWith(".dxf"))) {
212
					path = path + ".dxf";
213
				}
214
				newFile = new File(path);
199 215

  
216
				DxfWriter writer = (DxfWriter) LayerFactory.getWM().getWriter(
217
						"DXF Writer");
218
				SHPLayerDefinition lyrDef = new SHPLayerDefinition();
219
				SelectableDataSource sds = layer.getRecordset();
220
				FieldDescription[] fieldsDescrip = sds.getFieldsDescription();
221
				lyrDef.setFieldsDesc(fieldsDescrip);
222
				lyrDef.setFile(newFile);
223
				lyrDef.setName(newFile.getName());
224
				lyrDef.setShapeType(layer.getShapeType());
225
				writer.setFile(newFile);
226
				writer.initialize(lyrDef);
227
				writer.setProjection(layer.getProjection());
228
				DxfFieldsMapping fieldsMapping = new DxfFieldsMapping();
229
				// TODO: Recuperar aqu? los campos del cuadro de di?logo.
230
				writer.setFieldMapping(fieldsMapping);
231

  
232
				writeFeatures(layer, writer);
233
			}
234

  
235
		} catch (DriverIOException e) {
236
			e.printStackTrace();
237
			throw new EditionException(e);
238
		} catch (DriverException e) {
239
			e.printStackTrace();
240
			throw new EditionException(e);
241
		} catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
242
			e.printStackTrace();
243
			throw new EditionException(e);
244
		}
245

  
200 246
	}
201 247

  
202 248
	public void saveToShp(FLyrVect layer) throws EditionException {
......
215 261

  
216 262
				ShpWriter writer = (ShpWriter) LayerFactory.getWM().getWriter(
217 263
						"Shape Writer");
218
    		    SHPLayerDefinition lyrDef = new SHPLayerDefinition();
219
    		    SelectableDataSource sds = layer.getRecordset();
220
    		    FieldDescription[] fieldsDescrip = sds.getFieldsDescription();
221
    		    lyrDef.setFieldsDesc(fieldsDescrip);
222
    		    lyrDef.setFile(newFile);
223
    		    lyrDef.setName(newFile.getName());
224
    		    lyrDef.setShapeType(layer.getShapeType());
225
    			writer.setFile(newFile);
226
    			writer.initialize(lyrDef);
227
				
264
				SHPLayerDefinition lyrDef = new SHPLayerDefinition();
265
				SelectableDataSource sds = layer.getRecordset();
266
				FieldDescription[] fieldsDescrip = sds.getFieldsDescription();
267
				lyrDef.setFieldsDesc(fieldsDescrip);
268
				lyrDef.setFile(newFile);
269
				lyrDef.setName(newFile.getName());
270
				lyrDef.setShapeType(layer.getShapeType());
271
				writer.setFile(newFile);
272
				writer.initialize(lyrDef);
273

  
228 274
				writeFeatures(layer, writer);
229 275

  
230 276
			}

Also available in: Unified diff