Revision 1920 branches/Fmap_GisPlanet/libraries/libFMap/src/com/iver/cit/gvsig/fmap/layers/WFSAdapter.java

View differences:

WFSAdapter.java
40 40
 */
41 41
package com.iver.cit.gvsig.fmap.layers;
42 42

  
43
import java.awt.geom.Rectangle2D;
44
import java.io.IOException;
45
import java.net.URL;
46

  
47
import com.hardcode.driverManager.DriverLoadException;
43 48
import com.hardcode.gdbms.engine.data.DataSource;
44

  
49
import com.hardcode.gdbms.engine.data.DataSourceFactory;
50
import com.hardcode.gdbms.engine.data.NoSuchTableException;
51
import com.hardcode.gdbms.engine.data.driver.ObjectDriver;
45 52
import com.iver.cit.gvsig.fmap.DriverException;
53
import com.iver.cit.gvsig.fmap.core.FShape;
46 54
import com.iver.cit.gvsig.fmap.core.IGeometry;
47 55
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
56
import com.iver.cit.gvsig.fmap.drivers.IFeatureIterator;
57
import com.iver.cit.gvsig.fmap.drivers.wfs.IWFSDriver;
48 58
import com.iver.cit.gvsig.fmap.drivers.wfs.WFSDriver;
49
import com.iver.cit.gvsig.fmap.rendering.indexes.IndexNotExistsException;
50 59

  
51
import java.awt.geom.Rectangle2D;
52 60

  
53
import java.net.URL;
54

  
55

  
56 61
/**
57 62
 * Adapta un driver de WFS a la interfaz vectorial, manteniendo adem?s el
58 63
 * estado necesario por una capa vectorial WFS (URL del host, estado del
......
61 66
public class WFSAdapter extends VectorialAdapter {
62 67
	private URL host;
63 68
	private VectorialAdapter tempAdapter;
69
	private int numReg=-1;
70
	private DataSource ds = null;
71
		/**
72
		 * incrementa el contador de las veces que se ha abierto el fichero.
73
		 * Solamente cuando el contador est? a cero pide al driver que conecte con
74
		 * la base de datos
75
		 */
76
		public void start() {
77
	            try {
78
	                ((IWFSDriver)driver).open();
79
	            } catch (DriverException e) {
80
	                // TODO Auto-generated catch block
81
	                e.printStackTrace();
82
	            }
83
		
84
		}
64 85

  
65
	/**
66
	 * incrementa el contador de las veces que se ha abierto el fichero.
67
	 * Solamente cuando el contador est? a cero pide al driver que conecte con
68
	 * el servidor WFS
69
	 */
70
	public void start() {
71
	}
86
		/**
87
		 * decrementa el contador de n?mero de aperturas y cuando llega a cero pide
88
		 * al driver que cierre la conexion con el servidor de base de datos
89
		 */
90
		public void stop() {
91
		    ((IWFSDriver)driver).close();
92
		}
72 93

  
73
	/**
74
	 * M?todo ejecutado para finalizar.
75
	 */
76
	public void stop() {
77
	}
94
		public IFeatureIterator getFeatureIterator(Rectangle2D r, String strEPSG) throws DriverException
95
		{
96
		    return ((IWFSDriver)driver).getFeatureIterator(r, strEPSG);
97
		}
98
		
99
		/*public String getFields()
100
		{
101
		    return ((IWFSDriver)driver).getFields();	    
102
		}
103
		public String getWhereClause()
104
		{
105
		    return ((VectorialDatabaseDriver)driver).getWhereClause();
106
		}
107
		public String getTableName()
108
		{
109
		    return ((VectorialDatabaseDriver)driver).getTableName();
110
		}
111
		
112
		*/
113
		/**
114
		 * @see com.iver.cit.gvsig.fmap.layers.ReadableVectorial#getShape(int)
115
		 */
116
		public IGeometry getShape(int index) throws DriverIOException {
117
		    IGeometry geom = null;
118
		    geom = ((IWFSDriver)driver).getShape(index);
119
		    return geom;
120
		}
