Author: dgeraskov
Date: 2011-11-22 18:41:06 -0500 (Tue, 22 Nov 2011)
New Revision: 36546
Added:
branches/hibernatetools-multiversion2/plugins/org.hibernate.eclipse/src/org/hibernate/console/ext/api/
branches/hibernatetools-multiversion2/plugins/org.hibernate.eclipse/src/org/hibernate/console/ext/api/ConsoleDatabaseCollector.java
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate3_5/src/org/jboss/tools/hibernate3_5/console/ConsoleDatabaseCollectorImpl.java
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate4_0/src/org/jboss/tools/hibernate4_0/console/ConsoleDatabaseCollectorImpl.java
Modified:
branches/hibernatetools-multiversion2/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/ext/ConsoleExtension.java
branches/hibernatetools-multiversion2/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/ext/ConsoleExtensionManager.java
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate3_5/src/org/jboss/tools/hibernate3_5/console/ConsoleExtension3_5.java
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate4_0/src/org/jboss/tools/hibernate4_0/console/ConsoleExtension4_0.java
Log:
Move database reading to console extension
Added:
branches/hibernatetools-multiversion2/plugins/org.hibernate.eclipse/src/org/hibernate/console/ext/api/ConsoleDatabaseCollector.java
===================================================================
---
branches/hibernatetools-multiversion2/plugins/org.hibernate.eclipse/src/org/hibernate/console/ext/api/ConsoleDatabaseCollector.java
(rev 0)
+++
branches/hibernatetools-multiversion2/plugins/org.hibernate.eclipse/src/org/hibernate/console/ext/api/ConsoleDatabaseCollector.java 2011-11-22
23:41:06 UTC (rev 36546)
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.hibernate.console.ext.api;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map.Entry;
+
+
+/**
+ * @author Dmitry Geraskov {geraskov(a)gmail.com}
+ *
+ */
+public class ConsoleDatabaseCollector {
+
+ /**
+ * @return
+ */
+ public Iterator<Entry<String, List<ITable>>> getQualifierEntries() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Modified:
branches/hibernatetools-multiversion2/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/ext/ConsoleExtension.java
===================================================================
---
branches/hibernatetools-multiversion2/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/ext/ConsoleExtension.java 2011-11-22
23:13:50 UTC (rev 36545)
+++
branches/hibernatetools-multiversion2/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/ext/ConsoleExtension.java 2011-11-22
23:41:06 UTC (rev 36546)
@@ -14,7 +14,10 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfiguration;
+import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
+import org.hibernate.console.ConsoleConfiguration;
import org.hibernate.console.ext.HibernateExtension;
+import org.hibernate.console.ext.api.ConsoleDatabaseCollector;
/**
* @author Dmitry Geraskov
@@ -28,5 +31,9 @@
public void launchExporters(ILaunchConfiguration configuration, String mode,
ILaunch launch, IProgressMonitor monitor) throws CoreException;
+
+ public ConsoleDatabaseCollector readDatabaseSchema(IProgressMonitor monitor,
+ ConsoleConfiguration consoleConfiguration,
+ ReverseEngineeringStrategy strategy);
}
Modified:
branches/hibernatetools-multiversion2/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/ext/ConsoleExtensionManager.java
===================================================================
---
branches/hibernatetools-multiversion2/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/ext/ConsoleExtensionManager.java 2011-11-22
23:13:50 UTC (rev 36545)
+++
branches/hibernatetools-multiversion2/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/console/ext/ConsoleExtensionManager.java 2011-11-22
23:41:06 UTC (rev 36546)
@@ -21,6 +21,7 @@
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
+import org.hibernate.console.ConsoleConfiguration;
import org.hibernate.console.ext.HibernateExtension;
/**
@@ -94,5 +95,12 @@
}
return null;
}
+
+ public static ConsoleExtension getConsoleExtension(ConsoleConfiguration
consoleConfiguration){
+ if (consoleConfiguration != null){
+ return getConsoleExtension(consoleConfiguration.getHibernateExtension());
+ }
+ return null;
+ }
}
Added:
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate3_5/src/org/jboss/tools/hibernate3_5/console/ConsoleDatabaseCollectorImpl.java
===================================================================
---
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate3_5/src/org/jboss/tools/hibernate3_5/console/ConsoleDatabaseCollectorImpl.java
(rev 0)
+++
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate3_5/src/org/jboss/tools/hibernate3_5/console/ConsoleDatabaseCollectorImpl.java 2011-11-22
23:41:06 UTC (rev 36546)
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate3_5.console;
+
+import org.hibernate.cfg.reveng.DatabaseCollector;
+import org.hibernate.console.ext.api.ConsoleDatabaseCollector;
+
+/**
+ * @author Dmitry Geraskov {geraskov(a)gmail.com}
+ *
+ */
+public class ConsoleDatabaseCollectorImpl extends ConsoleDatabaseCollector {
+
+ private DatabaseCollector collector;
+
+ public ConsoleDatabaseCollectorImpl(DatabaseCollector databaseCollector){
+ this.collector = databaseCollector;
+ }
+
+}
Modified:
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate3_5/src/org/jboss/tools/hibernate3_5/console/ConsoleExtension3_5.java
===================================================================
---
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate3_5/src/org/jboss/tools/hibernate3_5/console/ConsoleExtension3_5.java 2011-11-22
23:13:50 UTC (rev 36545)
+++
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate3_5/src/org/jboss/tools/hibernate3_5/console/ConsoleExtension3_5.java 2011-11-22
23:41:06 UTC (rev 36546)
@@ -29,10 +29,16 @@
import org.eclipse.osgi.util.NLS;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.JDBCMetaDataConfiguration;
+import org.hibernate.cfg.JDBCReaderFactory;
+import org.hibernate.cfg.Settings;
+import org.hibernate.cfg.reveng.DatabaseCollector;
+import org.hibernate.cfg.reveng.DefaultDatabaseCollector;
import org.hibernate.cfg.reveng.DefaultReverseEngineeringStrategy;
+import org.hibernate.cfg.reveng.JDBCReader;
import org.hibernate.cfg.reveng.OverrideRepository;
import org.hibernate.cfg.reveng.ReverseEngineeringSettings;
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
+import org.hibernate.connection.ConnectionProvider;
import org.hibernate.console.ConsoleConfiguration;
import org.hibernate.console.HibernateConsoleRuntimeException;
import org.hibernate.console.KnownConfigurations;
@@ -40,10 +46,12 @@
import org.hibernate.console.execution.ExecutionContext.Command;
import org.hibernate.console.ext.HibernateException;
import org.hibernate.console.ext.HibernateExtension;
+import org.hibernate.console.ext.api.ConsoleDatabaseCollector;
import org.hibernate.eclipse.console.HibernateConsoleMessages;
import org.hibernate.eclipse.console.HibernateConsolePlugin;
import org.hibernate.eclipse.console.ext.CompletionProposalsResult;
import org.hibernate.eclipse.console.ext.ConsoleExtension;
+import org.hibernate.eclipse.console.workbench.ProgressListenerMonitor;
import org.hibernate.eclipse.launch.CodeGenerationStrings;
import org.hibernate.eclipse.launch.CodeGenerationUtils;
import org.hibernate.eclipse.launch.PathHelper;
@@ -299,4 +307,39 @@
}
}
+ @Override
+ public ConsoleDatabaseCollector readDatabaseSchema(final IProgressMonitor monitor, final
ConsoleConfiguration cc,
+ final ReverseEngineeringStrategy strategy) {
+ return new ConsoleDatabaseCollectorImpl(readDatabaseSchemaInternal(monitor, cc,
strategy));
+ }
+
+ protected DatabaseCollector readDatabaseSchemaInternal(final IProgressMonitor monitor,
final ConsoleConfiguration consoleConfiguration, final ReverseEngineeringStrategy
strategy) {
+ final Configuration configuration = consoleConfiguration.buildWith(null, false);
+ return (DefaultDatabaseCollector) consoleConfiguration.execute(new
ExecutionContext.Command() {
+
+ public Object execute() {
+ DefaultDatabaseCollector db = null;
+ Settings settings = consoleConfiguration.getSettings(configuration);
+ ConnectionProvider connectionProvider = null;
+ try {
+ connectionProvider = settings.getConnectionProvider();
+
+ JDBCReader reader = JDBCReaderFactory.newJDBCReader(configuration.getProperties(),
settings, strategy);
+ db = new DefaultDatabaseCollector(reader.getMetaDataDialect());
+ reader.readDatabaseSchema(db, settings.getDefaultCatalogName(),
settings.getDefaultSchemaName(), new ProgressListenerMonitor(monitor));
+ } catch (HibernateException he) {
+ throw he;
+ } catch (UnsupportedOperationException he) {
+ throw new HibernateException(he);
+ }
+ finally {
+ if (connectionProvider != null) {
+ connectionProvider.close();
+ }
+ }
+ return db;
+ }
+ });
+ }
+
}
Added:
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate4_0/src/org/jboss/tools/hibernate4_0/console/ConsoleDatabaseCollectorImpl.java
===================================================================
---
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate4_0/src/org/jboss/tools/hibernate4_0/console/ConsoleDatabaseCollectorImpl.java
(rev 0)
+++
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate4_0/src/org/jboss/tools/hibernate4_0/console/ConsoleDatabaseCollectorImpl.java 2011-11-22
23:41:06 UTC (rev 36546)
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate4_0.console;
+
+import org.hibernate.cfg.reveng.DatabaseCollector;
+import org.hibernate.console.ext.api.ConsoleDatabaseCollector;
+
+/**
+ * @author Dmitry Geraskov {geraskov(a)gmail.com}
+ *
+ */
+public class ConsoleDatabaseCollectorImpl extends ConsoleDatabaseCollector {
+
+ private DatabaseCollector collector;
+
+ public ConsoleDatabaseCollectorImpl(DatabaseCollector databaseCollector){
+ this.collector = databaseCollector;
+ }
+
+}
Modified:
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate4_0/src/org/jboss/tools/hibernate4_0/console/ConsoleExtension4_0.java
===================================================================
---
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate4_0/src/org/jboss/tools/hibernate4_0/console/ConsoleExtension4_0.java 2011-11-22
23:13:50 UTC (rev 36545)
+++
branches/hibernatetools-multiversion2/plugins/org.jboss.tools.hibernate4_0/src/org/jboss/tools/hibernate4_0/console/ConsoleExtension4_0.java 2011-11-22
23:41:06 UTC (rev 36546)
@@ -30,7 +30,12 @@
import org.hibernate.annotations.common.util.ReflectHelper;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.JDBCMetaDataConfiguration;
+import org.hibernate.cfg.JDBCReaderFactory;
+import org.hibernate.cfg.Settings;
+import org.hibernate.cfg.reveng.DatabaseCollector;
+import org.hibernate.cfg.reveng.DefaultDatabaseCollector;
import org.hibernate.cfg.reveng.DefaultReverseEngineeringStrategy;
+import org.hibernate.cfg.reveng.JDBCReader;
import org.hibernate.cfg.reveng.OverrideRepository;
import org.hibernate.cfg.reveng.ReverseEngineeringSettings;
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
@@ -41,13 +46,19 @@
import org.hibernate.console.execution.ExecutionContext.Command;
import org.hibernate.console.ext.HibernateException;
import org.hibernate.console.ext.HibernateExtension;
+import org.hibernate.console.ext.api.ConsoleDatabaseCollector;
import org.hibernate.eclipse.console.HibernateConsoleMessages;
import org.hibernate.eclipse.console.HibernateConsolePlugin;
import org.hibernate.eclipse.console.ext.CompletionProposalsResult;
import org.hibernate.eclipse.console.ext.ConsoleExtension;
+import org.hibernate.eclipse.console.workbench.ProgressListenerMonitor;
import org.hibernate.eclipse.launch.CodeGenerationStrings;
import org.hibernate.eclipse.launch.CodeGenerationUtils;
import org.hibernate.eclipse.launch.PathHelper;
+import org.hibernate.service.ServiceRegistry;
+import org.hibernate.service.ServiceRegistryBuilder;
+import org.hibernate.service.spi.ServiceRegistryImplementor;
+import org.hibernate.service.spi.Stoppable;
import org.hibernate.tool.hbm2x.ArtifactCollector;
import org.hibernate.tool.hbm2x.Exporter;
import org.hibernate.tool.ide.completion.HQLCodeAssist;
@@ -299,5 +310,40 @@
throw new HibernateConsoleRuntimeException(out, e);
}
}
+
+ @Override
+ public ConsoleDatabaseCollector readDatabaseSchema(final IProgressMonitor monitor, final
ConsoleConfiguration cc,
+ final ReverseEngineeringStrategy strategy) {
+ return new ConsoleDatabaseCollectorImpl(readDatabaseSchemaInternal(monitor, cc,
strategy));
+ }
+
+ protected DatabaseCollector readDatabaseSchemaInternal(final IProgressMonitor monitor,
final ConsoleConfiguration consoleConfiguration, final ReverseEngineeringStrategy
strategy) {
+ final Configuration configuration = consoleConfiguration.buildWith(null, false);
+ return (DefaultDatabaseCollector) consoleConfiguration.execute(new
ExecutionContext.Command() {
+ public Object execute() {
+ ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
+ .applySettings(configuration.getProperties())
+ .buildServiceRegistry();
+ DefaultDatabaseCollector db = null;
+ Settings settings = consoleConfiguration.getSettings(configuration);
+ try {
+ JDBCReader reader = JDBCReaderFactory.newJDBCReader(configuration.getProperties(),
settings, strategy, serviceRegistry);
+ db = new DefaultDatabaseCollector(reader.getMetaDataDialect());
+ reader.readDatabaseSchema(db, settings.getDefaultCatalogName(),
settings.getDefaultSchemaName(), new ProgressListenerMonitor(monitor));
+ } catch (HibernateException he) {
+ throw he;
+ } catch (UnsupportedOperationException he) {
+ throw new HibernateException(he);
+ }
+ finally {
+ if (serviceRegistry instanceof ServiceRegistryImplementor) {
+ ((ServiceRegistryImplementor)serviceRegistry).destroy();
+ }
+ }
+ return db;
+ }
+ });
+ }
+
}