org.rdtdm.db
Class DBFeeder

java.lang.Object
  |
  +--org.rdtdm.db.DBFeeder

public class DBFeeder
extends java.lang.Object

DBFeeder kapselt den Zugriff auf die Datenbank. Zur Zeit werden mySQL und oracle unterst?tzt.


Copyright (c) 2001 by Dirk Münstermann
All Rights Reserved

Version:
$Revision: 1.5 $ ($Date: 2001/11/04 17:31:56 $)
Changelog:
 $Log: DBFeeder.java,v $
 Revision 1.5  2001/11/04 17:31:56  dirk
 removing methodes for postselection of tables

 Revision 1.4  2001/11/04 17:25:26  dirk
 adding methodes for preselection rules of tables

 Revision 1.3  2001/09/26 11:43:11  dirk
 update javadoc comment for the class

 


Author:
Dirk Münstermann

Nested Class Summary
private  class DBFeeder.MyRef
           
 
Field Summary
private  java.sql.Connection con
           
private  java.sql.DatabaseMetaData dbmd
           
private  java.lang.String driver
           
private  java.util.Properties driverProps
           
(package private)  java.util.Collection foreignkeys
           
(package private)  java.util.Hashtable primarykeys
           
private  java.util.Properties props
           
private  java.util.Collection selections
           
private  java.sql.Statement st
           
private  boolean supportsCatalogRefs
           
private  boolean supportsSchemaRefs
           
(package private)  java.util.ArrayList tables
          Beinhaltet alle Tabellen der Datenbank
private  java.lang.String url
           
(package private)  java.util.ArrayList views
          Beinhaltet alle View der Datenbank, die w?hrend der Bearbeitung erzeugt wurden.
 
Constructor Summary
DBFeeder()
           
DBFeeder(java.lang.String driver, java.lang.String url, java.util.Properties props)
           
DBFeeder(java.lang.String driver, java.lang.String url, java.lang.String account, java.lang.String pwd)
           
 
Method Summary
protected  void addForeignKey(Table tab, java.lang.String keyname, java.lang.String colname, java.lang.String keyseq)
           
protected  void addForeignKey(Table tab, java.lang.String fkname, java.lang.String fkcolname, java.lang.String keyseq, java.lang.String pkcat, java.lang.String pkschem, java.lang.String pktabname)
           
protected  void addPrimaryKey(Table tab, java.lang.String keyname, java.lang.String colname, java.lang.String keyseq)
           
 void addSelection(DBRule rule)
           
 void close()
           
 void connect()
          Baut eine Verbindung zur Datenbank auf.
 Table createTableWithNegColname(Table tab)
           
 boolean createView(java.lang.String catalog, java.lang.String schema, java.lang.String viewname, java.lang.String select)
           
 void disconnect()
          Schlie?t eine bestehende Verbindung.
protected  void dropAllViews(java.lang.String views)
           
 void dropAllViews(java.lang.String catalog, java.lang.String schema, java.lang.String viewprefix)
           
 void dropRDTViews()
           
 void dropRDTViews(java.lang.String catalog, java.lang.String schema)
           
 void dropView(java.lang.String catalog, java.lang.String schema, java.lang.String viewname)
           
 void dropViews()
           
 void dropViews(java.lang.String catalog, java.lang.String schema, java.lang.String viewprefix)
           
 java.util.Properties execSingleLineQuery(java.lang.String sql)
           
 java.sql.ResultSet executeQuery(java.lang.String sql)
           
protected  boolean existsInDB(java.lang.String catalog, java.lang.String schema, java.lang.String name, java.lang.String type)
           
protected  boolean existsTable(java.lang.String catalog, java.lang.String schema, java.lang.String viewname)
           
protected  boolean existsView(java.lang.String catalog, java.lang.String schema, java.lang.String viewname)
           
protected  java.sql.ResultSet getCatalogs()
           
private  java.sql.ResultSet getCatalogsPostgreSQL()
           
protected  PrimaryKey getPrimaryKey(Table tab)
          F?gt einen Fremdschl?ssel in die Datenstruktur ein.
 java.util.Properties getProps()
           
 java.util.ArrayList getSelectedTables()
          Liefert alle selektierten Tabellen (postselction) zur?ck, die f?r das Mapping ausgew?hlt wurden.
protected  Table getTable(java.lang.String pkcat, java.lang.String pkschem, java.lang.String pktabname)
           
 java.util.ArrayList getTables()
          Liefert alle Tabellen zur?ck, die f?r das Mapping ausgew?hlt wurden.
