Discussion:
[Middlegen-user] Capturing oracle schema
Michael Szlapa
2001-12-09 16:55:01 UTC
Permalink
Is Oracle schema capture supposed to work ? When I do Read schema from database middlegen connects to db and seems to do something by I do not see any results on the screen.

I am using latest middlegen zip and Oracle 8.1.6.0 with orginal driver.

Here is middlegen output:

i:\java>java -cp "\java\apps\middlegen\middlegen.jar; ;\java\apps\middlegen\lib\classes12.jar;\java\
apps\middlegen\lib\ConfigLog4j.jar;\java\apps\middlegen\lib\crimson.jar;\java\apps\middlegen\lib\ejb
.jar;\java\apps\middlegen\lib\hsqldb.jar;\java\apps\middlegen\lib\iDoclet.jar;\java\apps\middlegen\l
ib\j2h.jar;\java\apps\middlegen\lib\jakarta-ant-1.4-optional.jar;\java\apps\middlegen\lib\jakarta-an
t-1.4.jar;\java\apps\middlegen\lib\jrefactory.jar;\java\apps\middlegen\lib\junit.jar;\java\apps\midd
legen\lib\log4j.jar;\java\apps\middlegen\lib\netcomponents.jar;\java\apps\middlegen\lib\xalan_1_2_2_
D9.jar;\java\apps\middlegen\lib\xdoclet.jar ;I:\java\lib\classes12.zip"-Dmiddlegen.rootDir=\java\wor
k\sirius-dev\src\java -Dmiddlegen.packageName=sirius.cc.mg -Dmiddlegen.jndiPrefix=sirius -Dmiddleg
en.weblogic.dataSource=sirius middlegen.swing.Main
DEBUG [main] swing.Main ( ?:?) - Log4j initialised
Exception occurred during event dispatching:
java.lang.NullPointerException
at middlegen.swing.JTablePanel.<init>(Unknown Source)
at middlegen.swing.JSchemaPanel.reset(Unknown Source)
at middlegen.swing.JSchemaPanel.setSchema(Unknown Source)
at middlegen.swing.JSchemaPanel$3.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1504)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)
at javax.swing.AbstractButton.doClick(AbstractButton.java:279)
at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(BasicMenuItemUI.ja
va:886)
at java.awt.Component.processMouseEvent(Component.java:3715)
at java.awt.Component.processEvent(Component.java:3544)
at java.awt.Container.processEvent(Container.java:1164)
at java.awt.Component.dispatchEventImpl(Component.java:2593)
at java.awt.Container.dispatchEventImpl(Container.java:1213)
at java.awt.Component.dispatchEvent(Component.java:2497)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
at java.awt.Container.dispatchEventImpl(Container.java:1200)
at java.awt.Window.dispatchEventImpl(Window.java:914)
at java.awt.Component.dispatchEvent(Component.java:2497)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
a***@netcom.no
2001-12-10 09:47:01 UTC
Permalink
Hi Michael.

I haven't tried Middlegen with Oracle. I'm installing it now, and will give
it a try. I'll get back to you when I have tested it.

Thanks for your feedback,

Aslak.

-----Original Message-----
From: middlegen-user-***@lists.sourceforge.net
[mailto:middlegen-user-***@lists.sourceforge.net]On Behalf Of Michael
Szlapa
Sent: 9. desember 2001 19:56
To: middlegen-***@lists.sourceforge.net
Subject: [Middlegen-user] Capturing oracle schema


Is Oracle schema capture supposed to work ? When I do Read schema from
database middlegen connects to db and seems to do something by I do not see
any results on the screen.

I am using latest middlegen zip and Oracle 8.1.6.0 with orginal driver.

Here is middlegen output:

