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