Revision 5306 trunk/extensions/extWFS2/src/com/iver/cit/gvsig/fmap/drivers/geotools/WFSFeaturesIterator.java

View differences:

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