i:\java>java -cp "\java\apps\middlegen\middlegen.jar;
;\java\apps\middlegen\lib\classes12.jar;\java\
apps\middlegen\lib\ConfigLog4j.jar;\java\apps\middlegen\lib\crimson.jar;\jav
a\apps\middlegen\lib\ejb
.jar;\java\apps\middlegen\lib\hsqldb.jar;\java\apps\middlegen\lib\iDoclet.ja
r;\java\apps\middlegen\l
ib\j2h.jar;\java\apps\middlegen\lib\jakarta-ant-1.4-optional.jar;\java\apps\
middlegen\lib\jakarta-an
t-1.4.jar;\java\apps\middlegen\lib\jrefactory.jar;\java\apps\middlegen\lib\j
unit.jar;\java\apps\midd
legen\lib\log4j.jar;\java\apps\middlegen\lib\netcomponents.jar;\java\apps\mi
ddlegen\lib\xalan_1_2_2_
D9.jar;\java\apps\middlegen\lib\xdoclet.jar
;I:\java\lib\classes12.zip"-Dmiddlegen.rootDir=\java\wor
k\sirius-dev\src\java -Dmiddlegen.packageName=sirius.cc.mg -Dmiddlegen.jndi
Prefix=sirius -Dmiddleg
en.weblogic.dataSource=sirius middlegen.swing.Main
DEBUG [main] swing.Main ( ?:?) - Log4j initialised
Exception occurred during event dispatching:
java.lang.NullPointerException
at middlegen.swing.JTablePanel.<init>(Unknown Source)
at middlegen.swing.JSchemaPanel.reset(Unknown Source)
at middlegen.swing.JSchemaPanel.setSchema(Unknown Source)
at middlegen.swing.JSchemaPanel$3.actionPerformed(Unknown Source)
at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450)
at
javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButto
n.java:1504)
at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:3
78)
at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)
at javax.swing.AbstractButton.doClick(AbstractButton.java:279)
at
javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(Basic
MenuItemUI.ja
va:886)
at java.awt.Component.processMouseEvent(Component.java:3715)
at java.awt.Component.processEvent(Component.java:3544)
at java.awt.Container.processEvent(Container.java:1164)
at java.awt.Component.dispatchEventImpl(Component.java:2593)
at java.awt.Container.dispatchEventImpl(Container.java:1213)
at java.awt.Component.dispatchEvent(Component.java:2497)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451)
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
at java.awt.Container.dispatchEventImpl(Container.java:1200)
at java.awt.Window.dispatchEventImpl(Window.java:914)
at java.awt.Component.dispatchEvent(Component.java:2497)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.ja
va:131)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java
:98)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
Michael
2001-12-10 20:17:02 UTC
Permalink
Aslak,

I have looked around at the code and ther may be some difference
in the way getTables works for Oracle driver. I have also read
about some bugs in Oracle JDBC drivers so tonight I will try the
newest one.

Also Oracle database has mulitiple schemas and some sometimes
middlegen seem to retrieve too much stuff (it maybe JDBC driver
bug).

Anyway here is what I tried and the table retrieved set of
tables seems to be correct

For querying specific user schema - username must be CAPS:

String[] types={"TABLE","VIEW"};
//adding "SYNONYM" to the list seems to cause it retrieve info
about oracle internal objects

ResultSet tableRs = databaseMetaData.getTables(null,
"ECONCUSER",null,types);

Without user restriction:
ResultSet tableRs = databaseMetaData.getTables(null,
null,null,types);

