Author: snjeza
Date: 2008-06-24 16:46:17 -0400 (Tue, 24 Jun 2008)
New Revision: 8927
Modified:
trunk/birt/plugins/org.jboss.tools.birt.oda/plugin.xml
trunk/birt/plugins/org.jboss.tools.birt.oda/src/org/jboss/tools/birt/oda/IOdaFactory.java
trunk/birt/plugins/org.jboss.tools.birt.oda/src/org/jboss/tools/birt/oda/impl/ServerOdaFactory.java
Log:
JBIDE-2220 JBoss BIRT Integration
Modified: trunk/birt/plugins/org.jboss.tools.birt.oda/plugin.xml
===================================================================
--- trunk/birt/plugins/org.jboss.tools.birt.oda/plugin.xml 2008-06-24 20:45:51 UTC (rev
8926)
+++ trunk/birt/plugins/org.jboss.tools.birt.oda/plugin.xml 2008-06-24 20:46:17 UTC (rev
8927)
@@ -20,7 +20,14 @@
isEncryptable="false">
</property>
<property
+ name="jndiName"
allowsEmptyValueAsNull="true"
+ defaultDisplayName="JNDI Session Factory Name"
+ type="string"
+ isEncryptable="false">
+ </property>
+ <property
+ allowsEmptyValueAsNull="true"
defaultDisplayName="Max results"
defaultValue="100"
isEncryptable="false"
Modified:
trunk/birt/plugins/org.jboss.tools.birt.oda/src/org/jboss/tools/birt/oda/IOdaFactory.java
===================================================================
---
trunk/birt/plugins/org.jboss.tools.birt.oda/src/org/jboss/tools/birt/oda/IOdaFactory.java 2008-06-24
20:45:51 UTC (rev 8926)
+++
trunk/birt/plugins/org.jboss.tools.birt.oda/src/org/jboss/tools/birt/oda/IOdaFactory.java 2008-06-24
20:46:17 UTC (rev 8927)
@@ -26,6 +26,7 @@
public static final String MAX_ROWS = "maxRows";
public static final String CONFIGURATION = "configuration";
+ public static final String JNDI_NAME = "jndiName";
public static final String ORG_HIBERNATE_ECLIPSE_BUNDLE_ID =
"org.hibernate.eclipse";
void close();
Modified:
trunk/birt/plugins/org.jboss.tools.birt.oda/src/org/jboss/tools/birt/oda/impl/ServerOdaFactory.java
===================================================================
---
trunk/birt/plugins/org.jboss.tools.birt.oda/src/org/jboss/tools/birt/oda/impl/ServerOdaFactory.java 2008-06-24
20:45:51 UTC (rev 8926)
+++
trunk/birt/plugins/org.jboss.tools.birt.oda/src/org/jboss/tools/birt/oda/impl/ServerOdaFactory.java 2008-06-24
20:46:17 UTC (rev 8927)
@@ -3,13 +3,18 @@
import java.util.Properties;
import javax.naming.InitialContext;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
import org.eclipse.datatools.connectivity.oda.OdaException;
import org.hibernate.SessionFactory;
+import org.hibernate.ejb.EntityManagerImpl;
import org.jboss.tools.birt.oda.IOdaFactory;
public class ServerOdaFactory extends AbstractOdaFactory {
+ private EntityManager manager;
+
public ServerOdaFactory(Properties properties) throws OdaException {
getSessionFactory(properties);
String maxRowString = properties
@@ -22,20 +27,64 @@
}
public Object getSessionFactory(Properties properties) throws OdaException {
+ String jndiName = properties.getProperty(JNDI_NAME);
String configurationName = properties.getProperty(CONFIGURATION);
+ if (configurationName != null) {
+ int index = configurationName.indexOf("-ejb");
+ if (index > 0) {
+ configurationName = configurationName.substring(0, index);
+ }
+ }
+ if (jndiName == null || jndiName.length() <= 0) {
+ jndiName = "java:/" + configurationName;
+ }
+ String entityFactoryName = "java:/" + configurationName +
"EntityManagerFactory";
+
if (sessionFactory == null) {
InitialContext ctx = null;
try {
ctx = new InitialContext();
- sessionFactory = (SessionFactory) ctx.lookup("java:/"
- + configurationName);
+ //sessionFactory = (SessionFactory) ctx.lookup("java:/"
+ // + configurationName);
+ try {
+ Object object = ctx.lookup(jndiName);
+ if (object instanceof SessionFactory) {
+ sessionFactory = (SessionFactory) object;
+ return sessionFactory;
+ }
+ if (object instanceof EntityManagerFactory) {
+ EntityManagerFactory entityManagerFactory = (EntityManagerFactory) object;
+ manager = entityManagerFactory.createEntityManager();
+ if (manager instanceof EntityManagerImpl) {
+ EntityManagerImpl hibernateManager = (EntityManagerImpl) manager;
+ sessionFactory = hibernateManager.getSession().getSessionFactory();
+ manager.close();
+ return sessionFactory;
+ }
+ }
+ } catch (Exception e1) {
+ Object object = ctx.lookup(entityFactoryName);
+ if (object instanceof SessionFactory) {
+ sessionFactory = (SessionFactory) object;
+ return sessionFactory;
+ }
+ if (object instanceof EntityManagerFactory) {
+ EntityManagerFactory entityManagerFactory = (EntityManagerFactory) object;
+ manager = entityManagerFactory.createEntityManager();
+ if (manager instanceof EntityManagerImpl) {
+ EntityManagerImpl hibernateManager = (EntityManagerImpl) manager;
+ sessionFactory = hibernateManager.getSession().getSessionFactory();
+ manager.close();
+ return sessionFactory;
+ }
+ }
+ }
} catch (Exception e) {
e.printStackTrace();
throw new OdaException(
"Cannot create Hibernate session factory");
}
-
}
return sessionFactory;
}
Show replies by date