Revision 47585 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/ViewManager.java

View differences:

ViewManager.java
97 97

  
98 98
    private static final Logger LOGGER = LoggerFactory.getLogger(ViewManager.class);
99 99

  
100
    private static class ViewDocumentStoresRepository extends AbstractStoresRepository {
101

  
102
        public ViewDocumentStoresRepository(String name) {
103
            super(name);
104
        }
105

  
106
        private List<ViewDocument> getOrderedViews() {
107
            Project project = ProjectManager.getInstance().getCurrentProject();
108
            List<Document> allViews = project.getDocuments(TYPENAME);
109
            List<Document> openViews = project.getOpenDocuments(TYPENAME);
110
            List<ViewDocument> views = new ArrayList<>();
111
            for (Document view : openViews) {
112
                views.add((ViewDocument) view);
113
            }
114
            for (Document view : allViews) {
115
                if( !openViews.contains(view) ) {
116
                    views.add((ViewDocument) view);
117
                }
118
            }
119
            return views;
120
        }
121

  
122
        private Map<String, Pair<DataStoreParameters,DataStore>> getAll() {
123
            Map<String, Pair<DataStoreParameters,DataStore>> all = new HashMap<>();
124
            List<ViewDocument> views = getOrderedViews();
125
            for (ViewDocument view : views) {
126
                for (FLayer layer : view.layers()) {
127
                    if (layer instanceof FLyrVect) {
128
                        FeatureStore store = ((FLyrVect) layer).getFeatureStore();
129
                        if (store!=null ) {
130
                            String theName = layer.getName();
131
                            if( all.containsKey(theName) ) {
132
                                theName = theName+"$";
133
                                int  counter = 1;
134
                                while( all.containsKey(theName+counter) ) {
135
                                    counter++;
136
                                }
137
                                theName = theName+counter;
138
                            }
139
                                all.put(theName, new ImmutablePair<>(store.getParameters(),store));
140
                        }
141
                    }
142
                }
143
            }
144
            if (all.isEmpty()) {
145
                return null;
146
            }
147
            return all;
148
        }
149

  
150
        private Map<String, Pair<FeatureType,FeatureStore>> getAllFeatureTypes() {
151
            Map<String, Pair<FeatureType,FeatureStore>> all = new HashMap<>();
152
            Project project = ProjectManager.getInstance().getCurrentProject();
153
            List<Document> views = project.getDocuments(TYPENAME);
154
//            MutablePair<DataStore,String> storeAndName = new MutablePair<>();
155
            for (Document view : views) {
156
                for (FLayer layer : ((ViewDocument) view).layers()) {
157
                    if (layer instanceof FLyrVect) {
158
                        FeatureStore store = ((FLyrVect) layer).getFeatureStore();
159
                        if (store!=null ) {
160
                            String theName = layer.getName();
161
                            if( all.containsKey(theName) ) {
162
                                theName = theName+"$";
163
                                int  counter = 1;
164
                                while( all.containsKey(theName+counter) ) {
165
                                    counter++;
166
                                }
167
                                theName = theName+counter;
168
                            }
169
//                            storeAndName.setLeft(store);
170
//                            storeAndName.setRight(theName);
171
//                            if( filter == null || filter.test(storeAndName) ) {
172
                                all.put(theName, new ImmutablePair<>(store.getDefaultFeatureTypeQuietly(),store));
173
//                            }
174
                        }
175
                    }
176
//                    if (limit > 0 && all.size() >= limit) {
177
//                        break;
178
//                    }
179
                }
180
            }
181
            if (all.isEmpty()) {
182
                return null;
183
            }
184
            return all;
185
        }
186

  
187
        @Override
188
        protected DataStoreParameters getMyParameters(final String name) {
189
            Map<String, Pair<DataStoreParameters, DataStore>> all = this.getAll();
190
            if (all == null) {
191
                return null;
192
            }
193
            Pair<DataStoreParameters, DataStore> data = all.get(name);
194
            if( data == null ) {
195
                return null;
196
            }
197
            return data.getLeft();
198
        }
199

  
200
        @Override
201
        protected FeatureType getMyFeatureType(String name) {
202
            Map<String, Pair<FeatureType, FeatureStore>> all = this.getAllFeatureTypes();
203
            if (all == null) {
204
                return null;
205
            }
206
            Pair<FeatureType, FeatureStore> data = all.get(name);
207
            if( data == null ) {
208
                return null;
209
            }
210
            return all.get(name).getLeft();
211
        }
212

  
213
        @Override
214
        public DataStore getStore(String name) {
215
            Map<String, Pair<DataStoreParameters, DataStore>> all = this.getAll();
216
            if (all == null) {
217
                return null;
218
            }
219
            Pair<DataStoreParameters, DataStore> data = all.get(name);
220
            if( data == null ) {
221
                return null;
222
            }
223
            DataStore store = data.getRight();
224
            DisposeUtils.bind(store);
225
            return store;
226
        }
227
        
228
        @Override
229
        public boolean containsKey(final String key) {
230
            Map<String, Pair<DataStoreParameters, DataStore>> all =this.getAll();
231
            if (all == null) {
232
                return false;
233
            }
234
            return all.containsKey(key);
235
        }
236

  
237
        @Override
238
        protected UnmodifiableBasicSet<String> getMyKeySet() {
239
            Map<String, Pair<DataStoreParameters, DataStore>> all = this.getAll();
240
            if (all == null) {
241
                return null;
242
            }
243
            return new UnmodifiableBasicSetAdapter<>(all.keySet());
244
        }
245

  
246
        @Override
247
        protected boolean isEmptyMyRepository() {
248
            Map<String, Pair<DataStoreParameters, DataStore>> all = this.getAll();
249
            return all.isEmpty();
250
        }
251

  
252
        @Override
253
        protected int getMySize() {
254
            Map<String, Pair<DataStoreParameters, DataStore>> all = this.getAll();
255
            return all.size();
256
        }
257

  
258
        @Override
259
        public Iterator<DataStoreParameters> iterator() {
260
            Map<String, Pair<DataStoreParameters, DataStore>> all = this.getAll();
261
            Iterator<Pair<DataStoreParameters, DataStore>> it = all.values().iterator();
262
            return new Iterator<DataStoreParameters>() {
263
                @Override
264
                public boolean hasNext() {
265
                    return it.hasNext();
266
                }
267

  
268
                @Override
269
                public DataStoreParameters next() {
270
                    return it.next().getLeft();
271
                }
272
            };
273
        }
274

  
275
        public static void selfRegister() {
276
            DataManager dataManager = DALLocator.getDataManager();
277
            dataManager.getStoresRepository().addRepository(new ViewDocumentStoresRepository("Project layers"));            
278
        }
279
    }
280 100
    
281 101
    private static final String PERSISTENCE_VIEW_DOCUMENT_DEFINITION_NAME
282 102
            = "DefaultViewDocument";
......
594 414
                    .setMandatory(false);
595 415

  
596 416
        }
597
        ViewDocumentStoresRepository.selfRegister();
417
        ViewsDocumentStoresRepository.selfRegister();
598 418
        ViewZoomActionFactory.selfRegister();
599 419
        AddFilterToLayerActionFactory.selfRegister();
600 420
        CreateTemporalLayerAction.CreateTemporalLayerActionFactory.selfRegister();

Also available in: Unified diff