Revision 29326 branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/spi/memory/MemoryFeatureSet.java
MemoryFeatureSet.java | ||
---|---|---|
1 | 1 |
package org.gvsig.fmap.dal.feature.spi.memory; |
2 | 2 |
|
3 |
import java.util.Iterator; |
|
4 |
import java.util.List; |
|
5 |
|
|
3 | 6 |
import org.gvsig.fmap.dal.exception.DataException; |
4 | 7 |
import org.gvsig.fmap.dal.feature.DisposableIterator; |
5 | 8 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
6 | 9 |
import org.gvsig.fmap.dal.feature.FeatureType; |
10 |
import org.gvsig.fmap.dal.feature.spi.DefaultFeatureProvider; |
|
7 | 11 |
import org.gvsig.fmap.dal.feature.spi.FeatureSetProvider; |
8 | 12 |
|
9 | 13 |
public class MemoryFeatureSet implements FeatureSetProvider { |
10 | 14 |
|
11 | 15 |
AbstractMemoryStoreProvider store; |
12 | 16 |
FeatureType type; |
17 |
protected List data; |
|
13 | 18 |
|
14 | 19 |
public MemoryFeatureSet(AbstractMemoryStoreProvider store, |
15 |
FeatureQuery query, FeatureType featureType) { |
|
20 |
FeatureQuery query, FeatureType featureType, List data) {
|
|
16 | 21 |
this.store = store; |
22 |
this.data = data; |
|
17 | 23 |
/* |
18 | 24 |
* Nota: Como no sabe filtrar ni ordenar ignora el query. |
19 | 25 |
*/ |
... | ... | |
51 | 57 |
} |
52 | 58 |
|
53 | 59 |
public long getSize() throws DataException { |
54 |
return store.getDataSize();
|
|
60 |
return data.size();
|
|
55 | 61 |
} |
56 | 62 |
|
57 | 63 |
public boolean isEmpty() throws DataException { |
58 |
return store.getDataSize() < 1;
|
|
64 |
return data.size() < 1;
|
|
59 | 65 |
} |
60 | 66 |
|
61 | 67 |
public DisposableIterator iterator() throws DataException { |
62 | 68 |
if (type == null) { |
63 |
return store.dataIterator();
|
|
69 |
return new DelegatedDisposableIterator(this.data.iterator());
|
|
64 | 70 |
} |
65 |
return store.dataIterator(type);
|
|
71 |
return new DelegatedDisposableIterator(this.data.iterator(), type);
|
|
66 | 72 |
} |
67 | 73 |
|
68 | 74 |
public DisposableIterator iterator(long index) throws DataException { |
69 | 75 |
if (type == null) { |
70 |
return store.dataIterator(index); |
|
76 |
return new DelegatedDisposableIterator(this.data |
|
77 |
.listIterator((int) index)); |
|
71 | 78 |
} |
72 |
return store.dataIterator(index, type); |
|
79 |
return new DelegatedDisposableIterator(this.data |
|
80 |
.listIterator((int) index), type); |
|
73 | 81 |
} |
74 | 82 |
|
75 | 83 |
public void dispose() { |
76 | 84 |
store = null; |
77 | 85 |
} |
86 |
|
|
87 |
|
|
88 |
|
|
89 |
|
|
90 |
protected class DelegatedDisposableIterator implements DisposableIterator { |
|
91 |
private Iterator delegated; |
|
92 |
private FeatureType fType; |
|
93 |
|
|
94 |
public DelegatedDisposableIterator(Iterator it) { |
|
95 |
this(it, null); |
|
96 |
} |
|
97 |
|
|
98 |
public DelegatedDisposableIterator(Iterator it, FeatureType featureType) { |
|
99 |
this.delegated = it; |
|
100 |
this.fType = featureType; |
|
101 |
|
|
102 |
} |
|
103 |
|
|
104 |
public void dispose() { |
|
105 |
this.delegated = null; |
|
106 |
} |
|
107 |
|
|
108 |
public boolean hasNext() { |
|
109 |
return delegated.hasNext(); |
|
110 |
} |
|
111 |
|
|
112 |
public Object next() { |
|
113 |
if (fType == null) { |
|
114 |
return delegated.next(); |
|
115 |
} else { |
|
116 |
return new MemoryFeatureProviderAttributeMapper( |
|
117 |
(DefaultFeatureProvider) delegated.next(), |
|
118 |
this.fType); |
|
119 |
} |
|
120 |
|
|
121 |
} |
|
122 |
|
|
123 |
public void remove() { |
|
124 |
throw new UnsupportedOperationException(); |
|
125 |
} |
|
126 |
|
|
127 |
} |
|
128 |
|
|
78 | 129 |
} |
Also available in: Unified diff