Revision 4937 trunk/extensions/extCAD/src/com/iver/cit/gvsig/SaveAs.java
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