Anyway even with these changes to the schema factory i had some
exceptions later down the road. So it may be that other metadata
functions are also different.
Post by a***@netcom.no
Hi Michael.
I haven't tried Middlegen with Oracle. I'm installing it now,
and will give
it a try. I'll get back to you when I have tested it.
Thanks for your feedback,
Aslak.
-----Original Message-----
Of Michael
Szlapa
Sent: 9. desember 2001 19:56
Subject: [Middlegen-user] Capturing oracle schema
Is Oracle schema capture supposed to work ? When I do Read
schema from
database middlegen connects to db and seems to do something by
I do not see
any results on the screen.
I am using latest middlegen zip and Oracle 8.1.6.0 with
orginal driver.
i:\java>java -cp "\java\apps\middlegen\middlegen.jar;
;\java\apps\middlegen\lib\classes12.jar;\java\
apps\middlegen\lib\ConfigLog4j.jar;\java\apps\middlegen\lib\crimson.jar;\jav
Post by a***@netcom.no
a\apps\middlegen\lib\ejb
.jar;\java\apps\middlegen\lib\hsqldb.jar;\java\apps\middlegen\lib\iDoclet.ja
Post by a***@netcom.no
r;\java\apps\middlegen\l
ib\j2h.jar;\java\apps\middlegen\lib\jakarta-ant-1.4-optional.jar;\java\apps\
Post by a***@netcom.no
middlegen\lib\jakarta-an
t-1.4.jar;\java\apps\middlegen\lib\jrefactory.jar;\java\apps\middlegen\lib\j
Post by a***@netcom.no
unit.jar;\java\apps\midd
legen\lib\log4j.jar;\java\apps\middlegen\lib\netcomponents.jar;\java\apps\mi
Post by a***@netcom.no
ddlegen\lib\xalan_1_2_2_
D9.jar;\java\apps\middlegen\lib\xdoclet.jar
;I:\java\lib\classes12.zip"-Dmiddlegen.rootDir=\java\wor
k\sirius-dev\src\java -Dmiddlegen.packageName=sirius.cc.mg
-Dmiddlegen.jndi
Prefix=sirius -Dmiddleg
en.weblogic.dataSource=sirius middlegen.swing.Main
DEBUG [main] swing.Main ( ?:?) - Log4j
initialised
java.lang.NullPointerException
at middlegen.swing.JTablePanel.<init>(Unknown Source)
at middlegen.swing.JSchemaPanel.reset(Unknown Source)
at middlegen.swing.JSchemaPanel.setSchema(Unknown
Source)
at
middlegen.swing.JSchemaPanel$3.actionPerformed(Unknown Source)
at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450)
Post by a***@netcom.no
at
javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButto
Post by a***@netcom.no
n.java:1504)
at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:3
Post by a***@netcom.no
78)
at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)
Post by a***@netcom.no
at
javax.swing.AbstractButton.doClick(AbstractButton.java:279)
at
javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(Basic
Post by a***@netcom.no
MenuItemUI.ja
va:886)
at
java.awt.Component.processMouseEvent(Component.java:3715)
at
java.awt.Component.processEvent(Component.java:3544)
at
java.awt.Container.processEvent(Container.java:1164)
at
java.awt.Component.dispatchEventImpl(Component.java:2593)
at
java.awt.Container.dispatchEventImpl(Container.java:1213)
at
java.awt.Component.dispatchEvent(Component.java:2497)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451)
Post by a***@netcom.no
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)
Post by a***@netcom.no
at
java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
Post by a***@netcom.no
at
java.awt.Container.dispatchEventImpl(Container.java:1200)
at java.awt.Window.dispatchEventImpl(Window.java:914)
at
java.awt.Component.dispatchEvent(Component.java:2497)
at
java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.ja
Post by a***@netcom.no
va:131)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java
Post by a***@netcom.no
:98)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
Post by a***@netcom.no
at
java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
__________________________________________________
Do You Yahoo!?
Send your FREE holiday greetings online!
http://greetings.yahoo.com
Michael
2001-12-10 21:35:04 UTC
Permalink
I did some more investigation and there seem to be various
Oracle specific twists on metadata retrieval.

I've created small hack attached below, comments roughly explain
the purpose - feel free to remove the System.out.print ;-).

The problem seems to be that less then optimal settings may
cause oracle driver to:
- retrieve to much stuff and make db fail with to-many open
cursors,
- retrieve incomplete info that will cause null pointers while
re-drawing schema (public JTablePanel(ListSelectionListener l,
Table table) )
- be just plain slow.