78 121

  
79
	/**
80
	 * Inserta el driver.
81
	 *
82
	 * @param driver
83
	 */
84
	public void setDriver(WFSDriver driver) {
85
	}
122
		/**
123
		 * @throws DriverException
124
		 * @see com.iver.cit.gvsig.fmap.layers.ReadableVectorial#getShapeCount()
125
		 */
126
		public int getShapeCount() throws DriverIOException {
127
			try {
128
				return ((IWFSDriver)driver).getShapeCount();
129
			} catch (IOException e) {
130
				e.printStackTrace();
131
			}	
132
			return -1;
133
		}
86 134

  
87
	/**
88
	 * Establece el adaptador que se usar? para acceder a los datos temporales
89
	 * obtenidos del servidor
90
	 *
91
	 * @param adapter
92
	 */
93
	private void createTempFile(VectorialFileAdapter adapter) {
94
	}
135
		/**
136
		 * @see com.iver.cit.gvsig.fmap.layers.ReadableVectorial#getFullExtent()
137
		 */
138
		public Rectangle2D getFullExtent() {
139
		    return ((IWFSDriver)driver).getFullExtent();
140
		}
95 141

  
96
	/**
97
	 * @see com.iver.cit.gvsig.fmap.layers.ReadableVectorial#getShape(int)
98
	 */
99
	public IGeometry getShape(int index) throws DriverIOException {
100
		return null;
101
	}
102 142

  
103
	/**
104
	 * @see com.iver.cit.gvsig.fmap.layers.ReadableVectorial#getShapeCount()
105
	 */
106
	public int getShapeCount() throws DriverIOException {
107
		return 0;
108
	}
143
		/**
144
		 * @see com.iver.cit.gvsig.fmap.layers.ReadableVectorial#getShapeType()
145
		 */
146
		public int getShapeType() throws DriverIOException {
147
			return FShape.MULTI;
148
		}
109 149

  
110
	/**
111
	 * @see com.iver.cit.gvsig.fmap.layers.ReadableVectorial#getFullExtent()
112
	 */
113
	public Rectangle2D getFullExtent() throws DriverIOException {
114
		return null;
115
	}
116

  
117
	/**
118
	 * @see com.iver.cit.gvsig.fmap.rendering.indexes.Index#getRecordIndexes(java.awt.geom.Rectangle2D)
119
	 */
120
	public int[] getRecordIndexes(Rectangle2D rect)
121
		throws DriverIOException, IndexNotExistsException {
122
		return null;
123
	}
124

  
125
	/**
126
	 * @see com.iver.cit.gvsig.fmap.layers.ReadableVectorial#getShapeType()
127
	 */
128
	public int getShapeType() throws DriverIOException {
129
		return 0;
130
	}
131

  
132
	/**
133
	 * @see com.iver.cit.gvsig.fmap.layers.VectorialAdapter#getRecordset()
134
	 */
135
	public DataSource getRecordset() {
136
		return null;
137
	}
138

  
139
	/**
140
	 * @see com.iver.cit.gvsig.fmap.layers.VectorialAdapter#changeRecordsetName(java.lang.String)
141
	 */
142
	public void changeRecordsetName(String newName) throws DriverException {
143
	}
150
		/**
151
		 * @see com.iver.cit.gvsig.fmap.layers.VectorialAdapter#getRecordset()
152
		 */
153
		public DataSource getRecordset() throws DriverLoadException {
154
		    if (driver instanceof WFSDriver)
155
		    {
156
				String name = LayerFactory.getDataSourceFactory().addDataSource((ObjectDriver)driver, null);
157
				try {
158
	                ds = LayerFactory.getDataSourceFactory().createRandomDataSource(name, DataSourceFactory.AUTOMATIC_MODE);
159
	            } catch (NoSuchTableException e) {
160
	                throw new RuntimeException(e);
161
				} catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
162
					throw new RuntimeException(e);
163
				}
164
		    }
165
			return ds;
166
		}
144 167
}

Also available in: Unified diff