You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by fl...@apache.org on 2003/01/28 20:59:14 UTC
cvs commit: jakarta-ojb/src/java/org/apache/ojb/tools/mapping/reversedb DBCatalog.java DBColumn.java DBMeta.java DBSchema.java DBTable.java
florianbruckner 2003/01/28 11:59:14
Modified: src/java/org/apache/ojb/tools/mapping/reversedb
DBCatalog.java DBColumn.java DBMeta.java
DBSchema.java DBTable.java
Log:
some updates to schema reading to make it a bit more compatible
Revision Changes Path
1.3 +85 -118 jakarta-ojb/src/java/org/apache/ojb/tools/mapping/reversedb/DBCatalog.java
Index: DBCatalog.java
===================================================================
RCS file: /home/cvs/jakarta-ojb/src/java/org/apache/ojb/tools/mapping/reversedb/DBCatalog.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DBCatalog.java 17 Jun 2002 19:34:33 -0000 1.2
+++ DBCatalog.java 28 Jan 2003 19:59:14 -0000 1.3
@@ -57,67 +57,9 @@
import java.util.Iterator;
import javax.swing.tree.TreeNode;
-/*
- * ====================================================================
- *
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Jakarta-Regexp", and "Apache Software
- * Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-
/**
*
- * @author <a href="mailto:bfl@florianbruckner.com">Florian Bruckner</a>
+ * @author <a href="mailto:bfl@florianbruckner.com">Florian Bruckner</a>
* @version $Id$
*/
public class DBCatalog implements MetadataNodeInterface, TreeNode, org.apache.ojb.tools.mapping.reversedb.gui.PropertySheetModel
@@ -130,14 +72,14 @@
private String strCatalogName;
private java.util.TreeMap hmSchemas = new java.util.TreeMap();
/** Creates a new instance of DBCatalog */
- public DBCatalog (java.sql.DatabaseMetaData pdbMeta, DBMeta paMeta,
- String pstrCatalogName)
+ public DBCatalog(java.sql.DatabaseMetaData pdbMeta, DBMeta paMeta,
+ String pstrCatalogName)
{
this.dbMeta = pdbMeta;
this.parsedMetaData = paMeta;
this.strCatalogName = pstrCatalogName;
}
-
+
public boolean isEnabled()
{
return this.enabled;
@@ -174,27 +116,45 @@
}
public void generateReferences()
- throws java.sql.SQLException
+ throws java.sql.SQLException
{
+ // Set the catalog name of the connection before accessing the metadata object
+ dbMeta.getConnection().setCatalog(this.getCatalogName());
Iterator it = this.hmSchemas.values().iterator();
while (it.hasNext())
{
((DBSchema)it.next()).generateReferences();
- }
- }
-
+ }
+ }
+
public void read()
- throws java.sql.SQLException
+ throws java.sql.SQLException
{
- Iterator it = this.hmSchemas.values().iterator();
- while (it.hasNext())
+ // Set the catalog name of the connection before accessing the metadata object
+ java.sql.ResultSet rs = dbMeta.getSchemas();
+ int count = 0;
+ while (rs.next())
+ {
+ count++;
+ String strSchemaName = rs.getString("TABLE_SCHEM");
+ // Fix for IBM Informix JDBC 2.21JC2; Schema is padded with spaces, needs to be trimmed
+ strSchemaName = strSchemaName.trim();
+ this.hmSchemas.put(strSchemaName, new DBSchema(dbMeta, this, strSchemaName));
+ }
+ // Fix for MySQL: Create an empty schema
+ if (count == 0)
{
- ((DBSchema)it.next()).read();
- }
- }
-
+ this.hmSchemas.put("", new DBSchema(dbMeta, this, ""));
+ }
+
+ rs.close();
+ Iterator it = hmSchemas.values().iterator();
+ while (it.hasNext()) ((DBSchema)it.next()).read();
+
+ }
+
public void addTable(String strSchemaName, String strTableName, String strTableType)
- throws java.sql.SQLException
+ throws java.sql.SQLException
{
DBSchema aDBSchema= this.getSchema(strSchemaName);
if (aDBSchema == null)
@@ -205,20 +165,20 @@
}
aDBSchema.addTable(strTableName, strTableType);
}
-
+
public void addColumn(String strSchemaName, String strTableName, String strColumnName,
- int iDataType, String strTypeName, int iColumnSize, int iNullable)
+ int iDataType, String strTypeName, int iColumnSize, int iNullable)
{
DBSchema aDBSchema = this.getSchema(strSchemaName);
if (aDBSchema != null)
{
aDBSchema.addColumn(strTableName, strColumnName,
- iDataType, strTypeName, iColumnSize, iNullable);
+ iDataType, strTypeName, iColumnSize, iNullable);
}
}
- public void addPrimaryKeyColumn(String strSchemaName, String strTableName,
- String strColumnName)
+ public void addPrimaryKeyColumn(String strSchemaName, String strTableName,
+ String strColumnName)
{
DBSchema aDBSchema = this.getSchema(strSchemaName);
if (aDBSchema != null)
@@ -228,12 +188,12 @@
}
- public java.util.Enumeration children ()
+ public java.util.Enumeration children()
{
return java.util.Collections.enumeration(this.hmSchemas.values());
}
- public boolean getAllowsChildren ()
+ public boolean getAllowsChildren()
{
return true;
}
@@ -244,7 +204,7 @@
return tn;
}
- public int getChildCount ()
+ public int getChildCount()
{
return this.hmSchemas.size();
}
@@ -260,7 +220,7 @@
return this.parsedMetaData;
}
- public boolean isLeaf ()
+ public boolean isLeaf()
{
return false;
}
@@ -272,7 +232,7 @@
else return this.strCatalogName;
}
- public Class getPropertySheetClass ()
+ public Class getPropertySheetClass()
{
return org.apache.ojb.tools.mapping.reversedb.gui.DBCatalogPropertySheet.class;
}
@@ -288,59 +248,62 @@
return strReturn;
}
- public void generateJava (java.io.File aFile, String strHeader, String strFooter) throws java.io.IOException, java.io.FileNotFoundException
+ public void generateJava(java.io.File aFile, String strHeader, String strFooter) throws java.io.IOException, java.io.FileNotFoundException
{
Iterator i = this.hmSchemas.values().iterator();
- while (i.hasNext()) ((DBSchema)i.next()).generateJava(aFile, strHeader, strFooter);
+ while (i.hasNext()) ((DBSchema)i.next()).generateJava(aFile, strHeader, strFooter);
}
- public void setPackage (String packageName)
+ public void setPackage(String packageName)
{
Iterator i = this.hmSchemas.values().iterator();
- while (i.hasNext()) ((DBSchema)i.next()).setPackage(packageName);
+ while (i.hasNext()) ((DBSchema)i.next()).setPackage(packageName);
}
-
+
public void disableClassesWithRegex(org.apache.regexp.RE aRegexp)
{
Iterator it = this.hmSchemas.values().iterator();
- while (it.hasNext()) ((DBSchema)it.next()).disableClassesWithRegex(aRegexp);
+ while (it.hasNext()) ((DBSchema)it.next()).disableClassesWithRegex(aRegexp);
}
}
/***************************** Changelog *****************************
-// $Log$
-// Revision 1.2 2002/06/17 19:34:33 jvanzyl
-// Correcting all the package references.
-// PR:
-// Obtained from:
-// Submitted by:
-// Reviewed by:
-//
-// Revision 1.1.1.1 2002/06/17 18:16:51 jvanzyl
-// Initial OJB import
-//
-// Revision 1.3 2002/05/16 11:47:09 florianbruckner
-// fix CR/LF issue, change license to ASL
-//
-// Revision 1.2 2002/05/16 10:43:59 florianbruckner
-// use jakarta-regexp instead of gnu-regexp due to the move to jakarta.
-//
-// Revision 1.1 2002/04/18 11:44:16 mpoeschl
-//
-// move files to new location
-//
-// Revision 1.3 2002/04/07 09:05:16 thma
-// *** empty log message ***
-//
-// Revision 1.2 2002/03/11 17:36:04 florianbruckner
-// fix line break issue for these files that were previously checked in with -kb
-//
-// Revision 1.1 2002/03/04 17:19:32 thma
-// initial checking for Florians Reverse engineering tool
-//
-// Revision 1.1.1.1 2002/02/20 13:35:25 Administrator
-// initial import
-//
-/***************************** Changelog *****************************/
+ * // $Log$
+ * // Revision 1.3 2003/01/28 19:59:14 florianbruckner
+ * // some updates to schema reading to make it a bit more compatible
+ * //
+ * // Revision 1.2 2002/06/17 19:34:33 jvanzyl
+ * // Correcting all the package references.
+ * // PR:
+ * // Obtained from:
+ * // Submitted by:
+ * // Reviewed by:
+ * //
+ * // Revision 1.1.1.1 2002/06/17 18:16:51 jvanzyl
+ * // Initial OJB import
+ * //
+ * // Revision 1.3 2002/05/16 11:47:09 florianbruckner
+ * // fix CR/LF issue, change license to ASL
+ * //
+ * // Revision 1.2 2002/05/16 10:43:59 florianbruckner
+ * // use jakarta-regexp instead of gnu-regexp due to the move to jakarta.
+ * //
+ * // Revision 1.1 2002/04/18 11:44:16 mpoeschl
+ * //
+ * // move files to new location
+ * //
+ * // Revision 1.3 2002/04/07 09:05:16 thma
+ * // *** empty log message ***
+ * //
+ * // Revision 1.2 2002/03/11 17:36:04 florianbruckner
+ * // fix line break issue for these files that were previously checked in with -kb
+ * //
+ * // Revision 1.1 2002/03/04 17:19:32 thma
+ * // initial checking for Florians Reverse engineering tool
+ * //
+ * // Revision 1.1.1.1 2002/02/20 13:35:25 Administrator
+ * // initial import
+ * //
+ * /***************************** Changelog *****************************/
1.3 +8 -58 jakarta-ojb/src/java/org/apache/ojb/tools/mapping/reversedb/DBColumn.java
Index: DBColumn.java
===================================================================
RCS file: /home/cvs/jakarta-ojb/src/java/org/apache/ojb/tools/mapping/reversedb/DBColumn.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DBColumn.java 17 Jun 2002 19:34:33 -0000 1.2
+++ DBColumn.java 28 Jan 2003 19:59:14 -0000 1.3
@@ -54,63 +54,6 @@
* <http://www.apache.org/>.
*/
-/*
- * ====================================================================
- *
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Jakarta-Regexp", and "Apache Software
- * Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
/**
*
* @author <a href="mailto:bfl@florianbruckner.com">Florian Bruckner</a>
@@ -370,6 +313,9 @@
/***************************** Changelog *****************************
// $Log$
+// Revision 1.3 2003/01/28 19:59:14 florianbruckner
+// some updates to schema reading to make it a bit more compatible
+//
// Revision 1.2 2002/06/17 19:34:33 jvanzyl
// Correcting all the package references.
// PR:
1.3 +38 -126 jakarta-ojb/src/java/org/apache/ojb/tools/mapping/reversedb/DBMeta.java
Index: DBMeta.java
===================================================================
RCS file: /home/cvs/jakarta-ojb/src/java/org/apache/ojb/tools/mapping/reversedb/DBMeta.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DBMeta.java 17 Jun 2002 19:34:33 -0000 1.2
+++ DBMeta.java 28 Jan 2003 19:59:14 -0000 1.3
@@ -57,64 +57,6 @@
import java.util.Iterator;
import javax.swing.tree.TreeNode;
-/*
- * ====================================================================
- *
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Jakarta-Regexp", and "Apache Software
- * Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-
/**
*
* @author <a href="mailto:bfl@florianbruckner.com">Florian Bruckner</a>
@@ -125,7 +67,9 @@
private boolean enabled = true;
private java.sql.DatabaseMetaData dbMeta;
- private java.util.TreeMap hmCatalogs = new java.util.TreeMap();
+
+ // private java.util.TreeMap hmCatalogs = new java.util.TreeMap();
+ private java.util.HashMap hmCatalogs = new java.util.HashMap();
private String catalogTerm;
private String catalogSeparator;
private boolean isCatalogAtStart;
@@ -136,15 +80,26 @@
private boolean supportsCatalogsInTableDefinitions;
private String schemaTerm;
+ private String catalogPattern;
+ private String schemaPattern;
+
private String databaseProductName = null;
private String databaseProductVersion = null;
/** Creates a new instance of DBSchema */
- public DBMeta (java.sql.DatabaseMetaData pdbMeta) throws java.sql.SQLException
+ public DBMeta (String pCatalogPattern, String pSchemaPattern, java.sql.DatabaseMetaData pDbMeta) throws java.sql.SQLException
{
super();
- dbMeta = pdbMeta;
+ this.dbMeta = pDbMeta;
+ this.catalogPattern = pCatalogPattern;
+ this.schemaPattern = pSchemaPattern;
+ System.err.println("Using " + dbMeta.getDriverName() + " " + dbMeta.getDriverVersion());
+ }
+
+ public DBMeta (java.sql.DatabaseMetaData pDbMeta) throws java.sql.SQLException
+ {
+ this(null, null, pDbMeta);
}
public boolean isEnabled()
@@ -232,67 +187,25 @@
supportsCatalogsInTableDefinitions = dbMeta.supportsCatalogsInTableDefinitions();
schemaTerm = dbMeta.getSchemaTerm();
-
- java.sql.ResultSet rs = dbMeta.getTables("%", "%", "%", null);
- while (rs.next())
+ java.sql.ResultSet rs = dbMeta.getCatalogs();
+ int count = 0;
+ while(rs.next())
{
- String strCatalogName = rs.getString("TABLE_CAT");
- if (strCatalogName == null) strCatalogName = "";
- String strSchemaName = rs.getString("TABLE_SCHEM");
- if (strSchemaName == null) strSchemaName = "";
- String strTableName = rs.getString("TABLE_NAME");
- String strTableType = rs.getString("TABLE_TYPE");
-
- DBCatalog aDBCatalog = (DBCatalog)this.hmCatalogs.get(strCatalogName);
- if (aDBCatalog == null)
- {
- aDBCatalog = new DBCatalog(dbMeta, this, strCatalogName);
+ count++;
+ String strCatalogName = rs.getString("TABLE_CAT");
+ DBCatalog aDBCatalog = new DBCatalog(dbMeta, this, strCatalogName);
this.hmCatalogs.put(strCatalogName, aDBCatalog);
- }
- aDBCatalog.addTable(strSchemaName, strTableName, strTableType);
}
rs.close();
-
- rs = dbMeta.getColumns("%", "%", "%", "%");
- while (rs.next())
- {
- String strCatalogName = rs.getString("TABLE_CAT");
- if (strCatalogName == null) strCatalogName = "";
- String strSchemaName = rs.getString("TABLE_SCHEM");
- if (strSchemaName == null) strSchemaName = "";
- String strTableName = rs.getString("TABLE_NAME");
- String strColumnName = rs.getString("COLUMN_NAME");
- int iDataType = rs.getInt("DATA_TYPE");
- String strTypeName = rs.getString("TYPE_NAME");
- int iColumnSize = rs.getInt("COLUMN_SIZE");
- int iNullable = rs.getInt("NULLABLE");
-
- DBCatalog aDBCatalog = (DBCatalog)this.hmCatalogs.get(strCatalogName);
- if (aDBCatalog != null)
- {
- aDBCatalog.addColumn(strSchemaName, strTableName, strColumnName,
- iDataType, strTypeName, iColumnSize, iNullable);
- }
- }
- rs.close();
-
- rs = this.dbMeta.getPrimaryKeys(null, null, null);
- while (rs.next())
+ if (count==0)
{
- String strCatalogName = rs.getString("TABLE_CAT");
- if (strCatalogName == null) strCatalogName = "";
- String strSchemaName = rs.getString("TABLE_SCHEM");
- if (strSchemaName == null) strSchemaName = "";
- String strTableName = rs.getString("TABLE_NAME");
- String strColumnName = rs.getString("COLUMN_NAME");
-
- DBCatalog aDBCatalog = (DBCatalog)this.hmCatalogs.get(strCatalogName);
- if (aDBCatalog != null)
- {
- aDBCatalog.addPrimaryKeyColumn(strSchemaName, strTableName, strColumnName);
- }
+ DBCatalog aDBCatalog = new DBCatalog(dbMeta, this, null);
+ this.hmCatalogs.put(null, aDBCatalog);
}
- rs.close();
+
+ // Read after closing recordset.
+ Iterator it = hmCatalogs.values().iterator();
+ while (it.hasNext()) ((DBCatalog)it.next()).read();
}
public void generateReferences()
@@ -303,19 +216,11 @@
{
((DBCatalog)it.next()).generateReferences();
}
-
-
-
}
public void debug()
{
-/*
- java.util.Iterator i = this.hmCatalogs.values().iterator();
- while (i.hasNext()) System.out.println(i.next());
- i = this.hmCatalogs.keySet().iterator();
- while (i.hasNext()) System.out.println(i.next());
- */
+
}
public java.util.Enumeration children ()
@@ -409,6 +314,9 @@
/***************************** Changelog *****************************
// $Log$
+// Revision 1.3 2003/01/28 19:59:14 florianbruckner
+// some updates to schema reading to make it a bit more compatible
+//
// Revision 1.2 2002/06/17 19:34:33 jvanzyl
// Correcting all the package references.
// PR:
1.3 +37 -59 jakarta-ojb/src/java/org/apache/ojb/tools/mapping/reversedb/DBSchema.java
Index: DBSchema.java
===================================================================
RCS file: /home/cvs/jakarta-ojb/src/java/org/apache/ojb/tools/mapping/reversedb/DBSchema.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DBSchema.java 17 Jun 2002 19:34:33 -0000 1.2
+++ DBSchema.java 28 Jan 2003 19:59:14 -0000 1.3
@@ -57,64 +57,6 @@
import java.util.Iterator;
import javax.swing.tree.TreeNode;
-/*
- * ====================================================================
- *
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Jakarta-Regexp", and "Apache Software
- * Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-
/**
*
* @author <a href="mailto:bfl@florianbruckner.com">Florian Bruckner</a>
@@ -172,6 +114,35 @@
public void read()
throws java.sql.SQLException
{
+ java.sql.ResultSet rs = dbMeta.getTables(this.getDBCatalog().getCatalogName(), this.getSchemaName(), "%", null);
+ while (rs.next())
+ {
+ String strTableCat = rs.getString("TABLE_CAT");
+ String strSchemaName = rs.getString("TABLE_SCHEM");
+ String strTableName = rs.getString("TABLE_NAME");
+ String strTableType = rs.getString("TABLE_TYPE");
+ if (
+ (strTableCat == null && this.getDBCatalog().getCatalogName() == null || strTableCat.equals(this.getDBCatalog().getCatalogName()))
+ &&(strSchemaName == null && this.getSchemaName() == null || strSchemaName.equals(this.getSchemaName()))
+ )
+ this.addTable(strTableName, strTableType);
+ }
+ rs.close();
+
+ rs = dbMeta.getColumns(this.getDBCatalog().getCatalogName(), this.getSchemaName(), "%", "%");
+ while (rs.next())
+ {
+ String strSchemaName = rs.getString("TABLE_SCHEM");
+ String strTableName = rs.getString("TABLE_NAME");
+ String strColumnName = rs.getString("COLUMN_NAME");
+ int iDataType = rs.getInt("DATA_TYPE");
+ String strTypeName = rs.getString("TYPE_NAME");
+ int iColumnSize = rs.getInt("COLUMN_SIZE");
+ int iNullable = rs.getInt("NULLABLE");
+ this.addColumn(strTableName, strColumnName,
+ iDataType, strTypeName, iColumnSize, iNullable);
+ }
+ rs.close();
}
public void addTable(String strTableName, String strTableType)
@@ -300,6 +271,9 @@
/***************************** Changelog *****************************
// $Log$
+// Revision 1.3 2003/01/28 19:59:14 florianbruckner
+// some updates to schema reading to make it a bit more compatible
+//
// Revision 1.2 2002/06/17 19:34:33 jvanzyl
// Correcting all the package references.
// PR:
1.3 +156 -215 jakarta-ojb/src/java/org/apache/ojb/tools/mapping/reversedb/DBTable.java
Index: DBTable.java
===================================================================
RCS file: /home/cvs/jakarta-ojb/src/java/org/apache/ojb/tools/mapping/reversedb/DBTable.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DBTable.java 17 Jun 2002 19:34:33 -0000 1.2
+++ DBTable.java 28 Jan 2003 19:59:14 -0000 1.3
@@ -58,64 +58,6 @@
import java.sql.SQLException;
import java.io.File;
-/*
- * ====================================================================
- *
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Jakarta-Regexp", and "Apache Software
- * Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-
/**
*
* @author <a href="mailto:bfl@florianbruckner.com">Florian Bruckner</a>
@@ -149,6 +91,7 @@
id = IdGeneratorSingleton.getId(this.getClass().getName(), this.getClass().getName());
aSchema = paSchema;
dbMeta = pdbMeta;
+ System.err.println(System.currentTimeMillis() + ": >> New Table " + this.getDBSchema().getDBCatalog().getCatalogName() + ":" + this.getDBSchema().getSchemaName() + ":" + this.getTableName());
}
public boolean hasDynamicProxy()
@@ -263,32 +206,7 @@
public void read() throws SQLException
{
-/*
- // Query for all Schemas because the Informix JDBC driver is too stupid
- // to return columns if the schema name is set.....
- java.sql.ResultSet rs = dbMeta.getColumns("%", "%", strTableName, "%");
- while (rs.next())
- {
- String strCatalogName = rs.getString("TABLE_CAT");
- if (strCatalogName == null) strCatalogName = "";
- String strSchemaName = rs.getString("TABLE_SCHEM");
- if (strSchemaName == null) strSchemaName = "";
- if (strSchemaName.equals(aSchema.getSchemaName()) &&
- strCatalogName.equals(aSchema.getDBCatalog().getCatalogName()))
- {
- int iColumnType = rs.getInt("DATA_TYPE");
- String strColumnTypeName = rs.getString("TYPE_NAME");
- String strColumnName = rs.getString("COLUMN_NAME");
- DBColumn col = new DBColumn(dbMeta, this, strColumnName, iColumnType,
- strColumnTypeName);
- tmColumns.put (strColumnName, col);
-// System.out.println(" " + strColumnName + " "
-// + Utilities.getTypeNameFromJDBCType(iColumnType) + " " + strColumnTypeName);
- col.read();
- }
- }
- rs.close();
- */
+
}
public void addColumn(String strColumnName,
@@ -309,7 +227,6 @@
public void generateReferences() throws SQLException
{
-
// Check if primary keys for this table have already been set. If not, do it now...
// This is necessary because Oracle doesn't return the Primary Keys for all tables
// and for Informix it speeds up things significantly if we do it onve for all tables.
@@ -326,30 +243,6 @@
vSubTreeNodes.addAll(this.hmReferences.values());
}
-/* private void readPrimaryKeys()
- {
- rs = this.dbMeta.getPrimaryKeys(null, null, this.getTableName());
- while (rs.next())
- {
- String strCatalogName = rs.getString("TABLE_CAT");
- if (strCatalogName == null) strCatalogName = "";
- String strSchemaName = rs.getString("TABLE_SCHEM");
- if (strSchemaName == null) strSchemaName = "";
- String strTableName = rs.getString("TABLE_NAME");
- String strColumnName = rs.getString("COLUMN_NAME");
-
-
- if (strCatalogName.equals(this.getDBSchema().getDBCatalog().getCatalogName())
- && strSchemaName.equals(this.getDBSchema().getSchemaName())
- && strTableName.equals(this.getTableName()))
- {
- this.addPrimaryKeyColumn(strColumnName);
- }
- }
- rs.close();
- }
- */
-
public java.util.Enumeration children ()
{
return vSubTreeNodes.elements();
@@ -396,148 +289,189 @@
private void readPrimaryKeys() throws SQLException
{
- // Now get the primary keys for this table
- java.sql.ResultSet rs = dbMeta.getPrimaryKeys("%", "%", this.strTableName);
- while (rs.next())
- {
- String strCatalogName = rs.getString("TABLE_CAT");
- if (strCatalogName == null) strCatalogName = "";
- String strSchemaName = rs.getString("TABLE_SCHEM");
- if (strSchemaName == null) strSchemaName = "";
- if (strSchemaName.equals(this.aSchema.getSchemaName()) &&
- strCatalogName.equals(this.aSchema.getDBCatalog().getCatalogName()))
- {
- String strColumnName = rs.getString("COLUMN_NAME");
- String pkName = rs.getString("PK_NAME");
-// System.out.println(" PK:" + strColumnName + " " + pkName);
- DBColumn dbcol = (DBColumn)tmColumns.get(strColumnName);
- if (dbcol != null) dbcol.setPrimaryKeyPart(true);
+ // Now get the primary keys for this table. Ignore any exceptions thrown here as
+ // primary keys are not absolutely necessary for reverse engineering
+ java.sql.ResultSet rs = null;
+ try
+ {
+ rs = dbMeta.getPrimaryKeys(null,
+ this.getDBSchema().getSchemaName(), this.strTableName);
+ while (rs.next())
+ {
+ String strCatalogName = rs.getString("TABLE_CAT");
+ String strSchemaName = rs.getString("TABLE_SCHEM");
+ if ( (strSchemaName == null && this.aSchema.getSchemaName() == null || strSchemaName.equals(this.aSchema.getSchemaName()))
+ &&
+ (strCatalogName == null && this.aSchema.getDBCatalog().getCatalogName() == null
+ || strCatalogName.equals(this.aSchema.getDBCatalog().getCatalogName())))
+ {
+ String strColumnName = rs.getString("COLUMN_NAME");
+ String pkName = rs.getString("PK_NAME");
+ DBColumn dbcol = (DBColumn)tmColumns.get(strColumnName);
+ if (dbcol != null) dbcol.setPrimaryKeyPart(true);
+ }
}
}
- rs.close();
+ catch (SQLException sqlEx)
+ {
+ // Ignore excpetions here.
+ }
+ finally
+ {
+ try
+ {
+ rs.close();
+ }
+ catch (Throwable t)
+ {} // Ignore this exception
+ }
}
private void generateFKReferences() throws SQLException
{
// References, points from this class to another class using attributes
// of this class
- java.sql.ResultSet rs = dbMeta.getImportedKeys(null, null, strTableName);
- while (rs.next())
+ // Ignore any exceptions thrown here.
+ java.sql.ResultSet rs = null;
+ try
{
- String strFKSchemaName = rs.getString("FKTABLE_SCHEM");
- if (strFKSchemaName == null) strFKSchemaName = "";
- String strFKCatalogName = rs.getString("FKTABLE_CAT");
- if (strFKCatalogName == null) strFKCatalogName = "";
-
- if ( strFKCatalogName.equals(this.aSchema.getDBCatalog().getCatalogName())
- && strFKSchemaName.equals(this.aSchema.getSchemaName()))
+ rs = dbMeta.getImportedKeys(this.getDBSchema().getDBCatalog().getCatalogName(),
+ this.getDBSchema().getSchemaName(), strTableName);
+ while (rs.next())
{
- String strPKCatalogName = rs.getString("PKTABLE_CAT");
- if (strPKCatalogName == null) strPKCatalogName = "";
- String strPKSchemaName = rs.getString("PKTABLE_SCHEM");
- if (strPKSchemaName == null) strPKSchemaName = "";
- String strPKTableName = rs.getString("PKTABLE_NAME");
- String strPKColumnName = rs.getString("PKCOLUMN_NAME");
- String strFKTableName = rs.getString("FKTABLE_NAME");
- String strFKColumnName = rs.getString("FKCOLUMN_NAME");
-
- // Resolove the primaryKey column
- DBCatalog dbPKCatalog = this.aSchema.getDBCatalog().getDBMeta().getCatalog(strPKCatalogName);
- if (dbPKCatalog != null)
+ String strFKSchemaName = rs.getString("FKTABLE_SCHEM");
+ String strFKCatalogName = rs.getString("FKTABLE_CAT");
+
+ if ( (strFKCatalogName == null && this.aSchema.getDBCatalog().getCatalogName() == null || strFKCatalogName.equals(this.aSchema.getDBCatalog().getCatalogName()))
+ && (strFKSchemaName == null && this.aSchema.getSchemaName() == null || strFKSchemaName.equals(this.aSchema.getSchemaName())))
{
- DBSchema dbPKSchem = (DBSchema)dbPKCatalog.getSchema(strPKSchemaName);
- if (dbPKSchem != null)
+ String strPKCatalogName = rs.getString("PKTABLE_CAT");
+ String strPKSchemaName = rs.getString("PKTABLE_SCHEM");
+ String strPKTableName = rs.getString("PKTABLE_NAME");
+ String strPKColumnName = rs.getString("PKCOLUMN_NAME");
+ String strFKTableName = rs.getString("FKTABLE_NAME");
+ String strFKColumnName = rs.getString("FKCOLUMN_NAME");
+
+ // Resolove the primaryKey column
+ DBCatalog dbPKCatalog = this.aSchema.getDBCatalog().getDBMeta().getCatalog(strPKCatalogName);
+ if (dbPKCatalog != null)
{
- DBTable dbPKTable = dbPKSchem.getTable(strPKTableName);
- if (dbPKTable != null)
+ DBSchema dbPKSchem = (DBSchema)dbPKCatalog.getSchema(strPKSchemaName);
+ if (dbPKSchem != null)
{
- DBColumn dbPKColumn = dbPKTable.getColumn(strPKColumnName);
- // The FK column is always from this table.
- DBColumn dbFKColumn = getColumn(strFKColumnName);
-
- // Now retrieve the FKReference to this table from the collection
- DBFKRelation aFKRef =
- (DBFKRelation)this.hmReferences.get(dbPKSchem.getSchemaName()
- + "." + dbPKTable.getTableName());
- if (aFKRef == null)
+ DBTable dbPKTable = dbPKSchem.getTable(strPKTableName);
+ if (dbPKTable != null)
{
- aFKRef = new DBFKRelation(dbPKTable, this, false);
- this.hmReferences.put(dbPKSchem.getSchemaName()
- + "." + dbPKTable.getTableName(), aFKRef);
+ DBColumn dbPKColumn = dbPKTable.getColumn(strPKColumnName);
+ // The FK column is always from this table.
+ DBColumn dbFKColumn = getColumn(strFKColumnName);
+
+ // Now retrieve the FKReference to this table from the collection
+ DBFKRelation aFKRef =
+ (DBFKRelation)this.hmReferences.get(dbPKSchem.getSchemaName()
+ + "." + dbPKTable.getTableName());
+ if (aFKRef == null)
+ {
+ aFKRef = new DBFKRelation(dbPKTable, this, false);
+ this.hmReferences.put(dbPKSchem.getSchemaName()
+ + "." + dbPKTable.getTableName(), aFKRef);
+ }
+ aFKRef.addColumnPair(dbPKColumn, dbFKColumn);
}
- aFKRef.addColumnPair(dbPKColumn, dbFKColumn);
}
}
}
}
}
- rs.close();
+ catch (SQLException sqlEx)
+ {
+ // sqlEx.printStackTrace();
+ }
+ try
+ {
+ rs.close();
+ }
+ catch (Throwable t) {}
}
private void generateFKCollections() throws SQLException
{
// Collections, points from this class to a collection of objects using
// attributes from the referenced class
- java.sql.ResultSet rs = dbMeta.getCrossReference(null, null, strTableName, null, null, null);
- while (rs.next())
+ // Ignore any exceptions thrown here
+ java.sql.ResultSet rs = null;
+ try
{
- String strPKSchemaName = rs.getString("PKTABLE_SCHEM");
- if (strPKSchemaName == null) strPKSchemaName = "";
- String strPKCatalogName = rs.getString("PKTABLE_CAT");
- if (strPKCatalogName == null) strPKCatalogName = "";
-
- if ( strPKSchemaName.equals(this.aSchema.getSchemaName())
- &&strPKCatalogName.equals(this.aSchema.getDBCatalog().getCatalogName()))
- {
- String strPKTableName = rs.getString("PKTABLE_NAME");
- String strPKColumnName = rs.getString("PKCOLUMN_NAME");
- String strFKCatalogName= rs.getString("FKTABLE_CAT");
- if (strFKCatalogName == null) strFKCatalogName = "";
- String strFKTableName = rs.getString("FKTABLE_NAME");
- String strFKColumnName = rs.getString("FKCOLUMN_NAME");
- String strFKSchemaName = rs.getString("FKTABLE_SCHEM");
- if (strFKSchemaName == null) strFKSchemaName = "";
- // Resolve the FK column. If catalog is supported in the index
- // definition, resolve the catalog of the FK column, otherwise
- // assume the current catalog (Note: This is needed for Informix,
- // because the driver reports null for the catalog in this case.
- DBCatalog dbFKCatalog = null;
- if (this.aSchema.getDBCatalog().getDBMeta().getSupportsCatalogsInIndexDefinitions())
- {
- dbFKCatalog = this.aSchema.getDBCatalog().getDBMeta().getCatalog(strFKCatalogName);
- }
- else
- {
- dbFKCatalog = this.aSchema.getDBCatalog();
- }
- if (dbFKCatalog != null)
+ rs = dbMeta.getExportedKeys(this.getDBSchema().getDBCatalog().getCatalogName(),
+ this.getDBSchema().getSchemaName(), strTableName);
+ while (rs.next())
+ {
+ String strPKSchemaName = rs.getString("PKTABLE_SCHEM");
+ String strPKCatalogName = rs.getString("PKTABLE_CAT");
+
+ if ( (strPKSchemaName == null && this.aSchema.getSchemaName()==null || strPKSchemaName.equals(this.aSchema.getSchemaName()))
+ && (strPKCatalogName == null && this.aSchema.getDBCatalog().getCatalogName() == null
+ || strPKCatalogName.equals(this.aSchema.getDBCatalog().getCatalogName())))
{
- DBSchema dbFKSchema = dbFKCatalog.getSchema(strFKSchemaName);
- if (dbFKSchema != null)
+ String strPKTableName = rs.getString("PKTABLE_NAME");
+ String strPKColumnName = rs.getString("PKCOLUMN_NAME");
+ String strFKCatalogName= rs.getString("FKTABLE_CAT");
+ String strFKTableName = rs.getString("FKTABLE_NAME");
+ String strFKColumnName = rs.getString("FKCOLUMN_NAME");
+ String strFKSchemaName = rs.getString("FKTABLE_SCHEM");
+
+ // Resolve the FK column. If catalog is supported in the index
+ // definition, resolve the catalog of the FK column, otherwise
+ // assume the current catalog (Note: This is needed for Informix,
+ // because the driver reports null for the catalog in this case.
+ DBCatalog dbFKCatalog = null;
+ if (this.aSchema.getDBCatalog().getDBMeta().getSupportsCatalogsInIndexDefinitions())
+ {
+ dbFKCatalog = this.aSchema.getDBCatalog().getDBMeta().getCatalog(strFKCatalogName);
+ }
+ else
{
- DBTable dbFKTable = dbFKSchema.getTable(strFKTableName);
- if (dbFKTable != null)
+ dbFKCatalog = this.aSchema.getDBCatalog();
+ }
+ if (dbFKCatalog != null)
+ {
+ DBSchema dbFKSchema = dbFKCatalog.getSchema(strFKSchemaName);
+ if (dbFKSchema != null)
{
- DBColumn dbFKColumn = dbFKTable.getColumn(strFKColumnName);
- // The PK column is always from this table
- DBColumn dbPKColumn = getColumn(strPKColumnName);
- //Retrieve the FK Reference for the FK Table
- DBFKRelation aFKRef =
- (DBFKRelation)this.hmCollections.get(dbFKSchema.getSchemaName()
- + "." + dbFKTable.getTableName());
- if (aFKRef == null)
+ DBTable dbFKTable = dbFKSchema.getTable(strFKTableName);
+ if (dbFKTable != null)
{
- aFKRef = new DBFKRelation(this, dbFKTable, true);
- this.hmCollections.put(dbFKSchema.getSchemaName()
- + "." + dbFKTable.getTableName(), aFKRef);
+ DBColumn dbFKColumn = dbFKTable.getColumn(strFKColumnName);
+ // The PK column is always from this table
+ DBColumn dbPKColumn = getColumn(strPKColumnName);
+ //Retrieve the FK Reference for the FK Table
+ DBFKRelation aFKRef =
+ (DBFKRelation)this.hmCollections.get(dbFKSchema.getSchemaName()
+ + "." + dbFKTable.getTableName());
+ if (aFKRef == null)
+ {
+ aFKRef = new DBFKRelation(this, dbFKTable, true);
+ this.hmCollections.put(dbFKSchema.getSchemaName()
+ + "." + dbFKTable.getTableName(), aFKRef);
+ }
+ aFKRef.addColumnPair(dbPKColumn, dbFKColumn);
}
- aFKRef.addColumnPair(dbPKColumn, dbFKColumn);
}
}
}
}
}
- rs.close();
+ catch (SQLException sqlEx)
+ {
+ // sqlEx.printStackTrace();
+ }
+ try
+ {
+ rs.close();
+ }
+ catch (Throwable t)
+ {
+ }
}
@@ -692,6 +626,9 @@
/***************************** Changelog *****************************
// $Log$
+// Revision 1.3 2003/01/28 19:59:14 florianbruckner
+// some updates to schema reading to make it a bit more compatible
+//
// Revision 1.2 2002/06/17 19:34:33 jvanzyl
// Correcting all the package references.
// PR: