View Javadoc

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  	 * TABLE_CAT String => table catalog (may be null) TABLE_SCHEM String =>
19  	 * table schema (may be null) TABLE_NAME String => table name TABLE_TYPE
20  	 * String => table type. Typical types are "TABLE", "VIEW", "SYSTEM TABLE",
21  	 * "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM". REMARKS String =>
22  	 * explanatory comment on the table
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 		// return (TableColInfo[]) list.toArray(new TableColInfo[list.size()]);
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 }