Revision 39411
branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/FeatureStore.java | ||
---|---|---|
17 | 17 |
import org.gvsig.fmap.geom.primitive.Envelope; |
18 | 18 |
import org.gvsig.tools.dispose.DisposableIterator; |
19 | 19 |
import org.gvsig.tools.dynobject.DynObject; |
20 |
import org.gvsig.tools.lang.Cloneable; |
|
20 | 21 |
import org.gvsig.tools.observer.Observer; |
21 | 22 |
import org.gvsig.tools.undo.UndoRedoStack; |
22 | 23 |
|
... | ... | |
47 | 48 |
* </ul> |
48 | 49 |
* |
49 | 50 |
*/ |
50 |
public interface FeatureStore extends DataStore, UndoRedoStack { |
|
51 |
public interface FeatureStore extends DataStore, UndoRedoStack, Cloneable {
|
|
51 | 52 |
|
52 | 53 |
public static final String METADATA_DEFINITION_NAME = "FeatureStore"; |
53 | 54 |
|
branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/FeatureStoreTransforms.java | ||
---|---|---|
3 | 3 |
import java.util.Iterator; |
4 | 4 |
|
5 | 5 |
import org.gvsig.fmap.dal.exception.DataException; |
6 |
import org.gvsig.tools.lang.Cloneable; |
|
6 | 7 |
|
7 | 8 |
/** |
8 | 9 |
* This interface represents a container for store transforms. |
... | ... | |
11 | 12 |
* adding and removing transforms. |
12 | 13 |
* |
13 | 14 |
*/ |
14 |
public interface FeatureStoreTransforms { |
|
15 |
public interface FeatureStoreTransforms extends Cloneable {
|
|
15 | 16 |
|
16 | 17 |
/** |
17 | 18 |
* Returns the FeatureStoreTransform given its index. |
branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/FeatureStoreTransform.java | ||
---|---|---|
32 | 32 |
import org.gvsig.fmap.dal.exception.DataException; |
33 | 33 |
import org.gvsig.tools.dynobject.DynObject; |
34 | 34 |
import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException; |
35 |
import org.gvsig.tools.lang.Cloneable; |
|
35 | 36 |
import org.gvsig.tools.persistence.Persistent; |
36 | 37 |
|
37 | 38 |
/** |
... | ... | |
42 | 43 |
* @author jmvivo |
43 | 44 |
* |
44 | 45 |
*/ |
45 |
public interface FeatureStoreTransform extends Persistent { |
|
46 |
public interface FeatureStoreTransform extends Persistent, Cloneable {
|
|
46 | 47 |
|
47 | 48 |
/** |
48 | 49 |
* Returns the default {@link FeatureType}. |
branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/impl/DefaultFeatureStoreTransforms.java | ||
---|---|---|
8 | 8 |
|
9 | 9 |
import org.gvsig.fmap.dal.exception.DataException; |
10 | 10 |
import org.gvsig.fmap.dal.feature.EditableFeature; |
11 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
|
11 | 12 |
import org.gvsig.fmap.dal.feature.Feature; |
12 | 13 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
13 | 14 |
import org.gvsig.fmap.dal.feature.FeatureStoreNotification; |
... | ... | |
174 | 175 |
FeatureProvider targetData; |
175 | 176 |
EditableFeature target; |
176 | 177 |
ListIterator iterator = stack.listIterator(stack.size()); |
178 |
FeatureType tft = null; |
|
177 | 179 |
|
178 | 180 |
|
179 | 181 |
while (iterator.hasPrevious()) { |
180 | 182 |
item = (TransformTemporalListElement) iterator.previous(); |
181 |
targetData = this.store |
|
182 |
.createDefaultFeatureProvider(item.targetFeatureType); |
|
183 |
|
|
184 |
tft = item.targetFeatureType; |
|
185 |
if (tft instanceof EditableFeatureType) { |
|
186 |
/* |
|
187 |
* Must be non-editable to create |
|
188 |
* DefaultFeatureProvider |
|
189 |
*/ |
|
190 |
tft = ((EditableFeatureType) tft).getNotEditableCopy(); |
|
191 |
} |
|
192 |
|
|
193 |
targetData = this.store.createDefaultFeatureProvider(tft); |
|
183 | 194 |
targetData.setOID(source.getData().getOID()); |
184 | 195 |
targetData.setNew(false); |
185 | 196 |
target = (new DefaultEditableFeature(this.store, targetData)) |
... | ... | |
231 | 242 |
} |
232 | 243 |
this.store = (DefaultFeatureStore) featureStore; |
233 | 244 |
} |
245 |
|
|
246 |
|
|
247 |
public void setStoreForClone(FeatureStore featureStore) { |
|
248 |
this.store = (DefaultFeatureStore) featureStore; |
|
249 |
} |
|
234 | 250 |
|
235 | 251 |
public boolean isTransformsOriginalValues() { |
236 | 252 |
if (this.isTramsformValues == null) { |
... | ... | |
325 | 341 |
} |
326 | 342 |
return false; |
327 | 343 |
} |
344 |
|
|
345 |
public Object clone() throws CloneNotSupportedException { |
|
346 |
|
|
347 |
DefaultFeatureStoreTransforms cloned = (DefaultFeatureStoreTransforms) super.clone(); |
|
348 |
cloned.transforms = new ArrayList(); |
|
349 |
int n = this.transforms.size(); |
|
350 |
for (int i=0; i<n; i++) { |
|
351 |
cloned.transforms.add(((FeatureStoreTransform) this.transforms.get(i)).clone()); |
|
352 |
} |
|
353 |
cloned.lastTransformStack = null; |
|
354 |
|
|
355 |
return cloned; |
|
356 |
} |
|
328 | 357 |
|
329 | 358 |
} |
branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/AbstractFeatureStoreTransform.java | ||
---|---|---|
157 | 157 |
throws DynFieldNotFoundException { |
158 | 158 |
throw new DynFieldNotFoundException(name, "transform"); |
159 | 159 |
} |
160 |
|
|
161 |
|
|
162 |
public Object clone() throws CloneNotSupportedException { |
|
163 |
return super.clone(); |
|
164 |
|
|
165 |
} |
|
160 | 166 |
|
161 | 167 |
} |
branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/exception/CloneException.java | ||
---|---|---|
1 |
/* gvSIG. Desktop Geographic Information System. |
|
2 |
* |
|
3 |
* Copyright ? 2007-2012 gvSIG Association |
|
4 |
* |
|
5 |
* This program is free software; you can redistribute it and/or |
|
6 |
* modify it under the terms of the GNU General Public License |
|
7 |
* as published by the Free Software Foundation; either version 2 |
|
8 |
* of the License, or (at your option) any later version. |
|
9 |
* |
|
10 |
* This program is distributed in the hope that it will be useful, |
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
13 |
* GNU General Public License for more details. |
|
14 |
* |
|
15 |
* You should have received a copy of the GNU General Public License |
|
16 |
* along with this program; if not, write to the Free Software |
|
17 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
|
18 |
* MA 02110-1301, USA. |
|
19 |
* |
|
20 |
* For any additional information, do not hesitate to contact us |
|
21 |
* at info AT gvsig.com, or visit our website www.gvsig.com. |
|
22 |
*/ |
|
23 |
package org.gvsig.fmap.dal.exception; |
|
24 |
|
|
25 |
|
|
26 |
/** |
|
27 |
* @author jldominguez |
|
28 |
* |
|
29 |
*/ |
|
30 |
public class CloneException extends DataRuntimeException { |
|
31 |
|
|
32 |
/** |
|
33 |
* |
|
34 |
*/ |
|
35 |
private static final long serialVersionUID = -6605425077113421529L; |
|
36 |
|
|
37 |
/** |
|
38 |
* |
|
39 |
* @param cause |
|
40 |
*/ |
|
41 |
public CloneException(Throwable cause) { |
|
42 |
|
|
43 |
super("Cannot clone object.", cause, |
|
44 |
"_Cannot_clone_object", serialVersionUID); |
|
45 |
} |
|
46 |
|
|
47 |
} |
branches/v2_0_0_prep/extensions/org.gvsig.daltransform.app.mainplugin/src/main/java/org/gvsig/daltransform/swing/impl/DataTransformSelectionAction.java | ||
---|---|---|
34 | 34 |
|
35 | 35 |
import org.gvsig.andami.PluginServices; |
36 | 36 |
import org.gvsig.daltransform.swing.DataTransformGui; |
37 |
import org.gvsig.fmap.crs.CRSFactory; |
|
38 | 37 |
import org.gvsig.fmap.dal.exception.DataException; |
39 | 38 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
40 | 39 |
import org.gvsig.fmap.dal.feature.FeatureStoreTransform; |
... | ... | |
65 | 64 |
|
66 | 65 |
//Gets the selected FeatureStore |
67 | 66 |
FeatureStore featureStore = dataTransformWizard.getFeatureStore(); |
68 |
|
|
67 |
FeatureStore cloned_store = null; |
|
68 |
try { |
|
69 |
cloned_store = (FeatureStore) featureStore.clone(); |
|
70 |
} catch (CloneNotSupportedException e1) { |
|
71 |
/* |
|
72 |
* FeatureStore always implements the clone method |
|
73 |
*/ |
|
74 |
} |
|
75 |
|
|
69 | 76 |
try { |
70 | 77 |
//Gets the transform |
71 |
FeatureStoreTransform featureStoreTransform = featureTransformGui.createFeatureStoreTransform(featureStore);
|
|
78 |
FeatureStoreTransform featureStoreTransform = featureTransformGui.createFeatureStoreTransform(cloned_store);
|
|
72 | 79 |
|
73 | 80 |
// Apply the transformation |
74 |
featureStore.getTransforms().add(featureStoreTransform);
|
|
81 |
cloned_store.getTransforms().add(featureStoreTransform);
|
|
75 | 82 |
|
76 | 83 |
//Create and load a new layer... |
77 | 84 |
if (dataTransformWizard.isLayerLoaded()){ |
78 | 85 |
MapContextManager manager = MapContextLocator.getMapContextManager(); |
79 | 86 |
FLayer layer = manager.createLayer( |
80 | 87 |
featureTransformGui.toString(), |
81 |
featureStore);
|
|
88 |
cloned_store);
|
|
82 | 89 |
dataTransformWizard.getMapContext().getLayers().addLayer(layer); |
83 | 90 |
layer.dispose(); |
84 | 91 |
} |
Also available in: Unified diff