----------------
/**
* @todo figure out how to pick driver at runtime and use it.
classloader
* problem. for now, must be on cp.
* @todo split into several methods
* @todo do smarter primkey guessing. Have a way to mark
fields/primkeys as
* "guessed"
* @todo Write javadocs for method parameter
* @todo Write javadocs for return value
* @todo Write javadocs for exception
* @param connectionSettings Describe what the parameter does
* @return Describe the return value
* @exception MiddlemanException Describe the exception
*/
public static Schema createSchema(ConnectionSettings
connectionSettings)
throws MiddlemanException {
Schema result = new Schema();
try {
Class.forName(connectionSettings.JDBCDriver).newInstance();

Connection connection =
DriverManager.getConnection(connectionSettings.databaseURL,
connectionSettings.username, connectionSettings.password);

DatabaseMetaData databaseMetaData = connection.getMetaData();

// get the tables
_log.debug("-- tables --");
String sse = databaseMetaData.getSearchStringEscape();
ArrayList tables = new ArrayList();


String[] types= null;

if(
connectionSettings.databaseURL.indexOf(":oracle") > -1) {

// no significance for Oracle ? must
me null ?
// alegedly significant for Sybase
with multiple databases(catalogs) per instance
if( "".equals(
connectionSettings.catalog ) ){
connectionSettings.catalog =
null;
}
if( connectionSettings.catalog !=
null ) {
connectionSettings.catalog =
connectionSettings.catalog.toUpperCase();
}

if( "".equals(
connectionSettings.schema ) ){
// in case of oracle it will
also cause retrieval of many other objects
// inlcuding dictionary views,
thus processing slowing down
// "" may cause it not to
retirieve anything
connectionSettings.schema =
null;
}
if( connectionSettings.schema !=
null && connectionSettings.databaseURL.indexOf(":oracle") > -1)
{
//usually the access rights are
set up so that you can only query your schema
// ie. schema = username
connectionSettings.schema =
connectionSettings.schema.toUpperCase();
}

types = new String[]
{"TABLE","VIEW"};
//null will also retrieve objects
for which only synonyms exists, but this objects will not
//be successfully processed anyway -
did not check why -probably columns not retrieved

System.out.println("connectionSettings.schema = " +
connectionSettings.schema );
}

----------------
Post by a***@netcom.no
Hi Michael.
I haven't tried Middlegen with Oracle. I'm installing it now,
and will give
it a try. I'll get back to you when I have tested it.
Thanks for your feedback,
Aslak.
-----Original Message-----
Of Michael
Szlapa
Sent: 9. desember 2001 19:56
Subject: [Middlegen-user] Capturing oracle schema
Is Oracle schema capture supposed to work ? When I do Read
schema from
database middlegen connects to db and seems to do something by
I do not see
any results on the screen.
I am using latest middlegen zip and Oracle 8.1.6.0 with
orginal driver.
i:\java>java -cp "\java\apps\middlegen\middlegen.jar;
;\java\apps\middlegen\lib\classes12.jar;\java\
apps\middlegen\lib\ConfigLog4j.jar;\java\apps\middlegen\lib\crimson.jar;\jav
Post by a***@netcom.no
a\apps\middlegen\lib\ejb
.jar;\java\apps\middlegen\lib\hsqldb.jar;\java\apps\middlegen\lib\iDoclet.ja
Post by a***@netcom.no
r;\java\apps\middlegen\l
ib\j2h.jar;\java\apps\middlegen\lib\jakarta-ant-1.4-optional.jar;\java\apps\
Post by a***@netcom.no
middlegen\lib\jakarta-an
t-1.4.jar;\java\apps\middlegen\lib\jrefactory.jar;\java\apps\middlegen\lib\j
Post by a***@netcom.no
unit.jar;\java\apps\midd
legen\lib\log4j.jar;\java\apps\middlegen\lib\netcomponents.jar;\java\apps\mi
Post by a***@netcom.no
ddlegen\lib\xalan_1_2_2_
D9.jar;\java\apps\middlegen\lib\xdoclet.jar
;I:\java\lib\classes12.zip"-Dmiddlegen.rootDir=\java\wor
k\sirius-dev\src\java -Dmiddlegen.packageName=sirius.cc.mg
-Dmiddlegen.jndi
Prefix=sirius -Dmiddleg
en.weblogic.dataSource=sirius middlegen.swing.Main
DEBUG [main] swing.Main ( ?:?) - Log4j
initialised
java.lang.NullPointerException
at middlegen.swing.JTablePanel.<init>(Unknown Source)
at middlegen.swing.JSchemaPanel.reset(Unknown Source)
at middlegen.swing.JSchemaPanel.setSchema(Unknown
Source)
at
middlegen.swing.JSchemaPanel$3.actionPerformed(Unknown Source)
at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450)
Post by a***@netcom.no
at
javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButto
Post by a***@netcom.no
n.java:1504)
at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:3
Post by a***@netcom.no
78)
at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)
Post by a***@netcom.no
at
javax.swing.AbstractButton.doClick(AbstractButton.java:279)
at
javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(Basic
Post by a***@netcom.no
MenuItemUI.ja
va:886)
at
java.awt.Component.processMouseEvent(Component.java:3715)
at
java.awt.Component.processEvent(Component.java:3544)
at
java.awt.Container.processEvent(Container.java:1164)
at
java.awt.Component.dispatchEventImpl(Component.java:2593)
at
java.awt.Container.dispatchEventImpl(Container.java:1213)
at
java.awt.Component.dispatchEvent(Component.java:2497)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451)
Post by a***@netcom.no
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)
Post by a***@netcom.no
at
java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
Post by a***@netcom.no
at
java.awt.Container.dispatchEventImpl(Container.java:1200)
at java.awt.Window.dispatchEventImpl(Window.java:914)
at
java.awt.Component.dispatchEvent(Component.java:2497)
at
java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.ja
Post by a***@netcom.no
va:131)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java
Post by a***@netcom.no
:98)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
Post by a***@netcom.no
at
java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
_______________________________________________
middlegen-user mailing list
https://lists.sourceforge.net/lists/listinfo/middlegen-user
__________________________________________________
Do You Yahoo!?
Send your FREE holiday greetings online!
http://greetings.yahoo.com

Loading...