1 package salto.tool.sql.data;
2
3 import java.sql.Connection;
4 import java.util.ArrayList;
5 import java.util.Arrays;
6 import java.util.List;
7
8 import salto.tool.sql.ConnectionInfo;
9 import salto.tool.sql.DatabaseInfo;
10
11 /***
12 * Objet de donn�e repr�sentant la description d'une table
13 *
14 * @author : eloiez@salto-consulting.com
15 */
16 public class TableInfo {
17
18
19
20
21
22
23
24 /***
25 * le catalogue
26 */
27 protected String tableCat;
28
29 /***
30 * le sch�ma
31 */
32 protected String tableShem;
33
34 /***
35 * nom de la table
36 */
37 protected String tableName;
38
39 /***
40 * type de table. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL
41 * TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
42 */
43 protected String tableType;
44
45 /***
46 * commentaire
47 */
48 protected String tableRemarks;
49
50 /***
51 * information de connection
52 */
53 protected ConnectionInfo connInfo;
54
55 /***
56 * description des colonnes
57 */
58 protected TableColInfo[] colInfos;
59
60 /***
61 * les colonnes de la cl� primaire
62 */
63 protected TablePK[] pk = null;
64
65 /***
66 * les cl�s �trang�res
67 */
68 protected TableFK[][] importedFk = null;
69
70 /***
71 * les cl�s �trang�res (la table est ma�tre)
72 */
73 protected TableFK[][] exportedFk = null;
74
75 private Connection conn;
76
77 private ShemaInfo shemaInfo;
78
79 /***
80 * @return Returns the shemaInfo.
81 */
82 public ShemaInfo getShemaInfo() {
83 return shemaInfo;
84 }
85
86 /***
87 * @param shemaInfo
88 * The shemaInfo to set.
89 */
90 public void setShemaInfo(ShemaInfo shemaInfo) {
91 this.shemaInfo = shemaInfo;
92 }
93
94 /***
95 * @return Returns the conn.
96 */
97 public Connection getConn() {
98 return conn;
99 }
100
101 /***
102 * @param conn
103 * The conn to set.
104 */
105 public void setConn(Connection conn) {
106 this.conn = conn;
107 }
108
109 /***
110 * Commentaire relatif au constructeur TableInfo.
111 */
112 public TableInfo() {
113 super();
114 }
115
116 public TableInfo(TableInfo tableInfo) {
117 this();
118 tableCat = tableInfo.tableCat;
119 tableShem = tableInfo.tableShem;
120 tableName = tableInfo.tableName;
121 tableType = tableInfo.tableType;
122 tableRemarks = tableInfo.tableRemarks;
123 connInfo = tableInfo.connInfo;
124 colInfos = tableInfo.colInfos;
125 pk = tableInfo.pk;
126 importedFk = tableInfo.importedFk;
127 exportedFk = tableInfo.exportedFk;
128
129 }
130
131 /***
132 * @param conn
133 */
134 public TableInfo(ShemaInfo shemaInfo) {
135 this.shemaInfo = shemaInfo;
136 this.conn = shemaInfo.getConn();
137 this.connInfo = shemaInfo.getConnInfo();
138 }
139
140 /***
141 * Ins�rez la description de la m�thode � cet endroit. Date de
142 * cr�ation : (28/01/01 9:21:29)
143 *
144 * @return java.lang.String
145 */
146 public java.lang.String getTableCat() {
147 return tableCat;
148 }
149
150 /***
151 * Ins�rez la description de la m�thode � cet endroit. Date de
152 * cr�ation : (28/01/01 9:21:29)
153 *
154 * @return java.lang.String
155 */
156 public java.lang.String getTableName() {
157 return tableName;
158 }
159
160 /***
161 * Ins�rez la description de la m�thode � cet endroit. Date de
162 * cr�ation : (28/01/01 9:21:29)
163 *
164 * @return java.lang.String
165 */
166 public java.lang.String getTableRemarks() {
167 return tableRemarks;
168 }
169
170 /***
171 * Ins�rez la description de la m�thode � cet endroit. Date de
172 * cr�ation : (28/01/01 9:21:29)
173 *
174 * @return java.lang.String
175 */
176 public java.lang.String getTableShem() {
177 return tableShem;
178 }
179
180 /***
181 * Ins�rez la description de la m�thode � cet endroit. Date de
182 * cr�ation : (28/01/01 9:21:29)
183 *
184 * @return java.lang.String
185 */
186 public java.lang.String getTableType() {
187 return tableType;
188 }
189
190 /***
191 * Ins�rez la description de la m�thode � cet endroit. Date de
192 * cr�ation : (28/01/01 9:21:29)
193 *
194 * @param newTableCat
195 * java.lang.String
196 */
197 public void setTableCat(java.lang.String newTableCat) {
198 tableCat = newTableCat;
199 }
200
201 /***
202 * Ins�rez la description de la m�thode � cet endroit. Date de
203 * cr�ation : (28/01/01 9:21:29)
204 *
205 * @param newTableName
206 * java.lang.String
207 */
208 public void setTableName(java.lang.String newTableName) {
209 tableName = newTableName;
210 }
211
212 /***
213 * Ins�rez la description de la m�thode � cet endroit. Date de
214 * cr�ation : (28/01/01 9:21:29)
215 *
216 * @param newTableRemarks
217 * java.lang.String
218 */
219 public void setTableRemarks(java.lang.String newTableRemarks) {
220 tableRemarks = newTableRemarks;
221 }
222
223 /***
224 * Ins�rez la description de la m�thode � cet endroit. Date de
225 * cr�ation : (28/01/01 9:21:29)
226 *
227 * @param newTableShem
228 * java.lang.String
229 */
230 public void setTableShem(java.lang.String newTableShem) {
231 tableShem = newTableShem;
232 }
233
234 /***
235 * Ins�rez la description de la m�thode � cet endroit. Date de
236 * cr�ation : (28/01/01 9:21:29)
237 *
238 * @param newTableType
239 * java.lang.String
240 */
241 public void setTableType(java.lang.String newTableType) {
242 tableType = newTableType;
243 }
244
245 /***
246 * Gets the connInfo.
247 *
248 * @return Returns a ConnectionInfo
249 */
250 public ConnectionInfo getConnInfo() {
251 return connInfo;
252 }
253
254 /***
255 * Sets the connInfo.
256 *
257 * @param connInfo
258 * The connInfo to set
259 */
260 public void setConnInfo(ConnectionInfo connInfo) {
261 this.connInfo = connInfo;
262 }
263
264 /***
265 * Gets the primary key.
266 *
267 * @return Returns a TablePK[]
268 */
269 public TablePK[] getPk() {
270 if (pk == null)
271 pk = DatabaseInfo.getPK(this);
272 return pk;
273 }
274
275 /***
276 * Gets the imported foreign keys.
277 *
278 * @return Returns a TableFK[][]
279 */
280 public TableFK[][] getImportedFk() {
281 if (importedFk == null)
282 importedFk = DatabaseInfo.getImportedFK(this);
283 return importedFk;
284 }
285
286 /***
287 * Gets the exported foreign keys.
288 *
289 * @return Returns a TableFK[][]
290 */
291 public TableFK[][] getExportedFk() {
292 if (exportedFk == null)
293 exportedFk = DatabaseInfo.getExportedFK(this);
294 return exportedFk;
295 }
296
297 public TableFK[][] getFK() {
298 try {
299 ArrayList list = new ArrayList();
300 Object[] obj = getImportedFk();
301 if (obj != null)
302 list.addAll(Arrays.asList(obj));
303 obj = getExportedFk();
304 if (obj != null)
305 list.addAll(Arrays.asList(obj));
306 return (TableFK[][]) list.toArray(new TableFK[list.size()][]);
307 } catch (Exception e) {
308 e.printStackTrace();
309 }
310 return new TableFK[0][0];
311 }
312
313 public TableColInfo[] getColInfos() {
314 return getColInfos(true);
315 }
316
317 /***
318 * @return
319 */
320 public TableColInfo[] getColInfos(boolean find) {
321 if (find && colInfos == null) {
322 colInfos = DatabaseInfo.getColumns(this);
323 }
324 return colInfos;
325 }
326
327 /***
328 * @param infos
329 */
330 public void setColInfos(TableColInfo[] infos) {
331 colInfos = infos;
332 }
333
334 /***
335 * retourne les colonnes qui sont autoincr�ment�s
336 *
337 * @return
338 */
339 public List getAutoIncrementCols() {
340 ArrayList list = new ArrayList();
341 for (int i = 0; i < colInfos.length; i++) {
342 if (colInfos[i].isAutoIncrement()) {
343 list.add(colInfos[i]);
344 }
345 }
346 return list;
347
348 }
349
350 public int getColNum(String colName) {
351 for (int i = 0; i < colInfos.length; i++) {
352 if (colInfos[i].getColName().equals(colName)) {
353 return colInfos[i].getColPosition();
354 }
355 }
356 return -1;
357 }
358
359 public boolean equals(Object object) {
360 return this.tableName.equals(((TableInfo) object).tableName);
361 }
362
363 public int hashCode() {
364 return this.tableName.hashCode();
365 }
366
367 }