Statistics
| Revision:

root / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / layers / LayerFactory.java @ 470

History | View | Annotate | Download (7.28 KB)

1
/* Generated by Together */
2
package com.iver.cit.gvsig.fmap.layers;
3

    
4
import java.io.File;
5
import java.net.URL;
6
import java.util.TreeMap;
7

    
8
import org.cresques.cts.IProjection;
9

    
10
import com.hardcode.driverManager.Driver;
11
import com.hardcode.driverManager.DriverLoadException;
12
import com.hardcode.driverManager.DriverManager;
13
import com.hardcode.gdbms.engine.data.DataSourceFactory;
14
import com.hardcode.gdbms.engine.data.DriverException;
15
import com.hardcode.gdbms.engine.instruction.FieldNotFoundException;
16
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
17
import com.iver.cit.gvsig.fmap.drivers.RasterDriver;
18
import com.iver.cit.gvsig.fmap.drivers.VectorialDatabaseDriver;
19
import com.iver.cit.gvsig.fmap.drivers.VectorialDriver;
20
import com.iver.cit.gvsig.fmap.drivers.VectorialFileDriver;
21
import com.iver.cit.gvsig.fmap.drivers.wfs.WFSDriver;
22
import com.iver.cit.gvsig.fmap.rendering.LegendFactory;
23

    
24

    
25
/**
26
 * Crea un adaptador del driver que se le pasa como par?metro en los m?todos
27
 * createLayer. Si hay memoria suficiente se crea un FLyrMemory que pasa todas
28
 * las features del driver a memoria
29
 */
