Revision 43936
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.lib/org.gvsig.exportto.lib.api/src/main/java/org/gvsig/export/ExportParametersGeometry.java | ||
---|---|---|
55 | 55 |
|
56 | 56 |
public void setTryToFixGeometry(boolean tryToFixGeometry); |
57 | 57 |
|
58 |
public String getGeometryFieldName(); |
|
58 |
public String getSourceGeometryFieldName();
|
|
59 | 59 |
|
60 |
public void setGeometryFieldName(String geometryFieldName); |
|
60 |
public void setSourceGeometryFieldName(String geometryFieldName);
|
|
61 | 61 |
|
62 |
public GeometryType getGeometryType(); |
|
62 |
public GeometryType getTargetGeometryType();
|
|
63 | 63 |
|
64 |
public int getGeometryTypeAsInt(); |
|
64 |
public int getTargetGeometryTypeAsInt();
|
|
65 | 65 |
|
66 |
public int getGeometrySubtype(); |
|
66 |
public int getTargetGeometrySubtype();
|
|
67 | 67 |
|
68 |
public void setGeometryType(GeometryType type); |
|
68 |
public void setTargetGeometryType(GeometryType type);
|
|
69 | 69 |
|
70 |
public void setGeometryType(int type); |
|
70 |
public void setTargetGeometryType(int type);
|
|
71 | 71 |
|
72 |
public void setGeometrySubtype(int subtype); |
|
72 |
public void setTargetGeometrySubtype(int subtype);
|
|
73 | 73 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.lib/org.gvsig.exportto.lib.api/src/main/java/org/gvsig/export/spi/AbstractExportParametersGeometry.java | ||
---|---|---|
121 | 121 |
} |
122 | 122 |
|
123 | 123 |
@Override |
124 |
public String getGeometryFieldName() { |
|
124 |
public String getSourceGeometryFieldName() {
|
|
125 | 125 |
return this.geometryFieldName; |
126 | 126 |
} |
127 | 127 |
|
128 | 128 |
@Override |
129 |
public void setGeometryFieldName(String geometryFieldName) { |
|
129 |
public void setSourceGeometryFieldName(String geometryFieldName) {
|
|
130 | 130 |
this.geometryFieldName = geometryFieldName; |
131 | 131 |
} |
132 | 132 |
|
133 | 133 |
@Override |
134 |
public int getGeometryTypeAsInt() { |
|
134 |
public int getTargetGeometryTypeAsInt() {
|
|
135 | 135 |
return geometryType; |
136 | 136 |
} |
137 | 137 |
|
138 | 138 |
@Override |
139 |
public int getGeometrySubtype() { |
|
139 |
public int getTargetGeometrySubtype() {
|
|
140 | 140 |
return geometrySubtype; |
141 | 141 |
} |
142 | 142 |
|
143 | 143 |
@Override |
144 |
public void setGeometryType(int geometryType) { |
|
144 |
public void setTargetGeometryType(int geometryType) {
|
|
145 | 145 |
this.geometryType = geometryType; |
146 | 146 |
} |
147 | 147 |
|
148 | 148 |
@Override |
149 |
public void setGeometrySubtype(int subtype) { |
|
149 |
public void setTargetGeometrySubtype(int subtype) {
|
|
150 | 150 |
this.geometrySubtype = subtype; |
151 | 151 |
} |
152 | 152 |
|
153 | 153 |
@Override |
154 |
public void setGeometryType(GeometryType type) { |
|
154 |
public void setTargetGeometryType(GeometryType type) {
|
|
155 | 155 |
this.geometryType = type.getType(); |
156 | 156 |
this.geometrySubtype = type.getSubType(); |
157 | 157 |
} |
158 | 158 |
|
159 | 159 |
@Override |
160 |
public GeometryType getGeometryType() { |
|
160 |
public GeometryType getTargetGeometryType() {
|
|
161 | 161 |
try { |
162 | 162 |
GeometryManager geomManager = GeometryLocator.getGeometryManager(); |
163 | 163 |
GeometryType type = geomManager.getGeometryType( |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.lib/org.gvsig.exportto.lib.api/src/main/java/org/gvsig/export/spi/AbstractExportService.java | ||
---|---|---|
5 | 5 |
import java.util.HashSet; |
6 | 6 |
import java.util.List; |
7 | 7 |
import java.util.Set; |
8 |
import org.cresques.cts.ICoordTrans; |
|
9 |
import org.cresques.cts.IProjection; |
|
10 | 8 |
import org.gvsig.export.ExportException; |
11 | 9 |
import org.gvsig.export.ExportLocator; |
12 | 10 |
import org.gvsig.export.ExportParameters; |
11 |
import org.gvsig.export.ExportParametersGeometry; |
|
12 |
import org.gvsig.export.spi.ExportServiceManager.FixGeometryStatus; |
|
13 | 13 |
import org.gvsig.fmap.dal.DALLocator; |
14 | 14 |
import org.gvsig.fmap.dal.DataManager; |
15 | 15 |
import org.gvsig.fmap.dal.DataServerExplorer; |
... | ... | |
21 | 21 |
import org.gvsig.fmap.dal.feature.FeatureSet; |
22 | 22 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
23 | 23 |
import org.gvsig.fmap.dal.feature.FeatureType; |
24 |
import org.gvsig.fmap.geom.Geometry; |
|
25 | 24 |
import org.gvsig.tools.ToolsLocator; |
26 | 25 |
import org.gvsig.tools.dispose.DisposableIterator; |
27 | 26 |
import org.gvsig.tools.dispose.DisposeUtils; |
... | ... | |
124 | 123 |
|
125 | 124 |
abstract protected OpenDataStoreParameters createTargetOpenStoreParameters() throws ExportException; |
126 | 125 |
|
126 |
|
|
127 |
protected static class InvalidGeometryException extends ExportException { |
|
128 |
|
|
129 |
public InvalidGeometryException(Feature feature, String checkMessage) { |
|
130 |
super(checkMessage, feature); |
|
131 |
} |
|
132 |
} |
|
133 |
|
|
127 | 134 |
@Override |
128 | 135 |
public void export(FeatureSet featureSet) throws ExportException { |
129 | 136 |
DataServerExplorer explorer = createServerExplorer(); |
... | ... | |
135 | 142 |
|
136 | 143 |
DisposableIterator it = null; |
137 | 144 |
FeatureStore target = null; |
138 |
EditableFeature newfeature = null;
|
|
145 |
EditableFeature targetFeature = null;
|
|
139 | 146 |
try { |
140 | 147 |
this.getTaskStatus().setRangeOfValues(0, featureSet.getSize()); |
141 | 148 |
|
... | ... | |
144 | 151 |
dataManager.newStore(explorerName, providerName, newStoreParameters, true); |
145 | 152 |
target = (FeatureStore) dataManager.openStore(providerName, openStoreParameters); |
146 | 153 |
|
147 |
FeatureType targetType = target.getDefaultFeatureType(); |
|
154 |
FeatureType theTargetFeatureType = target.getDefaultFeatureType(); |
|
155 |
FeatureType theSourceFeatureType = featureSet.getDefaultFeatureType(); |
|
148 | 156 |
|
157 |
ExportGeometryHelper geomHelper = null; |
|
158 |
if( this.getParameters() instanceof ExportParametersGeometry ) { |
|
159 |
geomHelper = ExportLocator.getServiceManager().createGeometryHelper( |
|
160 |
(ExportParametersGeometry) this.getParameters(), |
|
161 |
theTargetFeatureType, |
|
162 |
theSourceFeatureType |
|
163 |
); |
|
164 |
if( !geomHelper.canProcessGeometry() ) { |
|
165 |
geomHelper = null; |
|
166 |
} |
|
167 |
} |
|
168 |
// ============================================ |
|
169 |
|
|
149 | 170 |
target.edit(FeatureStore.MODE_APPEND); |
150 | 171 |
it = featureSet.fastIterator(); |
151 | 172 |
|
152 |
IProjection targetProjection; |
|
153 |
FeatureAttributeDescriptor defaultGeom = target.getDefaultFeatureType().getDefaultGeometryAttribute(); |
|
154 |
if (defaultGeom!=null) { |
|
155 |
targetProjection = defaultGeom.getSRS(); |
|
156 |
} else { |
|
157 |
targetProjection = null; |
|
158 |
} |
|
159 |
|
|
160 | 173 |
long featureCount = 0; |
161 | 174 |
while (it.hasNext()) { |
162 |
Feature feature = (Feature) it.next(); |
|
163 |
newfeature = target.createNewFeature(targetType, true); |
|
164 |
copyValues(feature, newfeature); |
|
165 |
// ================================================ |
|
166 |
// Reprojection stuff |
|
167 |
Geometry reproj_geom; |
|
168 |
IProjection sourceProjection = feature.getDefaultSRS(); |
|
175 |
this.getTaskStatus().setCurValue(featureCount); |
|
169 | 176 |
|
170 |
ICoordTrans coord_trans;
|
|
171 |
// this comparison is perhaps too preventive
|
|
172 |
// we could have two instances of same projection
|
|
173 |
// so we would do more computations than needed |
|
174 |
if (sourceProjection != null
|
|
175 |
&& targetProjection != null
|
|
176 |
&& sourceProjection != targetProjection) {
|
|
177 |
|
|
178 |
coord_trans = sourceProjection.getCT(targetProjection);
|
|
179 |
reproj_geom = feature.getDefaultGeometry();
|
|
180 |
reproj_geom = reproj_geom.cloneGeometry();
|
|
181 |
reproj_geom.reProject(coord_trans);
|
|
182 |
newfeature.setDefaultGeometry(reproj_geom);
|
|
177 |
Feature sourceFeature = (Feature) it.next();
|
|
178 |
targetFeature = target.createNewFeature(theTargetFeatureType, true);
|
|
179 |
copyValues(sourceFeature, targetFeature);
|
|
180 |
|
|
181 |
if( geomHelper!=null ) {
|
|
182 |
switch(geomHelper.copyGeometry(sourceFeature,targetFeature)) {
|
|
183 |
case FixGeometryStatus.STATE_OK:
|
|
184 |
break; |
|
185 |
case FixGeometryStatus.STATE_SKIP:
|
|
186 |
continue;
|
|
187 |
case FixGeometryStatus.STATE_ABORT:
|
|
188 |
throw new InvalidGeometryException(targetFeature, geomHelper.getLastErrorMessage());
|
|
189 |
}
|
|
183 | 190 |
} |
184 |
// ================================================ |
|
191 |
|
|
192 |
target.insert(targetFeature); |
|
185 | 193 |
|
186 |
target.insert(newfeature); |
|
187 |
|
|
188 | 194 |
featureCount++; |
189 |
this.getTaskStatus().setCurValue(featureCount); |
|
190 | 195 |
|
191 | 196 |
if (this.getTaskStatus().isCancellationRequested()) { |
192 | 197 |
return; |
... | ... | |
198 | 203 |
fireFinishedListener(); |
199 | 204 |
} catch (Exception e) { |
200 | 205 |
fireCancelledListeners(); |
201 |
throw new ExportException(e, newfeature);
|
|
206 |
throw new ExportException(e, targetFeature);
|
|
202 | 207 |
} finally { |
203 | 208 |
DisposeUtils.dispose(it); |
204 | 209 |
DisposeUtils.dispose(featureSet); |
205 | 210 |
DisposeUtils.dispose(target); |
206 |
} |
|
207 | 211 |
} |
212 |
} |
|
208 | 213 |
|
209 | 214 |
protected void copyValues(Feature source, EditableFeature target) { |
210 | 215 |
FeatureType sourceType= source.getType(); |
211 | 216 |
FeatureType targetType = target.getType(); |
212 |
for( FeatureAttributeDescriptor targetAttr : targetType) {
|
|
217 |
for( FeatureAttributeDescriptor targetAttr: targetType) { |
|
213 | 218 |
String targetAttrName = targetAttr.getName(); |
214 | 219 |
String sourceAttrName = getAttributeNamesTranslator().getSourceName(targetAttrName); |
215 | 220 |
FeatureAttributeDescriptor sourceAttr = sourceType.getAttributeDescriptor(sourceAttrName); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.lib/org.gvsig.exportto.lib.api/src/main/java/org/gvsig/export/spi/ExportGeometryHelper.java | ||
---|---|---|
1 |
package org.gvsig.export.spi; |
|
2 |
|
|
3 |
import org.gvsig.fmap.dal.feature.EditableFeature; |
|
4 |
import org.gvsig.fmap.dal.feature.Feature; |
|
5 |
|
|
6 |
/** |
|
7 |
* |
|
8 |
* @author jjdelcerro |
|
9 |
*/ |
|
10 |
public interface ExportGeometryHelper { |
|
11 |
|
|
12 |
boolean canProcessGeometry(); |
|
13 |
|
|
14 |
int copyGeometry(Feature sourceFeature, EditableFeature targetFeature); |
|
15 |
|
|
16 |
String getLastErrorMessage(); |
|
17 |
|
|
18 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.lib/org.gvsig.exportto.lib.api/src/main/java/org/gvsig/export/spi/ExportServiceManager.java | ||
---|---|---|
48 | 48 |
ICoordTrans coord_trans, |
49 | 49 |
Geometry geometry |
50 | 50 |
); |
51 |
|
|
52 |
public ExportGeometryHelper createGeometryHelper( |
|
53 |
ExportParametersGeometry parameters, |
|
54 |
FeatureType theTargetFeatureType, |
|
55 |
FeatureType theSourceFeatureType |
|
56 |
); |
|
51 | 57 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.lib/org.gvsig.exportto.lib.impl/src/main/java/org/gvsig/export/impl/service/DefaultExportGeometryHelper.java | ||
---|---|---|
1 |
package org.gvsig.export.impl.service; |
|
2 |
|
|
3 |
import org.apache.commons.lang3.StringUtils; |
|
4 |
import org.cresques.cts.ICoordTrans; |
|
5 |
import org.cresques.cts.IProjection; |
|
6 |
import org.gvsig.export.ExportLocator; |
|
7 |
import org.gvsig.export.ExportParametersGeometry; |
|
8 |
import org.gvsig.export.spi.ExportGeometryHelper; |
|
9 |
import org.gvsig.export.spi.ExportServiceManager; |
|
10 |
import org.gvsig.fmap.dal.DataTypes; |
|
11 |
import org.gvsig.fmap.dal.feature.EditableFeature; |
|
12 |
import org.gvsig.fmap.dal.feature.Feature; |
|
13 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
|
14 |
import org.gvsig.fmap.dal.feature.FeatureType; |
|
15 |
import org.gvsig.fmap.geom.Geometry; |
|
16 |
|
|
17 |
/** |
|
18 |
* |
|
19 |
* @author jjdelcerro |
|
20 |
*/ |
|
21 |
public class DefaultExportGeometryHelper implements ExportGeometryHelper { |
|
22 |
private final int targetGeometryIndex; |
|
23 |
private final int sourceGeometryIndex; |
|
24 |
private final ICoordTrans coord_trans; |
|
25 |
|
|
26 |
private final ExportServiceManager serviceManager; |
|
27 |
private final ExportParametersGeometry parameters; |
|
28 |
private String lastErrorMessage; |
|
29 |
|
|
30 |
public DefaultExportGeometryHelper( |
|
31 |
ExportParametersGeometry parameters, |
|
32 |
FeatureType theTargetFeatureType, |
|
33 |
FeatureType theSourceFeatureType |
|
34 |
) { |
|
35 |
this.serviceManager = ExportLocator.getServiceManager(); |
|
36 |
this.parameters = parameters; |
|
37 |
|
|
38 |
FeatureAttributeDescriptor sourceGeomAtt = theSourceFeatureType.getDefaultGeometryAttribute(); |
|
39 |
FeatureAttributeDescriptor targetGeomAtt; |
|
40 |
|
|
41 |
String sourceGeometryFieldName = this.parameters.getSourceGeometryFieldName(); |
|
42 |
if( !StringUtils.isEmpty(sourceGeometryFieldName) ) { |
|
43 |
sourceGeomAtt = theSourceFeatureType.getAttributeDescriptor(sourceGeometryFieldName); |
|
44 |
} |
|
45 |
if (sourceGeomAtt == null) { |
|
46 |
// Si el origen no tiene geometria, no haremos nada con las |
|
47 |
// geometrias. |
|
48 |
this.targetGeometryIndex = -1; |
|
49 |
this.sourceGeometryIndex = -1; |
|
50 |
this.coord_trans = null; |
|
51 |
return; |
|
52 |
} |
|
53 |
switch( this.getGeometryColumnCount(theTargetFeatureType) ) { |
|
54 |
case 0: |
|
55 |
// Si el destino no tiene campo geometry no haremos nada con |
|
56 |
// las geometrias. |
|
57 |
this.targetGeometryIndex = -1; |
|
58 |
this.sourceGeometryIndex = -1; |
|
59 |
this.coord_trans = null; |
|
60 |
return; |
|
61 |
case 1: |
|
62 |
// Si solo hay una columna de geometria asignaremos las geometrias |
|
63 |
// independientemente de como se llamen los campos. |
|
64 |
targetGeomAtt = theTargetFeatureType.getDefaultGeometryAttribute(); |
|
65 |
break; |
|
66 |
default: |
|
67 |
// Si hay mas de una geometria en el target y hay un campo de tipo |
|
68 |
// geometria que coincida en nombre con el del source, usamos ese. |
|
69 |
targetGeomAtt = theTargetFeatureType.getAttributeDescriptor(sourceGeomAtt.getName()); |
|
70 |
if( targetGeomAtt == null || targetGeomAtt.getType()!=DataTypes.GEOMETRY ) { |
|
71 |
// Si no coinciden por nombre y tipo, pillaremos el primer campo |
|
72 |
// geometry por defecto del target. |
|
73 |
targetGeomAtt = theTargetFeatureType.getDefaultGeometryAttribute(); |
|
74 |
if( targetGeomAtt==null ) { |
|
75 |
targetGeomAtt = this.getFirstGeometryColumn(theTargetFeatureType); |
|
76 |
if( targetGeomAtt == null ) { |
|
77 |
this.targetGeometryIndex = -1; |
|
78 |
this.sourceGeometryIndex = -1; |
|
79 |
this.coord_trans = null; |
|
80 |
return; |
|
81 |
} |
|
82 |
} |
|
83 |
} |
|
84 |
} |
|
85 |
|
|
86 |
IProjection sourceProjection = this.parameters.getTargetProjection(); |
|
87 |
IProjection targetProjection = sourceGeomAtt.getSRS(); |
|
88 |
if( targetProjection == null ) { |
|
89 |
targetProjection = sourceProjection; |
|
90 |
} |
|
91 |
// this comparison is perhaps too preventive |
|
92 |
// we could have two instances of same projection |
|
93 |
// so we would do more computations than needed |
|
94 |
if (sourceProjection != null && targetProjection != null && sourceProjection != targetProjection) { |
|
95 |
this.coord_trans = sourceProjection.getCT(targetProjection); |
|
96 |
} else { |
|
97 |
this.coord_trans = null; |
|
98 |
} |
|
99 |
this.sourceGeometryIndex = sourceGeomAtt.getIndex(); |
|
100 |
this.targetGeometryIndex = targetGeomAtt.getIndex(); |
|
101 |
} |
|
102 |
|
|
103 |
private int getGeometryColumnCount(FeatureType featureType) { |
|
104 |
int count = 0; |
|
105 |
for( int i=0; i<featureType.size(); i++ ) { |
|
106 |
if( featureType.getAttributeDescriptor(i).getType()==DataTypes.GEOMETRY ) { |
|
107 |
count++; |
|
108 |
} |
|
109 |
} |
|
110 |
return count; |
|
111 |
} |
|
112 |
|
|
113 |
@Override |
|
114 |
public String getLastErrorMessage() { |
|
115 |
return this.lastErrorMessage; |
|
116 |
} |
|
117 |
|
|
118 |
@Override |
|
119 |
public int copyGeometry( |
|
120 |
Feature sourceFeature, |
|
121 |
EditableFeature targetFeature |
|
122 |
) { |
|
123 |
if( this.sourceGeometryIndex<0 || this.targetGeometryIndex<0 ) { |
|
124 |
return ExportServiceManager.FixGeometryStatus.STATE_OK; |
|
125 |
} |
|
126 |
Geometry geometry = sourceFeature.getGeometry(this.sourceGeometryIndex); |
|
127 |
ExportServiceManager.FixGeometryStatus check = serviceManager.fixGeometry( |
|
128 |
this.parameters, |
|
129 |
this.coord_trans, |
|
130 |
geometry |
|
131 |
); |
|
132 |
if( check.getState() == ExportServiceManager.FixGeometryStatus.STATE_OK ) { |
|
133 |
targetFeature.setGeometry(this.targetGeometryIndex, check.getGeometry()); |
|
134 |
} |
|
135 |
this.lastErrorMessage = check.getMessage(); |
|
136 |
return check.getState(); |
|
137 |
} |
|
138 |
|
|
139 |
@Override |
|
140 |
public boolean canProcessGeometry() { |
|
141 |
return this.sourceGeometryIndex>=0 && this.targetGeometryIndex>=0 ; |
|
142 |
} |
|
143 |
|
|
144 |
private FeatureAttributeDescriptor getFirstGeometryColumn(FeatureType featureType) { |
|
145 |
for( int i=0; i<featureType.size(); i++ ) { |
|
146 |
FeatureAttributeDescriptor descriptor = featureType.getAttributeDescriptor(i); |
|
147 |
if( descriptor.getType()==DataTypes.GEOMETRY ) { |
|
148 |
return descriptor; |
|
149 |
} |
|
150 |
} |
|
151 |
return null; |
|
152 |
} |
|
153 |
|
|
154 |
|
|
155 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.lib/org.gvsig.exportto.lib.impl/src/main/java/org/gvsig/export/impl/service/DefaultExportServiceManager.java | ||
---|---|---|
16 | 16 |
import org.gvsig.export.Filter; |
17 | 17 |
import org.gvsig.export.impl.ExportGeometryUtils; |
18 | 18 |
import org.gvsig.export.spi.AttributeNamesTranslator; |
19 |
import org.gvsig.export.spi.ExportGeometryHelper; |
|
19 | 20 |
import org.gvsig.export.spi.ExportService; |
20 | 21 |
import org.gvsig.export.spi.ExportServiceFactory; |
21 | 22 |
import org.gvsig.export.spi.ExportServiceManager; |
... | ... | |
123 | 124 |
) { |
124 | 125 |
return ExportGeometryUtils.fixGeometry(parmeters, coord_trans, geometry); |
125 | 126 |
} |
127 |
|
|
128 |
@Override |
|
129 |
public ExportGeometryHelper createGeometryHelper(ExportParametersGeometry parameters, FeatureType theTargetFeatureType, FeatureType theSourceFeatureType) { |
|
130 |
DefaultExportGeometryHelper helper = new DefaultExportGeometryHelper( |
|
131 |
parameters, |
|
132 |
theTargetFeatureType, |
|
133 |
theSourceFeatureType |
|
134 |
); |
|
135 |
return helper; |
|
136 |
|
|
137 |
} |
|
126 | 138 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.impl/src/main/java/org/gvsig/export/swing/impl/panels/SelectGeometryTypePanel.java | ||
---|---|---|
70 | 70 |
FeatureAttributeDescriptor geomDescriptor = ft.getDefaultGeometryAttribute(); |
71 | 71 |
|
72 | 72 |
if( geomDescriptor == null ) { |
73 |
this.parameters.setGeometryType(Geometry.TYPES.GEOMETRY); |
|
74 |
this.parameters.setGeometrySubtype(Geometry.SUBTYPES.GEOM2D); |
|
73 |
this.parameters.setTargetGeometryType(Geometry.TYPES.GEOMETRY);
|
|
74 |
this.parameters.setTargetGeometrySubtype(Geometry.SUBTYPES.GEOM2D);
|
|
75 | 75 |
} else { |
76 | 76 |
GeometryType gt = geomDescriptor.getGeomType(); |
77 |
this.parameters.setGeometryType(gt.getType()); |
|
78 |
this.parameters.setGeometrySubtype(gt.getSubType()); |
|
77 |
this.parameters.setTargetGeometryType(gt.getType());
|
|
78 |
this.parameters.setTargetGeometrySubtype(gt.getSubType());
|
|
79 | 79 |
} |
80 | 80 |
|
81 | 81 |
if( ArrayUtils.isEmpty(this.geometryTypes) ) { |
... | ... | |
220 | 220 |
public void exitPanel() { |
221 | 221 |
Integer n = (Integer) ListElement.getSelected(cboType); |
222 | 222 |
if( n!=null ) { |
223 |
this.parameters.setGeometryType(n); |
|
223 |
this.parameters.setTargetGeometryType(n);
|
|
224 | 224 |
} |
225 | 225 |
n = (Integer) ListElement.getSelected(cboSubtype); |
226 | 226 |
if( n!=null ) { |
227 |
this.parameters.setGeometrySubtype(n); |
|
227 |
this.parameters.setTargetGeometrySubtype(n);
|
|
228 | 228 |
} |
229 | 229 |
} |
230 | 230 |
|
231 | 231 |
@Override |
232 | 232 |
public void enterPanel() { |
233 | 233 |
if( this.updateComponents ) { |
234 |
ListElement.setSelected(cboType, this.parameters.getGeometryTypeAsInt()); |
|
235 |
ListElement.setSelected(cboSubtype, this.parameters.getGeometrySubtype()); |
|
234 |
ListElement.setSelected(cboType, this.parameters.getTargetGeometryTypeAsInt());
|
|
235 |
ListElement.setSelected(cboSubtype, this.parameters.getTargetGeometrySubtype());
|
|
236 | 236 |
} |
237 | 237 |
this.updateComponents=false; |
238 | 238 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.impl/src/main/java/org/gvsig/export/swing/impl/panels/SelectGeometryFieldPanel.java | ||
---|---|---|
39 | 39 |
this.parameters = (ExportParametersGeometry) parameters; |
40 | 40 |
|
41 | 41 |
if( this.parameters.getSourceFeatureType().getDefaultGeometryAttribute()==null ) { |
42 |
this.parameters.setGeometryFieldName(null); |
|
42 |
this.parameters.setSourceGeometryFieldName(null);
|
|
43 | 43 |
} else { |
44 |
this.parameters.setGeometryFieldName(this.parameters.getSourceFeatureType().getDefaultGeometryAttributeName()); |
|
44 |
this.parameters.setSourceGeometryFieldName(this.parameters.getSourceFeatureType().getDefaultGeometryAttributeName());
|
|
45 | 45 |
} |
46 | 46 |
|
47 | 47 |
this.initComponents(); |
... | ... | |
65 | 65 |
|
66 | 66 |
@Override |
67 | 67 |
public void exitPanel() { |
68 |
this.parameters.setGeometryFieldName(this.getGeometryField()); |
|
68 |
this.parameters.setSourceGeometryFieldName(this.getGeometryField());
|
|
69 | 69 |
} |
70 | 70 |
|
71 | 71 |
@Override |
... | ... | |
82 | 82 |
this.rdoSelectTheFieldToBeUsedAsGeometry.setEnabled(true); |
83 | 83 |
this.rdoSelectTheFieldToBeUsedAsGeometry.setSelected(false); |
84 | 84 |
|
85 |
if( this.parameters.getGeometryFieldName()==null ) { |
|
85 |
if( this.parameters.getSourceGeometryFieldName()==null ) {
|
|
86 | 86 |
this.rdoUseTheGeometryFieldByDefault.setEnabled(false); |
87 | 87 |
this.rdoUseTheGeometryFieldByDefault.setSelected(false); |
88 | 88 |
this.rdoUseNullAsTheValueOfTheGeometry.setSelected(true); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.impl/src/main/java/org/gvsig/export/swing/impl/panels/CheckGeometriesPanel.java | ||
---|---|---|
155 | 155 |
this.chkTryFixGeometry.setSelected( this.parameters.getTryToFixGeometry() ); |
156 | 156 |
} |
157 | 157 |
this.updateComponents = false; |
158 |
if( this.parameters.getGeometryFieldName()==null ) { |
|
158 |
if( this.parameters.getSourceGeometryFieldName()==null ) {
|
|
159 | 159 |
this.rdbCheckIsCorrupt.setEnabled(false); |
160 | 160 |
this.rdbCheckIsValid.setEnabled(false); |
161 | 161 |
this.rdbCheckNone.setEnabled(false); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.prov/org.gvsig.exportto.swing.prov.shape/src/main/java/org/gvsig/export/shape/service/ExportShapeParametersImpl.java | ||
---|---|---|
1 | 1 |
package org.gvsig.export.shape.service; |
2 | 2 |
|
3 | 3 |
import java.io.File; |
4 |
import org.apache.commons.io.FilenameUtils; |
|
4 | 5 |
import org.gvsig.export.spi.AbstractExportParametersGeometry; |
5 | 6 |
|
6 | 7 |
/** |
... | ... | |
36 | 37 |
|
37 | 38 |
@Override |
38 | 39 |
public void setFile(File file) { |
39 |
this.file = file;
|
|
40 |
this.file = new File(FilenameUtils.removeExtension(file.getAbsolutePath()) + ".shp");
|
|
40 | 41 |
} |
41 | 42 |
|
42 | 43 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.prov/org.gvsig.exportto.swing.prov.shape/src/main/java/org/gvsig/export/shape/service/ExportShapeService.java | ||
---|---|---|
130 | 130 |
// Volvemos a obtener una copia "limpia" con los cambios consolidados |
131 | 131 |
ft = eft.getNotEditableCopy(); |
132 | 132 |
} |
133 |
|
|
134 |
// FIXME: check if ft has one and only one geometry. |
|
135 |
|
|
133 | 136 |
newStoreParameters.setDefaultFeatureType(ft.getEditable()); |
134 | 137 |
return newStoreParameters; |
135 | 138 |
} catch (DataException ex) { |
... | ... | |
162 | 165 |
File parametersFile = this.getParameters().getFile(); |
163 | 166 |
String pathName = FilenameUtils.removeExtension(parametersFile.getAbsolutePath()); |
164 | 167 |
|
165 |
int geometryType = this.getParameters().getGeometryTypeAsInt(); |
|
168 |
int geometryType = this.getParameters().getTargetGeometryTypeAsInt();
|
|
166 | 169 |
|
167 | 170 |
if (geometryType == Geometry.TYPES.GEOMETRY) { |
168 | 171 |
try { |
... | ... | |
214 | 217 |
try { |
215 | 218 |
EditableFeatureType type = this.getParameters().getSourceFeatureType().getCopy().getEditable(); |
216 | 219 |
|
217 |
String geomFieldName = this.getParameters().getGeometryFieldName(); |
|
220 |
String geomFieldName = this.getParameters().getSourceGeometryFieldName();
|
|
218 | 221 |
|
219 | 222 |
FeatureAttributeDescriptor geomFieldDescSource = (FeatureAttributeDescriptor) type.getDefaultGeometryAttribute(); |
220 | 223 |
if( geomFieldDescSource!=null ) { |
... | ... | |
222 | 225 |
} |
223 | 226 |
EditableFeatureAttributeDescriptor geomFieldDescTarget = type.add( |
224 | 227 |
"GEOMETRY", |
225 |
this.getParameters().getGeometryTypeAsInt() |
|
228 |
this.getParameters().getTargetGeometryTypeAsInt()
|
|
226 | 229 |
); |
227 | 230 |
geomFieldDescTarget.setDefaultValue(null); |
228 |
int gsubtype = this.getParameters().getGeometrySubtype(); |
|
231 |
int gsubtype = this.getParameters().getTargetGeometrySubtype();
|
|
229 | 232 |
// El shp solo soporta los subtipos 2D y 3D |
230 | 233 |
switch (gsubtype) { |
231 | 234 |
case Geometry.SUBTYPES.GEOM2D: |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.prov/org.gvsig.exportto.swing.prov.jdbc/src/main/java/org/gvsig/export/jdbc/service/ExportJDBCService.java | ||
---|---|---|
66 | 66 |
implements ExportService |
67 | 67 |
{ |
68 | 68 |
|
69 |
private static class InvalidGeometryException extends ExportException { |
|
70 |
|
|
71 |
public InvalidGeometryException(Feature feature, String checkMessage) { |
|
72 |
super(checkMessage, feature); |
|
73 |
} |
|
74 |
} |
|
75 |
|
|
76 | 69 |
private FeatureType targetFeatureType; |
77 | 70 |
|
78 | 71 |
|
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.prov/org.gvsig.exportto.swing.prov.dbf/src/main/java/org/gvsig/export/dbf/service/ExportDBFService.java | ||
---|---|---|
121 | 121 |
// Volvemos a obtener una copia "limpia" con los cambios consolidados |
122 | 122 |
ft = eft.getNotEditableCopy(); |
123 | 123 |
} |
124 |
|
|
125 |
// FIXME: check types of fields in ft (remove Geometry?) |
|
126 |
|
|
124 | 127 |
newStoreParameters.setDefaultFeatureType(ft.getEditable()); |
125 | 128 |
return newStoreParameters; |
126 | 129 |
} catch (DataException ex) { |
Also available in: Unified diff