protected  java.util.Collection getTypes()
           
 java.lang.Object[] getValues(Table tab, Column col)
           
 java.util.Collection getValuesAsCol(Table tab, Column col)
          F?gt eine Selektion (preselection) bzw. eine Selektionregel hinzu.
 Table getView(java.lang.String catalog, java.lang.String schema, java.lang.String viewname)
           
 java.lang.String getViews(java.lang.String catalog, java.lang.String schema, java.lang.String startswith)
           
 void init()
           
 boolean isSelected(java.lang.String catalog, java.lang.String schema, java.lang.String table)
           
static void main(java.lang.String[] args)
          Testumgebung
 void printDriverProperties()
           
 void printDriverProps()
           
 void printForeignKeys()
           
 void printMetaData()
           
 void printPrimaryKeys()
           
private  void printResults(java.sql.ResultSet rs)
           
private  void printResultsForTag(java.sql.ResultSet rs, java.lang.String tag)
           
 void printSelectedTables()
           
 void printSelections(java.lang.String header)
           
 void printTables()
           
protected  void readCatalogs()
          Liest die Kataloge (Datenbanken) incl. aller Schemate, Tabellen und Spalten, unter Ber?cksichtigung der Selektionsregeln (preselection), ein.
protected  void readColumns(Table tab)
           
protected  void readDriverProperties()
           
protected  void readFKs(Table tab)
           
protected  void readFKs(Table tab, boolean addpkdirect)
           
protected  void readIndexes(Table tab)
           
protected  void readPKs(Table tab)
           
protected  void readSchemas(java.lang.String catalog)
          Liest die Schemata incl. aller Tabellen und Spalten, unter Ber?cksichtigung der Selektionsregeln (preselection), ein.
 void readStructure()
          Liest die Datenbankstruktur ein.
protected  void readTable(java.lang.String catalog, java.lang.String schema, java.lang.String name)
           
protected  void readTablePrivileges(Table tab)
           
protected  void readTables(java.lang.String catalog, java.lang.String schema)
          Liest die Tabellen incl.
protected  void readView(java.lang.String catalog, java.lang.String schema, java.lang.String viewname)
          Liest einen View incl.
 void reconnect()
          Baut die Verbindung zur Datenbank wieder auf, wenn diese unterbrochen wurde.
 void selectTables()
          Selektion alle erfassten Tabellen (postselection).
 void selectTables(boolean select)
          Setzen bzw. l?schen einer Selektion auf alle erfassten Tabellen (postselection).
 void selectTables(java.lang.String catalog, java.lang.String schema, boolean select)
          Setzen bzw. l?schen einer Selektion auf den erfassten Tabellen (postselection).
 void setDriver(java.lang.String driver)
           
 void setNonKeysToNull(Table tab)
           
 void setNonKeysToValue(Table tab, java.lang.String value, java.lang.String sql)
           
 void setProps(java.util.Properties _props)
           
 void setToNull(Table tab, Column col)
           
 void setToValue(Table tab, Column col, java.lang.String value, java.lang.String sql)
           
 void setUrl(java.lang.String _url)
           
 boolean supportsCatalogRefs()
           
 boolean supportsSchemaRefs()
           
 void unselectTables()
          L?scht die Selektion auf alle erfassten Tabellen (postselection).
protected  void updateFKs()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

driver

private java.lang.String driver

url

private java.lang.String url

props

private java.util.Properties props

driverProps

private java.util.Properties driverProps

con

private java.sql.Connection con

dbmd

private java.sql.DatabaseMetaData dbmd

st

private java.sql.Statement st

selections

private java.util.Collection selections

tables

java.util.ArrayList tables
Beinhaltet alle Tabellen der Datenbank


views

java.util.ArrayList views
Beinhaltet alle View der Datenbank, die w?hrend der Bearbeitung erzeugt wurden.


primarykeys

java.util.Hashtable primarykeys

foreignkeys

java.util.Collection foreignkeys

supportsCatalogRefs

private boolean supportsCatalogRefs

supportsSchemaRefs

private boolean supportsSchemaRefs
Constructor Detail

DBFeeder

public DBFeeder()
         throws java.lang.ClassNotFoundException

DBFeeder

public DBFeeder(java.lang.String driver,
                java.lang.String url,
                java.lang.String account,
                java.lang.String pwd)

