/******************************************************************************* * Copyright (c) 2007 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 * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.seam.internal.core.project.facet; import java.io.File; import java.util.Properties; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.datatools.connectivity.IConnectionProfile; import org.eclipse.datatools.connectivity.ProfileManager; import org.eclipse.datatools.connectivity.drivers.DriverInstance; import org.eclipse.datatools.connectivity.drivers.DriverManager; import org.eclipse.osgi.util.NLS; import org.eclipse.wst.common.frameworks.datamodel.IDataModel; import org.eclipse.wst.common.project.facet.core.IDelegate; import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; /** * TBD * * @author eskimo */ public class SeamFacetPreInstallDelegate implements IDelegate { /** * Indentation for hibernate property declaration */ public static final String PROP_INDENT = "\n "; /** * Property declaration in persistence.xml */ public static final String PROP_DECL = "<property name=\"{0}\" value=\"{1}\"/>"; private static final String EMPTY_STRING = ""; /** * Execute pre-install operations for installed facet * * @param project * created after finish pressed in wizard * @param fv * -IProjectFacetversion described facet that will be installed * @param config * - IDataModel that provide data collected from user * @param monitor * - IProgressMonitor * @throws CoreException * when meet the problems */ public void execute(IProject project, IProjectFacetVersion fv, Object config, IProgressMonitor monitor) throws CoreException { IDataModel model = (IDataModel) config; if (model .getProperty(ISeamFacetDataModelProperties.SEAM_CONNECTION_PROFILE) != null) { IConnectionProfile connProfile = ProfileManager .getInstance() .getProfileByName( model.getProperty( ISeamFacetDataModelProperties.SEAM_CONNECTION_PROFILE) .toString()); if (connProfile != null) { Properties props = connProfile.getBaseProperties(); // Properties("org.eclipse.datatools.connectivity.db.generic.connectionProfile"); // Collect properties name from DTP Connection Profile model.setProperty( ISeamFacetDataModelProperties.DB_USER_NAME, props.get("org.eclipse.datatools.connectivity.db.username") == null //$NON-NLS-1$ ? "" : props.get("org.eclipse.datatools.connectivity.db.username").toString()); //$NON-NLS-1$ //$NON-NLS-2$ model.setProperty( ISeamFacetDataModelProperties.JDBC_DRIVER_CLASS_NAME, props.get("org.eclipse.datatools.connectivity.db.driverClass") == null //$NON-NLS-1$ ? "" : props.get("org.eclipse.datatools.connectivity.db.driverClass").toString()); //$NON-NLS-1$ //$NON-NLS-2$ model.setProperty( ISeamFacetDataModelProperties.DB_USER_PASSWORD, props.get("org.eclipse.datatools.connectivity.db.password") == null //$NON-NLS-1$ ? "" : props.get("org.eclipse.datatools.connectivity.db.password").toString()); //$NON-NLS-1$ //$NON-NLS-2$ model.setProperty( ISeamFacetDataModelProperties.JDBC_URL_FOR_DB, props.get("org.eclipse.datatools.connectivity.db.URL") == null //$NON-NLS-1$ ? "" : props.get("org.eclipse.datatools.connectivity.db.URL").toString()); //$NON-NLS-1$ //$NON-NLS-2$ if(props.get("org.eclipse.datatools.connectivity.driverDefinitionID")!=null) { DriverInstance i = DriverManager.getInstance().getDriverInstanceByID(props.get( "org.eclipse.datatools.connectivity.driverDefinitionID").toString()); //$NON-NLS-1$ if(i != null) { String[] drivers = i.getJarListAsArray(); model.setProperty(ISeamFacetDataModelProperties.JDBC_DRIVER_JAR_PATHS_ARRAY, drivers); if(drivers.length>0) { File file = new File(drivers[0]); model.setProperty(ISeamFacetDataModelProperties.JDBC_DRIVER_JAR_NAME, file.getName()); } } } } } String defaultSchema = (String) model .getProperty(ISeamFacetDataModelProperties.DB_DEFAULT_SCHEMA_NAME); if (!EMPTY_STRING.equals(defaultSchema)) { model.setStringProperty( ISeamFacetDataModelProperties.DB_SCHEMA_NAME, PROP_INDENT + NLS.bind( PROP_DECL, new String[] { ISeamFacetDataModelProperties.DB_DEFAULT_SCHEMA_NAME, defaultSchema })); } String defaultCatalog = (String) model .getProperty(ISeamFacetDataModelProperties.DB_DEFAULT_CATALOG_NAME); if (!EMPTY_STRING.equals(defaultCatalog)) { model.setStringProperty( ISeamFacetDataModelProperties.DB_CATALOG_NAME, PROP_INDENT + NLS.bind( PROP_DECL, new String[] { ISeamFacetDataModelProperties.DB_DEFAULT_CATALOG_NAME, defaultCatalog })); } } }