org.apache.maven.plugin.eclipse.writers.myeclipse.MyEclipseHibernateWriter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eclipse-maven-plugin
Show all versions of eclipse-maven-plugin
The Eclipse Plugin is used to generate Eclipse IDE files (.project, .classpath and the .settings folder) from a POM.
package org.apache.maven.plugin.eclipse.writers.myeclipse;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.eclipse.Messages;
import org.apache.maven.plugin.eclipse.writers.AbstractEclipseWriter;
import org.apache.maven.plugin.ide.IdeUtils;
import org.codehaus.plexus.util.IOUtil;
/**
* Writer for MyEclipse Hibernate Capability
*
* @author Olivier Jacob
*/
public class MyEclipseHibernateWriter
extends AbstractEclipseWriter
{
private static final String MYECLIPSE_HIBERNATE_DATA_FILE = ".myhibernatedata";
private static final String MYECLIPSE_HB_GEN_COMP_ID = "genBasicCompId";
private static final String MYECLIPSE_HB_SESSION_FACTORY_NAME = "sessionFactoryName";
private static final String MYECLIPSE_HB_PROFILE = "profile";
private static final String MYECLIPSE_HB_DAO_SF_ID = "daoSFId";
private static final String MYECLIPSE_HB_VERSION = "version";
private static final String MYECLIPSE_HB_JNDI_PATH = "jndiPath";
private static final String MYECLIPSE_HB_DETECT_M2M = "detectM2M";
private static final String MYECLIPSE_HB_RE_STRATEGY_CLASS = "reStrategyClass";
private static final String MYECLIPSE_HB_SPRING_DAO_FILE = "springDaoFile";
private static final String MYECLIPSE_HB_USE_JAVA_TYPES = "useJavaTypes";
private static final String MYECLIPSE_HB_KEY_GENERATOR = "keyGenerator";
private static final String MYECLIPSE_HB_LIB_INSTALL_FOLDER = "libInstallFolder";
private static final String MYECLIPSE_HB_ADD_LIBS_TO_PROJECT = "addLibs2Project";
private static final String MYECLIPSE_HB_GEN_VERSION_TAG = "genVersionTag";
private static final String MYECLIPSE_HB_SESSION_FACTORY_ID = "sessionFactoryId";
private static final String MYECLIPSE_HB_BASE_PERSISTENT_CLASS = "basePersistenceClass";
private static final String MYECLIPSE_HB_RE_SETTINGS_FILE = "reSettingsFile";
private static final String MYECLIPSE_HB_CONFIG_FILE = "configFile";
private static final String MYECLIPSE_HB_CREATE_CONFIG_FILE = "createConfigFile";
private static final String MYECLIPSE_HB_ADD_LIBS_TO_CLASSPATH = "addLibs2Classpath";
private static final String MYECLIPSE_HB_BASE_DAO_CLASS = "baseDaoClass";
/**
* Relative path to the Hibernate configuration file to use in MyEclipse
*/
private Map hibernateConfig;
/**
* Constructor
*
* @param hibernateConfig path to the configuration file to use
*/
public MyEclipseHibernateWriter( Map hibernateConfig )
{
this.hibernateConfig = hibernateConfig;
}
/**
* Write MyEclipse Hibernate configuration
*
* @throws MojoExecutionException if an error occurs
*/
public void write()
throws MojoExecutionException
{
FileWriter w;
try
{
w = new FileWriter( new File( config.getEclipseProjectDirectory(), MYECLIPSE_HIBERNATE_DATA_FILE ) );
}
catch ( IOException ex )
{
throw new MojoExecutionException( Messages.getString( "EclipsePlugin.erroropeningfile" ), ex );
}
PrintWriter pw = new PrintWriter( w );
pw.println( "# Generated by Maven" );
addProperty( pw, MYECLIPSE_HB_GEN_COMP_ID, "false" );
addProperty( pw, MYECLIPSE_HB_SESSION_FACTORY_NAME, null );
addProperty( pw, MYECLIPSE_HB_PROFILE, null );
addProperty( pw, MYECLIPSE_HB_DAO_SF_ID, null );
addProperty( pw, MYECLIPSE_HB_VERSION, getHibernateVersion() );
addProperty( pw, MYECLIPSE_HB_JNDI_PATH, null );
addProperty( pw, MYECLIPSE_HB_DETECT_M2M, "false" );
addProperty( pw, MYECLIPSE_HB_RE_STRATEGY_CLASS, null );
addProperty( pw, MYECLIPSE_HB_SPRING_DAO_FILE, null );
addProperty( pw, MYECLIPSE_HB_USE_JAVA_TYPES, "true" );
addProperty( pw, MYECLIPSE_HB_KEY_GENERATOR, null );
addProperty( pw, MYECLIPSE_HB_LIB_INSTALL_FOLDER, null );
addProperty( pw, MYECLIPSE_HB_ADD_LIBS_TO_PROJECT, "false" );
addProperty( pw, MYECLIPSE_HB_GEN_VERSION_TAG, "false" );
addProperty( pw, MYECLIPSE_HB_SESSION_FACTORY_ID, (String) hibernateConfig.get( "session-factory-id" ) );
addProperty( pw, MYECLIPSE_HB_BASE_PERSISTENT_CLASS, null );
addProperty( pw, MYECLIPSE_HB_RE_SETTINGS_FILE, null );
addProperty( pw, MYECLIPSE_HB_CONFIG_FILE,
makePathToHibernateConfigFile( (String) hibernateConfig.get( "config-file" ) ) );
addProperty( pw, MYECLIPSE_HB_CREATE_CONFIG_FILE, "false" );
addProperty( pw, MYECLIPSE_HB_ADD_LIBS_TO_CLASSPATH, "false" );
addProperty( pw, MYECLIPSE_HB_BASE_DAO_CLASS, null );
IOUtil.close( w );
}
/**
* Writes a configuration property to the PrintWriter given in parameter
*
* @param pw the PrintWriter to write to
* @param propName the property name
* @param propValue the property value (writes empty String if null)
*/
private void addProperty( PrintWriter pw, String propName, String propValue )
{
StringBuilder sb = new StringBuilder( 64 );
sb.append( propName ).append( "=" );
if ( propValue != null )
{
sb.append( propValue );
}
pw.println( sb.toString() );
}
/**
* Find Hibernate version in project dependencies
*
* @return the version of the hibernate artifact if found in the dependencies or 3.2 (default value)
*/
private String getHibernateVersion()
{
String version =
IdeUtils.getArtifactVersion( new String[] { "hibernate" }, config.getProject().getDependencies(), 3 );
return version != null ? version : "3.2";
}
/**
* Prepend the project artifactId to the path given in the plugin configuration
*
* @return the path to the file relative to the root of the Eclipse Workspace
*/
private String makePathToHibernateConfigFile( String configFile )
{
return "/" + config.getProject().getArtifactId() + "/" + configFile;
}
}