DBFeeder

public DBFeeder(java.lang.String driver,
                java.lang.String url,
                java.util.Properties props)
Method Detail

init

public void init()
          throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundException

setUrl

public void setUrl(java.lang.String _url)

setDriver

public void setDriver(java.lang.String driver)

getProps

public java.util.Properties getProps()

setProps

public void setProps(java.util.Properties _props)

connect

public void connect()
             throws java.sql.SQLException
Baut eine Verbindung zur Datenbank auf.

Throws:
java.sql.SQLException - SQL-Fehlermeldungen (Serverprobleme etc.)


reconnect

public void reconnect()
               throws java.sql.SQLException
Baut die Verbindung zur Datenbank wieder auf, wenn diese unterbrochen wurde.

Throws:
SQLException - SQL-Fehlermeldungen (Serverprobleme etc.)
java.sql.SQLException


close

public void close()
           throws java.sql.SQLException
java.sql.SQLException

disconnect

public void disconnect()
                throws java.sql.SQLException
Schlie?t eine bestehende Verbindung.

Throws:
SQLException - SQL Fehlermeldung der Datenbank
java.sql.SQLException


setNonKeysToNull

public void setNonKeysToNull(Table tab)
                      throws java.sql.SQLException
java.sql.SQLException

setToNull

public void setToNull(Table tab,
                      Column col)
               throws java.sql.SQLException
java.sql.SQLException

setNonKeysToValue

public void setNonKeysToValue(Table tab,
                              java.lang.String value,
                              java.lang.String sql)
                       throws java.sql.SQLException
java.sql.SQLException

setToValue

public void setToValue(Table tab,
                       Column col,
                       java.lang.String value,
                       java.lang.String sql)
                throws java.sql.SQLException
java.sql.SQLException

createTableWithNegColname

public Table createTableWithNegColname(Table tab)
                                throws java.sql.SQLException
java.sql.SQLException

createView

public boolean createView(java.lang.String catalog,
                          java.lang.String schema,
                          java.lang.String viewname,
                          java.lang.String select)
                   throws java.sql.SQLException
java.sql.SQLException

existsView

protected boolean existsView(java.lang.String catalog,
                             java.lang.String schema,
                             java.lang.String viewname)

existsTable

protected boolean existsTable(java.lang.String catalog,
                              java.lang.String schema,
                              java.lang.String viewname)

existsInDB

protected boolean existsInDB(java.lang.String catalog,
                             java.lang.String schema,
                             java.lang.String name,
                             java.lang.String type)

executeQuery

public java.sql.ResultSet executeQuery(java.lang.String sql)
                                throws java.sql.SQLException
java.sql.SQLException

execSingleLineQuery

public java.util.Properties execSingleLineQuery(java.lang.String sql)
                                         throws java.sql.SQLException
java.sql.SQLException

getViews

public java.lang.String getViews(java.lang.String catalog,
                                 java.lang.String schema,
                                 java.lang.String startswith)
                          throws java.sql.SQLException
java.sql.SQLException

getView

public Table getView(java.lang.String catalog,
                     java.lang.String schema,
                     java.lang.String viewname)

dropViews

public void dropViews()
               throws java.sql.SQLException
java.sql.SQLException

dropRDTViews

public void dropRDTViews()
                  throws java.sql.SQLException
java.sql.SQLException

dropRDTViews

public void dropRDTViews(java.lang.String catalog,
                         java.lang.String schema)
                  throws java.sql.SQLException
java.sql.SQLException

dropViews

public void dropViews(java.lang.String catalog,
                      java.lang.String schema,
                      java.lang.String viewprefix)
               throws java.sql.SQLException
java.sql.SQLException

dropAllViews

public void dropAllViews(java.lang.String catalog,
                         java.lang.String schema,
                         java.lang.String viewprefix)
                  throws java.sql.SQLException
java.sql.SQLException

dropAllViews

protected void dropAllViews(java.lang.String views)
                     throws java.sql.SQLException
java.sql.SQLException

dropView

public void dropView(java.lang.String catalog,
                     java.lang.String schema,
                     java.lang.String viewname)
              throws java.sql.SQLException
java.sql.SQLException

supportsCatalogRefs

public boolean supportsCatalogRefs()
                            throws java.sql.SQLException
java.sql.SQLException

supportsSchemaRefs

public boolean supportsSchemaRefs()
                           throws java.sql.SQLException
java.sql.SQLException

