[jbosstools-commits] JBoss Tools SVN: r42711 - trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Wed Jul 25 09:26:36 EDT 2012


Author: dgeraskov
Date: 2012-07-25 09:26:35 -0400 (Wed, 25 Jul 2012)
New Revision: 42711

Modified:
   trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/JPAPostInstallFasetListener.java
Log:
https://issues.jboss.org/browse/JBIDE-6556
Export connection properties of selected ConnectionProfile to persistent.xml

Modified: trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/JPAPostInstallFasetListener.java
===================================================================
--- trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/JPAPostInstallFasetListener.java	2012-07-25 12:03:38 UTC (rev 42710)
+++ trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/JPAPostInstallFasetListener.java	2012-07-25 13:26:35 UTC (rev 42711)
@@ -13,12 +13,15 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map.Entry;
+import java.util.Properties;
 import java.util.regex.Pattern;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.datatools.connectivity.ProfileManager;
 import org.eclipse.debug.core.DebugPlugin;
 import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.debug.core.ILaunchConfigurationType;
@@ -28,10 +31,17 @@
 import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
 import org.eclipse.jpt.jpa.core.JpaFacet;
 import org.eclipse.jpt.jpa.core.JptJpaCorePlugin;
+import org.eclipse.jpt.jpa.core.internal.resource.persistence.PersistenceXmlResourceProvider;
+import org.eclipse.jpt.jpa.core.resource.persistence.PersistenceFactory;
+import org.eclipse.jpt.jpa.core.resource.persistence.XmlPersistence;
+import org.eclipse.jpt.jpa.core.resource.persistence.XmlPersistenceUnit;
+import org.eclipse.jpt.jpa.core.resource.persistence.XmlProperty;
+import org.eclipse.jpt.jpa.core.resource.xml.JpaXmlResource;
 import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent;
 import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent.Type;
 import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectListener;
 import org.eclipse.wst.common.project.facet.core.events.IProjectFacetActionEvent;
+import org.hibernate.console.ConnectionProfileUtil;
 import org.hibernate.console.preferences.ConsoleConfigurationPreferences.ConfigurationMode;
 import org.hibernate.eclipse.console.utils.LaunchHelper;
 import org.hibernate.eclipse.console.utils.ProjectUtils;
@@ -51,12 +61,46 @@
 					&& (HibernateJpaPlatform.HIBERNATE_PLATFORM_ID.equals(JptJpaCorePlugin.getJpaPlatformId(project))
 							|| HibernateJpaPlatform.HIBERNATE2_0_PLATFORM_ID.equals(JptJpaCorePlugin.getJpaPlatformId(project)))){
 				if (checkPreConditions(project)){
+					exportConnectionProfilePropertiesToPersistenceXml(project);
 					buildConsoleConfiguration(project);
 				}
 			}
 		}
 	}
 
+	private void exportConnectionProfilePropertiesToPersistenceXml(IProject project) {
+		PersistenceXmlResourceProvider defaultXmlResourceProvider = PersistenceXmlResourceProvider.getDefaultXmlResourceProvider(project);
+		final JpaXmlResource resource = defaultXmlResourceProvider.getXmlResource();
+		Properties propsToAdd = getConnectionProperties(project);
+		if (propsToAdd.isEmpty() || resource == null) return;
+		
+		XmlPersistence persistence = (XmlPersistence) resource.getRootObject();					
+		XmlPersistenceUnit persistenceUnit;
+	
+		if (persistence.getPersistenceUnits().size() > 0) {
+			persistenceUnit = persistence.getPersistenceUnits().get(0);
+			if (persistenceUnit.getProperties() == null) {
+				persistenceUnit.setProperties(PersistenceFactory.eINSTANCE.createXmlProperties());
+				for (Entry<Object, Object> entry : propsToAdd.entrySet()) {
+					XmlProperty prop = PersistenceFactory.eINSTANCE.createXmlProperty();
+					prop.setName((String)entry.getKey());
+					prop.setValue((String)entry.getValue());
+					persistenceUnit.getProperties().getProperties().add(prop);
+				}
+			}
+		}
+		resource.save();
+	}
+	
+	public Properties getConnectionProperties(IProject project){
+		String cpName = JptJpaCorePlugin.getConnectionProfileName(project);
+		if (cpName != null){
+			return ConnectionProfileUtil.getHibernateConnectionProperties(
+					ProfileManager.getInstance().getProfileByName(cpName));
+		}
+		return new Properties();
+	}
+
 	/**
 	 * 
 	 * @param project



More information about the jbosstools-commits mailing list