30
public class LayerFactory {
31
        private static String driversPath = "../FMap 03/drivers";
32
    private static DriverManager driverManager;
33

    
34
    /**
35
     * Map en el que se guarda para cada fuente de datos a?adida al sistema, el
36
     * adaptador que la maneja. Ha de ser un TreeMap ya que esta clase define
37
     * la igualdad entre las claves a traves del m?todo equals de las mismas.
38
     * Los objetos FileSource, DBSource y WFSSource tienen definido el m?todo
39
     * equals de forma que devuelven true cuando dos objetos apuntan a la
40
     * misma fuente de datos
41
     */
42
    private static TreeMap sourceAdapter;
43

    
44
    /**
45
     * Crea un RandomVectorialFile con el driver que se le pasa como par?metro
46
     * y guard?ndose el nombre del fichero para realizar los accesos, la capa
47
     * tendr? asociada la proyecci?n que se pasa como parametro tambi?n
48
     *
49
     * @param driverName
50
     * @param f DOCUMENT ME!
51
     * @param proj DOCUMENT ME!
52
     *
53
     * @return DOCUMENT ME!
54
     *
55
     * @throws DriverLoadException
56
     * @throws DriverIOException
57
     */
58
    public static FLyrVect createLayer(String driverName, File f,
59
        IProjection proj) throws DriverLoadException, DriverIOException {
60
        //Se obtiene el driver que lee
61
        DriverManager dm = getDM();
62

    
63
        Driver d = dm.getDriver(driverName);
64

    
65
        return createLayer((VectorialFileDriver)d, f, proj);
66
    }
67

    
68
    /**
69
     * Crea un RandomVectorialFile con el driver que se le pasa como par?metro
70
     * y guard?ndose el nombre del fichero para realizar los accesos, la capa
71
     * tendr? asociada la proyecci?n que se pasa como parametro tambi?n
72
     *
73
     * @param d
74
     * @param f DOCUMENT ME!
75
     * @param proj DOCUMENT ME!
76
     *
77
     * @return DOCUMENT ME!
78
     *
79
     * @throws DriverLoadException
80
     * @throws DriverIOException
81
     */
82
    public static FLyrVect createLayer(VectorialFileDriver d, File f,
83
        IProjection proj) throws DriverLoadException, DriverIOException {
84
        //TODO Comprobar si hay un adaptador ya
85
        VectorialFileAdapter adapter = new VectorialFileAdapter(f);
86
        adapter.setDriver((VectorialDriver) d);
87

    
88
        FLyrVect capa = new FLyrVect();
89

    
90
        //TODO Meter esto dentro de la comprobaci?n de si hay memoria
91
        if (false) {
92
        } else {
93
            capa.setSource(adapter);
94
            capa.setProjection(proj);
95
        }
96

    
97
        // TODO: No s? si hay que hacerlo aqu?, pero si no lo hacemos
98
        // getShapeType no devuelve lo correcto y no se pintan
99
        // los s?mbolos en el TOC.
100
        capa.getSource().start();
101
        capa.getSource().stop();
102
        
103
        try {
104
                        // Le asignamos tambi?n una legenda por defecto acorde con
105
                        // el tipo de shape que tenga. Tampoco s? si es aqu? el
106
                        // sitio adecuado, pero en fin....
107
                        capa.setLegend(LegendFactory.createSingleSymbolLegend(capa.getShapeType()));
108
                } catch (FieldNotFoundException e) {
109
                        // TODO Auto-generated catch block
110
                        e.printStackTrace();
111
                } catch (DriverException e) {
112
                        // TODO Auto-generated catch block
113
                        e.printStackTrace();
114
                } catch (DriverLoadException e) {
115
                        // TODO Auto-generated catch block
116
                        e.printStackTrace();
117
                } catch (DriverIOException e) {
118
                        // TODO Auto-generated catch block
119
                        e.printStackTrace();
120
                }
121
        
122

    
123
        return capa;
124
    }
125
    
126
    /**
127
     * Crea un RandomVectorialWFS con el driver que se le pasa como par?metro y
128
     * guard?ndose la URL del servidor que se pasa como par?metro
129
     *
130
     * @param driver DOCUMENT ME!
131
     * @param host DOCUMENT ME!
132
     * @param proj DOCUMENT ME!
133
     *
134
     * @return DOCUMENT ME!
135
     *
136
     * @throws UnsupportedOperationException DOCUMENT ME!
137
     */
138
    public static FLyrVect createLayer(WFSDriver driver, URL host,
139
        IProjection proj) {
140
        throw new UnsupportedOperationException();
141
    }
142

    
143
    /**
144
     * Crea un RandomVectorialWFS con el driver que se le pasa como par?metro y
145
     * guard?ndose la URL del servidor que se pasa como par?metro
146
     *
147
     * @param driver DOCUMENT ME!
148
     * @param host DOCUMENT ME!
149
     * @param port DOCUMENT ME!
150
     * @param user DOCUMENT ME!
151
     * @param password DOCUMENT ME!
152
     * @param dbName DOCUMENT ME!
153
     * @param tableName DOCUMENT ME!
154
     * @param proj DOCUMENT ME!
155
     *
156
     * @return DOCUMENT ME!
157
     *
158
     * @throws UnsupportedOperationException DOCUMENT ME!
159
     */
160
    public static FLyrVect createLayer(VectorialDatabaseDriver driver,
161
        String host, int port, String user, String password, String dbName,
162
        String tableName, IProjection proj) {
163
        throw new UnsupportedOperationException();
164
    }
165

    
166
    /**
167
     * Obtiene el adaptador de un driver si ya se ha a?adido el origen de datos
168
     * o null si es un origen de datos nuevo
169
     *
170
     * @param source DOCUMENT ME!
171
     */
172
    private static void getAdapter(Source source) {
173
    }
174

    
175
    /**
176
     * Registra la asociaci?n entre la fuente de datos que se pasa como
177
     * par?metro y el VectorialAdapter que se pasa como par?metro, para
178
     * satisfacer futuras llamadas a getAdapter
179
     *
180
     * @param s DOCUMENT ME!
181
     * @param a DOCUMENT ME!
182
     */
183
    private static void saveSourceAdapter(Source s, VectorialAdapter a) {
184
    }
185

    
186
    /**
187
     * Crea una FLyrComplexRaster que ataca al driver que se pasa como
188
     * par?metro.
189
     *
190
     * @param driver DOCUMENT ME!
191
     * @param f DOCUMENT ME!
192
     * @param proj DOCUMENT ME!
193
     *
194
     * @throws IllegalArgumentException Si se pasa un driver que no implementa
195
     *         GeorreferencedRasterDriver o NotGeorreferencedRasterDriver
196
     */
197
    public static void createLayer(RasterDriver driver, File f, IProjection proj)
198
        throws IllegalArgumentException {
199
    }
200

    
201
    /**
202
     * DOCUMENT ME!
203
     *
204
     * @return DOCUMENT ME!
205
     *
206
     * @throws DriverLoadException
207
     */
208
    public static DriverManager getDM() throws DriverLoadException {
209
        if (driverManager == null) {
210
            driverManager = new DriverManager();
211
            driverManager.loadDrivers(new File(LayerFactory.driversPath));
212
            
213
            DataSourceFactory.setDriverManager(driverManager);
214
        }
215

    
216
        return driverManager;
217
    }
218
    
219
    /**
220
     * sets drivers Directory 
221
     * @param path
222
     */
223
    
224
    public static void setDriversPath(String path) {
225
            LayerFactory.driversPath = path;
226
    }
227
}