readStructure

public void readStructure()
                   throws java.sql.SQLException
Liest die Datenbankstruktur ein. Dabei werden die Selektionregeln (preselection) ber?cksichtigt.

Throws:
SQLException - der Datenbank werden zur?ck geliefert.
java.sql.SQLException
See Also:
readCatalogs()


readCatalogs

protected void readCatalogs()
                     throws java.sql.SQLException
Liest die Kataloge (Datenbanken) incl. aller Schemate, Tabellen und Spalten, unter Ber?cksichtigung der Selektionsregeln (preselection), ein. Sind keine Cataloge in der Datenbank enthalten, werden direkt die Schemata eingelesen.

Throws:
SQLException - der Datenbank werden zur?ck geliefert.
java.sql.SQLException
See Also:
readSchemas(java.lang.String)


getCatalogs

protected java.sql.ResultSet getCatalogs()
                                  throws java.sql.SQLException
java.sql.SQLException

getCatalogsPostgreSQL

private java.sql.ResultSet getCatalogsPostgreSQL()
                                          throws java.sql.SQLException
java.sql.SQLException

readSchemas

protected void readSchemas(java.lang.String catalog)
                    throws java.sql.SQLException
Liest die Schemata incl. aller Tabellen und Spalten, unter Ber?cksichtigung der Selektionsregeln (preselection), ein. Sind keine Schemata in der Datenbank enthalten, werden direkt die Tabellen eingelesen.

Parameters:
catalog - String mit dem Namen des Katalogs, ggf. null, wenn keine Kataloge definiert sind.
Throws:
SQLException - der Datenbank werden zur?ck geliefert.
java.sql.SQLException
See Also:
readTables(java.lang.String, java.lang.String)


readTables

protected void readTables(java.lang.String catalog,
                          java.lang.String schema)
                   throws java.sql.SQLException
Liest die Tabellen incl. Zugriffsrechte und Spalten, unter Ber?cksichtigung der Selektionsregeln (preselection), ein.

Parameters:
catalog - String mit dem Namen des Katalogs, ggf. null, wenn keine Kataloge definiert sind.
schema - String mit dem Namen des Schemata, ggf. null, wenn keine Schemata definiert sind.
Throws:
SQLException - der Datenbank werden zur?ck geliefert.
java.sql.SQLException
See Also:
readTablePrivileges(org.rdtdm.db.Table), readPKs(org.rdtdm.db.Table), readFKs(org.rdtdm.db.Table), #readColumn


readTable

protected void readTable(java.lang.String catalog,
                         java.lang.String schema,
                         java.lang.String name)
                  throws java.sql.SQLException
java.sql.SQLException

readView

protected void readView(java.lang.String catalog,
                        java.lang.String schema,
                        java.lang.String viewname)
                 throws java.sql.SQLException
Liest einen View incl. Zugriffsrechte und Spalten ein.

Parameters:
catalog - String mit dem Namen des Katalogs, ggf. null, wenn keine Kataloge definiert sind.
schema - String mit dem Namen des Schemata, ggf. null, wenn keine Schemata definiert sind.
viewname - String mit dem Namen des View. Unbedingt erforderlich!
Throws:
SQLException - der Datenbank werden zur?ck geliefert.
java.sql.SQLException
See Also:
readTablePrivileges(org.rdtdm.db.Table), readPKs(org.rdtdm.db.Table), readFKs(org.rdtdm.db.Table), #readColumn


readTablePrivileges

protected void readTablePrivileges(Table tab)
                            throws java.sql.SQLException
java.sql.SQLException

readColumns

protected void readColumns(Table tab)
                    throws java.sql.SQLException
java.sql.SQLException

readPKs

protected void readPKs(Table tab)
                throws java.sql.SQLException
java.sql.SQLException

addPrimaryKey

protected void addPrimaryKey(Table tab,
                             java.lang.String keyname,
                             java.lang.String colname,
                             java.lang.String keyseq)

readFKs

protected void readFKs(Table tab)
                throws java.sql.SQLException
java.sql.SQLException

readFKs

protected void readFKs(Table tab,
                       boolean addpkdirect)
                throws java.sql.SQLException
java.sql.SQLException

addForeignKey

protected void addForeignKey(Table tab,
                             java.lang.String fkname,
                             java.lang.String fkcolname,
                             java.lang.String keyseq,
                             java.lang.String pkcat,
                             java.lang.String pkschem,
                             java.lang.String pktabname)

