Revision 2608 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.impl/src/main/java/org/gvsig/vectorediting/lib/impl/DefaultEditingManager.java

View differences:

DefaultEditingManager.java
24 24

  
25 25
package org.gvsig.vectorediting.lib.impl;
26 26

  
27
import java.util.ArrayList;
28
import java.util.List;
29
import java.util.Map;
30
import javax.json.JsonArray;
31
import javax.json.JsonObject;
32
import javax.json.JsonValue;
33
import org.apache.commons.lang3.StringUtils;
34
import org.gvsig.andami.PluginServices;
35
import org.slf4j.Logger;
36
import org.slf4j.LoggerFactory;
37

  
38 27
import org.gvsig.fmap.dal.feature.FeatureStore;
39
import org.gvsig.fmap.geom.DataTypes;
40
import org.gvsig.fmap.geom.Geometry;
41 28
import org.gvsig.fmap.mapcontext.MapContext;
42
import org.gvsig.json.Json;
43
import org.gvsig.tools.ToolsLocator;
44
import org.gvsig.tools.dataTypes.Coercion;
45 29
import org.gvsig.tools.dynobject.DynObject;
46 30
import org.gvsig.tools.service.AbstractManager;
47 31
import org.gvsig.tools.service.Service;
48 32
import org.gvsig.tools.service.ServiceException;
49
import org.gvsig.tools.swing.api.ToolsSwingLocator;
50
import org.gvsig.tools.swing.api.ToolsSwingManager;
51 33
import org.gvsig.vectorediting.lib.api.EditingManager;
52 34
import org.gvsig.vectorediting.lib.api.EditingService;
53 35
import org.gvsig.vectorediting.lib.api.EditingServiceInfo;
......
55 37
import org.gvsig.vectorediting.lib.spi.EditingProvider;
56 38
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory;
57 39
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator;
40
import org.slf4j.Logger;
41
import org.slf4j.LoggerFactory;
58 42

  
59 43
public class DefaultEditingManager extends AbstractManager implements
60 44
EditingManager {
......
62 46
    private static final Logger logger = LoggerFactory
63 47
        .getLogger(DefaultEditingManager.class);
64 48
    
65
    private String clipboardValue;
66
    private List<Geometry> geometriesFromClipboard;
67

  
68 49
    public DefaultEditingManager() {
69 50
        super(new DefaultEditingProviderManager());
70 51
    }
......
103 84
        return null;
104 85
    }
105 86
    
106
    public List<Geometry> getGeometriesFromClipboard(){
107
        ToolsSwingManager manager = ToolsSwingLocator.getToolsSwingManager();
108
        String clipboardValue = manager.getFromClipboard();
109
        
110
        if(StringUtils.isNotBlank(clipboardValue) 
111
                && StringUtils.isNotBlank(this.clipboardValue)
112
                && StringUtils.equals(clipboardValue, this.clipboardValue)){
113
            return this.geometriesFromClipboard;
114
        }
115
        
116
        this.geometriesFromClipboard = new ArrayList<>();
117
        
118
        String geometryName = null;
119
        try {
120
            JsonArray jsonArray = Json.createArray(clipboardValue);
121

  
122
            Coercion toGeometry = ToolsLocator.getDataTypesManager().getCoercion(DataTypes.GEOMETRY);
123

  
124
            for (JsonValue item : jsonArray) {
125
                JsonObject jsonItem = (JsonObject) item;
126
                if (StringUtils.isBlank(geometryName)) {
127
                    for (Map.Entry<String, JsonValue> field : jsonItem.entrySet()) {
128
                        Geometry geometry;
129
                        try {
130
                            geometry = (Geometry) toGeometry.coerce(field.getValue().toString().replace("\"", ""));
131
                            if (geometry != null) {
132
                                geometryName = field.getKey();
133
                                this.geometriesFromClipboard.add(geometry);
134
                                break;
135
                            }
136
                        } catch (Exception e) {
137
                            //DO NOTHING
138
                        }
139
                    }
140
                } else {
141
                    Geometry geometry;
142
                    try {
143
                        String strGeom = jsonItem.getString(geometryName);
144
                        geometry = (Geometry) toGeometry.coerce(strGeom);
145
                        if (geometry != null) {
146
                            this.geometriesFromClipboard.add(geometry);
147
                        }
148
                    } catch (Exception e) {
149
                        //DO NOTHING
150
    //                        logger.warn("Can't coerce geometry", e);
151
                    }
152
                }
153
            }
154
        } catch (Exception ex) {
155
            //DO NOTHING
156
        }
157
        return this.geometriesFromClipboard;
158
    }
159

  
160 87
}

Also available in: Unified diff