Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.spi / src / main / java / org / gvsig / fmap / dal / feature / spi / memory / MemoryFeatureProviderAttributeMapper.java @ 46608

History | View | Annotate | Download (7.25 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24

    
25
package org.gvsig.fmap.dal.feature.spi.memory;
26

    
27
import java.util.Iterator;
28
import org.apache.commons.lang3.StringUtils;
29

    
30
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
31
import org.gvsig.fmap.dal.feature.FeatureType;
32
import org.gvsig.fmap.dal.feature.spi.DefaultFeatureProvider;
33
import org.gvsig.fmap.dal.feature.spi.FeatureProvider;
34
import org.gvsig.fmap.geom.Geometry;
35
import org.gvsig.fmap.geom.primitive.Envelope;
36
import org.gvsig.timesupport.Time;
37
import org.gvsig.tools.logger.FilteredLogger;
38
import org.slf4j.Logger;
39
import org.slf4j.LoggerFactory;
40

    
41
/**
42
 * Envuelve un FeatureProvider en memoria para que muestre un FeautureType
43
 * distinto del orginal sin modificarlo
44
 *
45
 *
46
 * Wrap a FeatureProvider stored in memory to display a FeautureType other than
47
 * the original one without change it
48
 *
49
 * @author jmvivo
50
 *
51
 */
52
public class MemoryFeatureProviderAttributeMapper implements FeatureProvider {
53
    
54
        private static final Logger LOGGER = LoggerFactory.getLogger(MemoryFeatureProviderAttributeMapper.class);
55
        private static final FilteredLogger FLOGGER = new FilteredLogger(LOGGER, "MemoryFeatureProviderAttributeMapper", 10).setInterval(20000L);
56
        private final FeatureProvider original;
57
        private final FeatureType myFeatureType;
58

    
59
        /**
60
         * Default constructor.
61
         * 
62
         * @param original
63
         *            featureProvider
64
         * @param featureType
65
         *            to expose
66
         */
67
        public MemoryFeatureProviderAttributeMapper(FeatureProvider original,
68
                        FeatureType featureType) {
69
                this.original = original;
70
                this.myFeatureType = featureType;
71

    
72
        }
73

    
74
        public boolean isReadOnly(int i) {
75
            FeatureAttributeDescriptor attribute = myFeatureType.getAttributeDescriptor(i);
76
            if (attribute.getEvaluator() == null) {
77
                    return true;
78
            }
79
            return false;
80
        }
81
        
82
        /*
83
         * (non-Javadoc)
84
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#get(int)
85
         */
86
        public Object get(int i) {
87
                return original.get(myFeatureType.getAttributeDescriptor(i).getName());
88
        }
89

    
90
        /*
91
         * (non-Javadoc)
92
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#get(java.lang.String)
93
         */
94
        public Object get(String name) {
95
                return original.get(name);
96
        }
97

    
98
        /*
99
         * (non-Javadoc)
100
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#getCopy()
101
         */
102
        public FeatureProvider getCopy() {
103
                DefaultFeatureProvider data = new DefaultFeatureProvider(myFeatureType);
104
                data.setOID(this.original.getOID());
105
                Iterator iter = myFeatureType.iterator();
106
                FeatureAttributeDescriptor attr;
107
                FeatureType originalType = this.original.getType();
108
                while (iter.hasNext()) {
109
                        attr = (FeatureAttributeDescriptor) iter.next();
110
                        if (!attr.isComputed()) {
111
                            if (originalType.get(attr.getName())==null){
112
                                FLOGGER.warn("Can't access attribute '"+attr.getName()+"' in original feature.");
113
                                continue;
114
                            }
115
                            data.set(attr.getIndex(), this.original.get(attr.getName()));
116
                        }
117
                }
118
                data.setNew(this.original.isNew());
119
                return data;
120
        }
121

    
122
        /*
123
         * (non-Javadoc)
124
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#getDefaultEnvelope()
125
         */
126
        public Envelope getDefaultEnvelope() {
127
                return original.getDefaultEnvelope();
128
        }
129

    
130
        /*
131
         * (non-Javadoc)
132
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#getDefaultGeometry()
133
         */
134
        public Geometry getDefaultGeometry() {
135
                return original.getDefaultGeometry();
136
        }
137

    
138
        /*
139
         * (non-Javadoc)
140
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#getOID()
141
         */
142
        public Object getOID() {
143
                return original.getOID();
144
        }
145

    
146
        /*
147
         * (non-Javadoc)
148
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#getType()
149
         */
150
        public FeatureType getType() {
151
                return myFeatureType;
152
        }
153

    
154
        /*
155
         * (non-Javadoc)
156
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#isNew()
157
         */
158
        public boolean isNew() {
159
                return original.isNew();
160
        }
161

    
162
        /*
163
         * (non-Javadoc)
164
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#isNull(int)
165
         */
166
        public boolean isNull(int i) {
167
                return original.isNull(myFeatureType.getAttributeDescriptor(i)
168
                                .getName());
169
        }
170

    
171
        /*
172
         * (non-Javadoc)
173
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#isNull(java.lang.String)
174
         */
175
        public boolean isNull(String name) {
176
                return original.isNull(name);
177
        }
178

    
179
        /*
180
         * (non-Javadoc)
181
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#set(int, java.lang.Object)
182
         */
183
        public void set(int i, Object value) {
184
                original.set(myFeatureType.getAttributeDescriptor(i).getName(),
185
                                value);
186

    
187

    
188
        }
189

    
190
        /*
191
         * (non-Javadoc)
192
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#set(java.lang.String, java.lang.Object)
193
         */
194
        public void set(String name, Object value) {
195
                original.set(name, value);
196
        }
197

    
198
        /*
199
         * (non-Javadoc)
200
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#setDefaultEnvelope(org.gvsig.fmap.geom.primitive.Envelope)
201
         */
202
        public void setDefaultEnvelope(Envelope extent) {
203
                original.setDefaultEnvelope(extent);
204
        }
205

    
206
        /*
207
         * (non-Javadoc)
208
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#setDefaultGeometry(org.gvsig.fmap.geom.Geometry)
209
         */
210
        public void setDefaultGeometry(Geometry geom) {
211
                original.setDefaultGeometry(geom);
212

    
213
        }
214

    
215
        /*
216
         * (non-Javadoc)
217
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#setNew(boolean)
218
         */
219
        public void setNew(boolean isNew) {
220
                original.setNew(isNew);
221
        }
222

    
223
        /*
224
         * (non-Javadoc)
225
         * @see org.gvsig.fmap.dal.feature.spi.FeatureProvider#setOID(java.lang.Object)
226
         */
227
        public void setOID(Object oid) {
228
                original.setOID(oid);
229
        }
230

    
231
    @Override
232
    public Time getDefaultTime() {
233
        return original.getDefaultTime();
234
    }
235

    
236
    @Override
237
    public void setDefaultTime(Time time) {
238
        original.setDefaultTime(time);
239
    }
240

    
241
    @Override
242
    public void setExtraValue(int index, Object value) {
243
        this.original.setExtraValue(index, value);
244
    }
245

    
246
    @Override
247
    public Object getExtraValue(int index) {
248
        return this.original.getExtraValue(index);
249
    }
250

    
251
    @Override
252
    public Object getExtraValue(String name) {
253
        return this.original.getExtraValue(name);
254
    }
255

    
256
    @Override
257
    public void setExtraValueNames(String[] extraValueNames) {
258
        this.original.setExtraValueNames(extraValueNames);
259
    }
260

    
261
  @Override
262
  public boolean hasExtraValue(String name) {
263
    return this.original.hasExtraValue(name);
264
  }
265
    
266
}