Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / app / project / documents / view / ViewDocumentStoresRepository.java @ 47585

History | View | Annotate | Download (6.33 KB)

1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.app.project.documents.view;
7

    
8
import java.util.HashMap;
9
import java.util.Iterator;
10
import java.util.Map;
11
import org.apache.commons.lang3.tuple.ImmutablePair;
12
import org.apache.commons.lang3.tuple.Pair;
13
import org.gvsig.fmap.dal.AbstractStoresRepository;
14
import org.gvsig.fmap.dal.DataStore;
15
import org.gvsig.fmap.dal.DataStoreParameters;
16
import org.gvsig.fmap.dal.feature.FeatureStore;
17
import org.gvsig.fmap.dal.feature.FeatureType;
18
import org.gvsig.fmap.mapcontext.layers.FLayer;
19
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
20
import org.gvsig.tools.dispose.DisposeUtils;
21
import org.gvsig.tools.util.UnmodifiableBasicSet;
22
import org.gvsig.tools.util.UnmodifiableBasicSetAdapter;
23

    
24
/**
25
 *
26
 * @author jjdelcerro
27
 */
28
class ViewDocumentStoresRepository extends AbstractStoresRepository {
29

    
30
    private final ViewDocument viewdoc;
31
    
32
    public ViewDocumentStoresRepository(String name, ViewDocument viewdoc) {
33
        super(name);
34
        this.viewdoc = viewdoc;
35
    }
36
    public ViewDocumentStoresRepository(ViewDocument viewdoc) {
37
        this(viewdoc.getName(), viewdoc);
38
    }
39

    
40
    private Map<String, Pair<DataStoreParameters, DataStore>> getAll() {
41
        Map<String, Pair<DataStoreParameters, DataStore>> all = new HashMap<>();
42
        for (FLayer layer : viewdoc.layers()) {
43
            if (layer instanceof FLyrVect) {
44
                FeatureStore store = ((FLyrVect) layer).getFeatureStore();
45
                if (store != null) {
46
                    String theName = layer.getName();
47
                    if (all.containsKey(theName)) {
48
                        theName = theName + "$";
49
                        int counter = 1;
50
                        while (all.containsKey(theName + counter)) {
51
                            counter++;
52
                        }
53
                        theName = theName + counter;
54
                    }
55
                    all.put(theName, new ImmutablePair<>(store.getParameters(), store));
56
                }
57
            }
58
        }
59
        if (all.isEmpty()) {
60
            return null;
61
        }
62
        return all;
63
    }
64

    
65
    private Map<String, Pair<FeatureType, FeatureStore>> getAllFeatureTypes() {
66
        Map<String, Pair<FeatureType, FeatureStore>> all = new HashMap<>();
67
        //            MutablePair<DataStore,String> storeAndName = new MutablePair<>();
68
        for (FLayer layer : viewdoc.layers()) {
69
            if (layer instanceof FLyrVect) {
70
                FeatureStore store = ((FLyrVect) layer).getFeatureStore();
71
                if (store != null) {
72
                    String theName = layer.getName();
73
                    if (all.containsKey(theName)) {
74
                        theName = theName + "$";
75
                        int counter = 1;
76
                        while (all.containsKey(theName + counter)) {
77
                            counter++;
78
                        }
79
                        theName = theName + counter;
80
                    }
81
                    //                            storeAndName.setLeft(store);
82
                    //                            storeAndName.setRight(theName);
83
                    //                            if( filter == null || filter.test(storeAndName) ) {
84
                    all.put(theName, new ImmutablePair<>(store.getDefaultFeatureTypeQuietly(), store));
85
                    //                            }
86
                }
87
            }
88
            //                    if (limit > 0 && all.size() >= limit) {
89
            //                        break;
90
            //                    }
91
        }
92
        if (all.isEmpty()) {
93
            return null;
94
        }
95
        return all;
96
    }
97

    
98
    @Override
99
    protected DataStoreParameters getMyParameters(final String name) {
100
        Map<String, Pair<DataStoreParameters, DataStore>> all = this.getAll();
101
        if (all == null) {
102
            return null;
103
        }
104
        Pair<DataStoreParameters, DataStore> data = all.get(name);
105
        if (data == null) {
106
            return null;
107
        }
108
        return data.getLeft();
109
    }
110

    
111
    @Override
112
    protected FeatureType getMyFeatureType(String name) {
113
        Map<String, Pair<FeatureType, FeatureStore>> all = this.getAllFeatureTypes();
114
        if (all == null) {
115
            return null;
116
        }
117
        Pair<FeatureType, FeatureStore> data = all.get(name);
118
        if (data == null) {
119
            return null;
120
        }
121
        return all.get(name).getLeft();
122
    }
123

    
124
    @Override
125
    public DataStore getStore(String name) {
126
        Map<String, Pair<DataStoreParameters, DataStore>> all = this.getAll();
127
        if (all == null) {
128
            return null;
129
        }
130
        Pair<DataStoreParameters, DataStore> data = all.get(name);
131
        if (data == null) {
132
            return null;
133
        }
134
        DataStore store = data.getRight();
135
        DisposeUtils.bind(store);
136
        return store;
137
    }
138

    
139
    @Override
140
    public boolean containsKey(final String key) {
141
        Map<String, Pair<DataStoreParameters, DataStore>> all = this.getAll();
142
        if (all == null) {
143
            return false;
144
        }
145
        return all.containsKey(key);
146
    }
147

    
148
    @Override
149
    protected UnmodifiableBasicSet<String> getMyKeySet() {
150
        Map<String, Pair<DataStoreParameters, DataStore>> all = this.getAll();
151
        if (all == null) {
152
            return null;
153
        }
154
        return new UnmodifiableBasicSetAdapter<>(all.keySet());
155
    }
156

    
157
    @Override
158
    protected boolean isEmptyMyRepository() {
159
        Map<String, Pair<DataStoreParameters, DataStore>> all = this.getAll();
160
        return all.isEmpty();
161
    }
162

    
163
    @Override
164
    protected int getMySize() {
165
        Map<String, Pair<DataStoreParameters, DataStore>> all = this.getAll();
166
        return all.size();
167
    }
168

    
169
    @Override
170
    public Iterator<DataStoreParameters> iterator() {
171
        Map<String, Pair<DataStoreParameters, DataStore>> all = this.getAll();
172
        Iterator<Pair<DataStoreParameters, DataStore>> it = all.values().iterator();
173
        return new Iterator<DataStoreParameters>() {
174
            @Override
175
            public boolean hasNext() {
176
                return it.hasNext();
177
            }
178

    
179
            @Override
180
            public DataStoreParameters next() {
181
                return it.next().getLeft();
182
            }
183
        };
184
    }
185

    
186
}