Revision 29326 branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/spi/memory/MemoryFeatureSet.java

View differences:

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