Revision 5306 trunk/extensions/extWFS2/src/com/iver/cit/gvsig/fmap/drivers/geotools/WFSFeaturesIterator.java
WFSFeaturesIterator.java | ||
---|---|---|
3 | 3 |
import java.io.IOException; |
4 | 4 |
import java.util.Date; |
5 | 5 |
import java.util.NoSuchElementException; |
6 |
import java.util.Vector; |
|
6 | 7 |
|
7 | 8 |
import org.geotools.data.FeatureReader; |
8 | 9 |
import org.geotools.feature.Feature; |
... | ... | |
62 | 63 |
* |
63 | 64 |
* $Id$ |
64 | 65 |
* $Log$ |
65 |
* Revision 1.1 2006-05-19 12:47:12 jorpiell |
|
66 |
* Revision 1.2 2006-05-22 10:10:07 jorpiell |
|
67 |
* El iteartor crea un vector y lo inicializa en el primer recorrido que se hace sobre ?l. A partir de ah? se devuelve un elemento del vector en los posteriores recorridos |
|
68 |
* |
|
69 |
* Revision 1.1 2006/05/19 12:47:12 jorpiell |
|
66 | 70 |
* Creado el iteardor de Features |
67 | 71 |
* |
68 | 72 |
* |
... | ... | |
71 | 75 |
* @author Jorge Piera Llodr? (piera_jor@gva.es) |
72 | 76 |
*/ |
73 | 77 |
public class WFSFeaturesIterator implements IFeatureIterator{ |
74 |
FeatureReader featureReader = null; |
|
78 |
private FeatureReader featureReader = null; |
|
79 |
private Vector featureVector = new Vector(); |
|
80 |
private boolean finished = false; |
|
81 |
private int position = -1; |
|
82 |
private int length = -2; |
|
75 | 83 |
|
76 | 84 |
public WFSFeaturesIterator(FeatureReader featureReader){ |
77 | 85 |
this.featureReader = featureReader; |
... | ... | |
83 | 91 |
* @throws DriverException |
84 | 92 |
*/ |
85 | 93 |
public IFeature next() throws DriverException { |
86 |
Feature feature = null; |
|
94 |
IFeature outPutFeature = null; |
|
95 |
if (!finished){ |
|
96 |
Feature feature = null; |
|
87 | 97 |
try { |
88 | 98 |
feature = featureReader.next(); |
89 | 99 |
} catch (NoSuchElementException e) { |
... | ... | |
96 | 106 |
Object[] attr = null; |
97 | 107 |
attr = feature.getAttributes(attr); |
98 | 108 |
Value[] values = getValues(attr); |
99 |
|
|
100 | 109 |
|
101 | 110 |
IGeometry g = ShapeFactory.createGeometry(FConverter.jts_to_java2d(feature.getDefaultGeometry())); |
102 |
return new DefaultFeature(g,values,feature.getID()); |
|
111 |
outPutFeature = new DefaultFeature(g,values,feature.getID()); |
|
112 |
featureVector.add(outPutFeature); |
|
113 |
}else{ |
|
114 |
outPutFeature = (DefaultFeature)featureVector.get(position); |
|
115 |
} |
|
116 |
return outPutFeature; |
|
103 | 117 |
} |
104 | 118 |
|
105 | 119 |
/** |
... | ... | |
107 | 121 |
* @return |
108 | 122 |
*/ |
109 | 123 |
public boolean hasNext(){ |
110 |
try { |
|
111 |
if (featureReader.hasNext()){ |
|
124 |
if (length == -2){ |
|
125 |
try { |
|
126 |
if (featureReader.hasNext()){ |
|
127 |
position++; |
|
128 |
return true; |
|
129 |
}else{ |
|
130 |
featureReader.close(); |
|
131 |
finished = true; |
|
132 |
length = featureVector.size() - 1; |
|
133 |
return false; |
|
134 |
} |
|
135 |
} catch (IOException e) { |
|
136 |
e.printStackTrace(); |
|
137 |
} |
|
138 |
}else{ |
|
139 |
if (position != length){ |
|
140 |
position++; |
|
112 | 141 |
return true; |
113 | 142 |
}else{ |
114 |
featureReader.close(); |
|
115 | 143 |
return false; |
116 | 144 |
} |
117 |
} catch (IOException e) { |
|
118 |
e.printStackTrace(); |
|
119 | 145 |
} |
120 | 146 |
return false; |
121 | 147 |
} |
... | ... | |
153 | 179 |
return values; |
154 | 180 |
} |
155 | 181 |
|
182 |
/* |
|
183 |
* (non-Javadoc) |
|
184 |
* @see com.iver.cit.gvsig.fmap.drivers.IFeatureIterator#closeIterator() |
|
185 |
*/ |
|
156 | 186 |
public void closeIterator() throws DriverException { |
157 | 187 |
// TODO Auto-generated method stub |
158 | 188 |
} |
189 |
|
|
190 |
/** |
|
191 |
* This method must be executed before to start an iteration |
|
192 |
* process |
|
193 |
*/ |
|
194 |
public void startIteration(){ |
|
195 |
position = -1; |
|
196 |
} |
|
159 | 197 |
} |
Also available in: Unified diff