svn-gvsig-desktop / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / project / castor / ProjectTable.java @ 652
History | View | Annotate | Download (7.44 KB)
1 |
package com.iver.cit.gvsig.project.castor; |
---|---|
2 |
|
3 |
import com.hardcode.driverManager.DriverLoadException; |
4 |
|
5 |
import com.hardcode.gdbms.engine.data.DataSource; |
6 |
import com.hardcode.gdbms.engine.data.DataSourceFactory; |
7 |
import com.hardcode.gdbms.engine.data.DataSourceFactory.DBDriverInfo; |
8 |
import com.hardcode.gdbms.engine.data.DataSourceFactory.DriverInfo; |
9 |
import com.hardcode.gdbms.engine.data.DataSourceFactory.FileDriverInfo; |
10 |
import com.hardcode.gdbms.engine.data.NoSuchTableException; |
11 |
|
12 |
import com.iver.cit.gvsig.fmap.DriverException; |
13 |
import com.iver.cit.gvsig.fmap.layers.FLayer; |
14 |
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource; |
15 |
import com.iver.cit.gvsig.fmap.layers.XMLException; |
16 |
import com.iver.cit.gvsig.fmap.layers.layerOperations.AlphanumericData; |
17 |
import com.iver.cit.gvsig.project.ProjectFactory; |
18 |
|
19 |
import com.iver.utiles.XMLEntity; |
20 |
|
21 |
import java.text.DateFormat; |
22 |
|
23 |
import java.util.Date; |
24 |
|
25 |
|
26 |
/**
|
27 |
* Tabla del proyecto
|
28 |
*
|
29 |
* @author Fernando Gonz?lez Cort?s
|
30 |
*/
|
31 |
public class ProjectTable extends ProjectElement { |
32 |
private static int numTables = 0; |
33 |
private SelectableDataSource modelo;
|
34 |
private String nameLayer; |
35 |
|
36 |
/* No es necesaria para operar, s?lo para guardar el proyecto */
|
37 |
private AlphanumericData associatedTable;
|
38 |
|
39 |
/**
|
40 |
* Establece a true el bit index-?simo del bitmap de campos visibles. Los
|
41 |
* campos cuyos bits est?n a true se considerar?n visibles y viceversa
|
42 |
*
|
43 |
* @param index indice del bit que se quiere establecer a true
|
44 |
*/
|
45 |
public void set(int index) { |
46 |
//TODO implementar bien
|
47 |
// modelo.set(index);
|
48 |
change.firePropertyChange("visibles", true, true); |
49 |
} |
50 |
|
51 |
/**
|
52 |
* Obtiene el valor del bit index-?simo del bitmap de campos visibles
|
53 |
*
|
54 |
* @param index indice del bit que se quiere obtener
|
55 |
*
|
56 |
* @return devuelve true si el campo index-?simo es visible y false en caso
|
57 |
* contrario
|
58 |
*/
|
59 |
public boolean get(int index) { |
60 |
//TODO implementar bien
|
61 |
// return modelo.get(index);
|
62 |
return false; |
63 |
} |
64 |
|
65 |
/**
|
66 |
* Obtiene el modelo de la Tabla. Es decir, una clase con capacidad para
|
67 |
* leer la informaci?n de la tabla
|
68 |
*
|
69 |
* @return
|
70 |
*/
|
71 |
public SelectableDataSource getModelo() {
|
72 |
return modelo;
|
73 |
} |
74 |
|
75 |
/**
|
76 |
* DOCUMENT ME!
|
77 |
*
|
78 |
* @param string DOCUMENT ME!
|
79 |
*/
|
80 |
public void setName(String string) { |
81 |
super.setName(string);
|
82 |
|
83 |
if (modelo != null) { |
84 |
modelo.setName(string); |
85 |
} |
86 |
} |
87 |
|
88 |
/**
|
89 |
* Establece el valor del bit index-?simo al valor 'value'
|
90 |
*
|
91 |
* @param bitIndex indice del bit que se quiere tocar
|
92 |
* @param value valor que se quiere establecer en el bit indicado
|
93 |
*/
|
94 |
public void set(int bitIndex, boolean value) { |
95 |
//TODO implementar bien
|
96 |
// modelo.set(bitIndex, value);
|
97 |
change.firePropertyChange("visibles", value, value);
|
98 |
} |
99 |
|
100 |
/**
|
101 |
* DOCUMENT ME!
|
102 |
*
|
103 |
* @param baseName
|
104 |
* @param sds DOCUMENT ME!
|
105 |
*
|
106 |
* @return
|
107 |
*/
|
108 |
public static ProjectTable createTable(String baseName, |
109 |
SelectableDataSource sds) { |
110 |
ProjectTable t = new ProjectTable();
|
111 |
t.modelo = sds; |
112 |
|
113 |
t.setName(baseName); |
114 |
t.setCreationDate(DateFormat.getInstance().format(new Date())); |
115 |
numTables++; |
116 |
|
117 |
return t;
|
118 |
} |
119 |
|
120 |
//TODO implementar bien
|
121 |
|
122 |
/*
|
123 |
* @param baseName
|
124 |
* @return
|
125 |
*
|
126 |
public static ProjectTable createTable(String viewName, FTable ftable) {
|
127 |
Table t = new Table();
|
128 |
t.setName(viewName + " - Datos");
|
129 |
t.setCreationDate(DateFormat.getInstance().format(new Date()));
|
130 |
t.setModelo(ftable);
|
131 |
numTables++;
|
132 |
return t;
|
133 |
}*/
|
134 |
|
135 |
/**
|
136 |
* DOCUMENT ME!
|
137 |
*
|
138 |
* @return DOCUMENT ME!
|
139 |
*
|
140 |
* @throws DriverException
|
141 |
*/
|
142 |
public XMLEntity getXMLEntity() {
|
143 |
XMLEntity xml = super.getXMLEntity();
|
144 |
xml.putProperty("nameClass", this.getClass().getName()); |
145 |
xml.putProperty("numTables", numTables);
|
146 |
xml.addChild(modelo.getXMLEntity()); |
147 |
|
148 |
DriverInfo di = DataSourceFactory.getDriverInfo(modelo.getName()); |
149 |
xml.putProperty("driverName", di.driverName);
|
150 |
xml.putProperty("name", di.name);
|
151 |
xml.putProperty("dbms", di.dbms);
|
152 |
|
153 |
if (associatedTable != null) { |
154 |
xml.putProperty("nameLayer", ((FLayer) associatedTable).getName());
|
155 |
} |
156 |
|
157 |
if (di instanceof FileDriverInfo) { |
158 |
xml.putProperty("type", "file"); |
159 |
xml.putProperty("file", ((FileDriverInfo) di).file);
|
160 |
} else if (di instanceof DBDriverInfo) { |
161 |
xml.putProperty("type", "db"); |
162 |
|
163 |
DBDriverInfo dbdi = (DBDriverInfo) di; |
164 |
|
165 |
xml.putProperty("host", dbdi.host);
|
166 |
xml.putProperty("port", dbdi.port);
|
167 |
xml.putProperty("user", dbdi.user);
|
168 |
xml.putProperty("password", dbdi.password);
|
169 |
xml.putProperty("dbName", dbdi.dbName);
|
170 |
xml.putProperty("tableName", dbdi.sqlQuery);
|
171 |
xml.putProperty("driverInfo", dbdi.driverInfo);
|
172 |
} |
173 |
|
174 |
return xml;
|
175 |
} |
176 |
|
177 |
/*private void setProjectTable(ProjectTable pt){
|
178 |
numTables=ProjectTable.numTables;
|
179 |
associatedTable=pt.associatedTable;
|
180 |
modelo=pt.modelo;
|
181 |
}
|
182 |
*/
|
183 |
/*public void setSelectionSupport(SelectionSupport ss){
|
184 |
modelo.setSelectionSupport(ss);
|
185 |
}
|
186 |
*/
|
187 |
|
188 |
/**
|
189 |
* DOCUMENT ME!
|
190 |
*
|
191 |
* @param xml DOCUMENT ME!
|
192 |
* @param p DOCUMENT ME!
|
193 |
*
|
194 |
* @throws XMLException
|
195 |
* @throws DriverException
|
196 |
*
|
197 |
* @see com.iver.cit.gvsig.project.castor.ProjectElement#setXMLEntity(com.iver.utiles.XMLEntity)
|
198 |
*/
|
199 |
public void setXMLEntity(XMLEntity xml, Project p) |
200 |
throws XMLException, DriverException {
|
201 |
numTables = xml.getIntProperty("numViews");
|
202 |
|
203 |
if (xml.getStringProperty("nameLayer") != null) { |
204 |
nameLayer = xml.getStringProperty("nameLayer");
|
205 |
} |
206 |
|
207 |
if (xml.getStringProperty("type").equals("file")) { |
208 |
DataSourceFactory.addFileDataSource(xml.getStringProperty( |
209 |
"driverName"), xml.getStringProperty("name"), |
210 |
xml.getStringProperty("file"), xml.getStringProperty("dbms")); |
211 |
|
212 |
DataSource dataSource;
|
213 |
|
214 |
try {
|
215 |
dataSource = DataSourceFactory.createRandomDataSource(xml.getStringProperty( |
216 |
"name"));
|
217 |
} catch (NoSuchTableException e) {
|
218 |
throw new XMLException(e); |
219 |
} catch (DriverLoadException e) {
|
220 |
throw new XMLException(e); |
221 |
} |
222 |
|
223 |
ProjectTable pt = ProjectFactory.createTable(xml.getStringProperty( |
224 |
"nameLayer"),
|
225 |
new SelectableDataSource(xml.getStringProperty("name"), |
226 |
dataSource)); |
227 |
|
228 |
for (int i = 0; i < p.getViews().size(); i++) { |
229 |
FLayer layer = ((ProjectView) p.getViews().get(i)).getMapContext() |
230 |
.getLayers().getLayer(getNameLayer()); |
231 |
|
232 |
if (layer.getName().equals(getNameLayer())) {
|
233 |
try {
|
234 |
modelo = ((AlphanumericData) layer).getRecordset(); |
235 |
} catch (com.iver.cit.gvsig.fmap.DriverException e1) {
|
236 |
throw new DriverException(e1); |
237 |
} |
238 |
|
239 |
numTables = ProjectTable.numTables; |
240 |
associatedTable = (AlphanumericData) layer; |
241 |
} |
242 |
} |
243 |
} else if (xml.getStringProperty("type").equals("db")) { |
244 |
DataSourceFactory.addDBDataSource(xml.getStringProperty("name"),
|
245 |
xml.getStringProperty("host"), xml.getIntProperty("port"), |
246 |
xml.getStringProperty("user"),
|
247 |
xml.getStringProperty("password"),
|
248 |
xml.getStringProperty("dbName"),
|
249 |
xml.getStringProperty("tableName"),
|
250 |
xml.getStringProperty("driverName"));
|
251 |
} |
252 |
|
253 |
setName(xml.getStringProperty("name"));
|
254 |
} |
255 |
|
256 |
/**
|
257 |
* DOCUMENT ME!
|
258 |
*
|
259 |
* @param associatedTable DOCUMENT ME!
|
260 |
*
|
261 |
* @throws DriverLoadException DOCUMENT ME!
|
262 |
*/
|
263 |
|
264 |
public AlphanumericData getAssociatedTable() {
|
265 |
return associatedTable;
|
266 |
} |
267 |
|
268 |
|
269 |
/**
|
270 |
* DOCUMENT ME!
|
271 |
*
|
272 |
* @param associatedTable DOCUMENT ME!
|
273 |
*
|
274 |
* @throws DriverLoadException
|
275 |
*/
|
276 |
public void setAssociatedTable(AlphanumericData associatedTable) { |
277 |
this.associatedTable = associatedTable;
|
278 |
} |
279 |
|
280 |
/**
|
281 |
* DOCUMENT ME!
|
282 |
*
|
283 |
* @return DOCUMENT ME!
|
284 |
*/
|
285 |
public String getNameLayer() { |
286 |
return nameLayer;
|
287 |
} |
288 |
} |