Re: [Squirrel-sql-develop] Object Tree
A Java SQL client for any JDBC compliant database
Brought to you by:
colbell,
gerdwagner
From: Colin B. <col...@te...> - 2002-08-10 23:04:22
|
Hi Johan, I've moved this discussion to the dev list in case anybody else has some input. > i have seen youre new tree (nice those popup's!! :)) Thanks. Slowly getting there. > 1> Why are tables also leafs? Are you planning to show column's as > a child? I'm still not finished. I haven't put in the code (actually I'm doing it right now) to flag whether nodes are leaves or not. Only if an expander is registered for the node type or the node will it be able to be expanded otherwise it will appear as a leaf. I also still have to put in your code for saving/restoring the state of the tree when its refreshed. The ability will be there to add nodes to the table nodes for things like columns, primary keys etc. but I hadn't intended to do it right away. > 2> The splitpane sometimes is completely to the right, i believe > it is because > there is nothing shown in it currenlty. I believe its a timing issue, the empty panel isn't added to the details display soon enough. Should be fixed shortly. > Can we store much more information in a ITableInfo? > Because i need calls like getPrimaryKeys() or getForeignKeys() > Of course i can get those like you do in the tabpanes: > ResultSet rs = session.getSQLConnection().getPrimaryKeys(ti); What I had in mind was moving all the metadata methods out of SQLConnection and into their own class, its starting to get messy. At the moment they are just very thin wrappers around the JDBC calls, I.E. returning result set objects which you have to know the format of. What I had in mind was something like: public class SQLDatabaseMetaData { IPrimaryKeyInfo getPrimaryKeys(ITableInfo); } public interface IPrimaryKeyInfo extends IDatabaseObjectInfo { // super.getSimpleName() would return the name of the primary key // which could be null. IPrimaryKeyEntry[] getEntries(); } public interface IPrimaryKeyEntry { int getSequence(); String getColumnName(); // possibly a ColumnInfo object of some sort. } Doing it this way gives us an infrastructure for adding this kind of information to the object tree. The other thing I was thinking about was caching this information in the metadata class. I.E. the first time you called it it would be loaded from the connection, from then on it would be loaded from memory, whenever the object tree got refreshed we would blow away the meta data info and allow it to be loaded on demand again. As I refactor the SQLConnection class something else I want to do is get rid of the BaseSQLException class and replace it with java.sql.SQLException. Its turned out to be a pointless class whose only effect appears to be complicating error handling. Any comments, ideas, gripes? -- Colin Bell http://squirrel-sql.sf.net |