Revision 2444 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;
27 35
import org.slf4j.Logger;
28 36
import org.slf4j.LoggerFactory;
29 37

  
30 38
import org.gvsig.fmap.dal.feature.FeatureStore;
39
import org.gvsig.fmap.geom.DataTypes;
40
import org.gvsig.fmap.geom.Geometry;
31 41
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;
32 45
import org.gvsig.tools.dynobject.DynObject;
33 46
import org.gvsig.tools.service.AbstractManager;
34 47
import org.gvsig.tools.service.Service;
35 48
import org.gvsig.tools.service.ServiceException;
49
import org.gvsig.tools.swing.api.ToolsSwingLocator;
50
import org.gvsig.tools.swing.api.ToolsSwingManager;
36 51
import org.gvsig.vectorediting.lib.api.EditingManager;
37 52
import org.gvsig.vectorediting.lib.api.EditingService;
38 53
import org.gvsig.vectorediting.lib.api.EditingServiceInfo;
......
46 61

  
47 62
    private static final Logger logger = LoggerFactory
48 63
        .getLogger(DefaultEditingManager.class);
64
    
65
    private String clipboardValue;
66
    private List<Geometry> geometriesFromClipboard;
49 67

  
50 68
    public DefaultEditingManager() {
51 69
        super(new DefaultEditingProviderManager());
......
64 82
            serviceName);
65 83
    }
66 84

  
85
    @Override
67 86
    public EditingService getEditingService(String name,
68 87
        FeatureStore featureStore, MapContext mapContext) {
69 88
        try {
......
83 102

  
84 103
        return null;
85 104
    }
105
    
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);
86 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

  
87 160
}

Also available in: Unified diff