addForeignKey

protected void addForeignKey(Table tab,
                             java.lang.String keyname,
                             java.lang.String colname,
                             java.lang.String keyseq)

updateFKs

protected void updateFKs()
                  throws java.sql.SQLException
java.sql.SQLException

getPrimaryKey

protected PrimaryKey getPrimaryKey(Table tab)
F?gt einen Fremdschl?ssel in die Datenstruktur ein.

Throws:
SQLException - Probleme mit dem Datenbankzugriff


getTable

protected Table getTable(java.lang.String pkcat,
                         java.lang.String pkschem,
                         java.lang.String pktabname)

readIndexes

protected void readIndexes(Table tab)
                    throws java.sql.SQLException
java.sql.SQLException

getTypes

protected java.util.Collection getTypes()
                                 throws java.sql.SQLException
java.sql.SQLException

getSelectedTables

public java.util.ArrayList getSelectedTables()
Liefert alle selektierten Tabellen (postselction) zur?ck, die f?r das Mapping ausgew?hlt wurden. Ist keine postselection durchgef?hrt worden, werden alle erfassten Tabellen (DB with preselection) zur?ck geliefert

Returns:
Eine Liste von Tabellen vom Typ Table.
See Also:
getTables()


getTables

public java.util.ArrayList getTables()
Liefert alle Tabellen zur?ck, die f?r das Mapping ausgew?hlt wurden.

Returns:
Eine Liste von Tabellen vom Typ Table .


unselectTables

public void unselectTables()
L?scht die Selektion auf alle erfassten Tabellen (postselection).


selectTables

public void selectTables()
Selektion alle erfassten Tabellen (postselection).


selectTables

public void selectTables(boolean select)
Setzen bzw. l?schen einer Selektion auf alle erfassten Tabellen (postselection).

Parameters:
select - true , selektiert alle erfassten Tabellen, false l?scht die Selektion.


selectTables

public void selectTables(java.lang.String catalog,
                         java.lang.String schema,
                         boolean select)
Setzen bzw. l?schen einer Selektion auf den erfassten Tabellen (postselection). Dabei wird nur eine eingeschr?nkte Menge von Tabellen bearbeitet, die durch den Katalog und das Schema eingeschr?nkt ist.

Parameters:
catalog - String zur Beschreibung des Katalogs bzw. der Datenbank.
schema - String zur Beschreibung des Schemas.
select - true , selektiert auf den erfassten Tabellen, false l?scht die Selektion.


addSelection

public void addSelection(DBRule rule)

isSelected

public boolean isSelected(java.lang.String catalog,
                          java.lang.String schema,
                          java.lang.String table)

printSelections

public void printSelections(java.lang.String header)

getValuesAsCol

public java.util.Collection getValuesAsCol(Table tab,
                                           Column col)
                                    throws java.sql.SQLException
F?gt eine Selektion (preselection) bzw. eine Selektionregel hinzu. Dabei wird eine UND-Verbindung zwischen den Beschreibungen des Katalogs, des Schemas und der Tabelle aufgebaut. Ist ein Parameter nicht gesetzt ist dieser bei der Selektion beliebig.
Beispiele:
Mit Catalog=Mytest werden alle Tabellen des Katalogs Mytest selektiert.
Mit Catalog=Mytest und Table=tab1 wird nur die Tabelle Mytest.tab1 selektiert.
...


java.sql.SQLException


getValues

public java.lang.Object[] getValues(Table tab,
                                    Column col)
                             throws java.sql.SQLException
java.sql.SQLException

printResults

private void printResults(java.sql.ResultSet rs)
                   throws java.sql.SQLException
java.sql.SQLException

printResultsForTag

private void printResultsForTag(java.sql.ResultSet rs,
                                java.lang.String tag)
                         throws java.sql.SQLException
java.sql.SQLException

printForeignKeys

public void printForeignKeys()

printPrimaryKeys

public void printPrimaryKeys()

printTables

public void printTables()

printSelectedTables

public void printSelectedTables()

printMetaData

public void printMetaData()
                   throws java.sql.SQLException
java.sql.SQLException

printDriverProperties

public void printDriverProperties()
                           throws java.sql.SQLException
java.sql.SQLException

printDriverProps

public void printDriverProps()

readDriverProperties

protected void readDriverProperties()
                             throws java.sql.SQLException
java.sql.SQLException

main

public static void main(java.lang.String[] args)
Testumgebung