1   package org.apache.maven.plugin.eclipse.writers.myeclipse;
2   
3   import java.io.File;
4   import java.io.FileWriter;
5   import java.io.IOException;
6   import java.io.PrintWriter;
7   import java.util.Map;
8   
9   import org.apache.maven.plugin.MojoExecutionException;
10  import org.apache.maven.plugin.eclipse.Messages;
11  import org.apache.maven.plugin.eclipse.writers.AbstractEclipseWriter;
12  import org.apache.maven.plugin.ide.IdeUtils;
13  import org.codehaus.plexus.util.IOUtil;
14  
15  
16  
17  
18  
19  
20  public class MyEclipseHibernateWriter
21      extends AbstractEclipseWriter
22  {
23  
24      private static final String MYECLIPSE_HIBERNATE_DATA_FILE = ".myhibernatedata";
25  
26      private static final String MYECLIPSE_HB_GEN_COMP_ID = "genBasicCompId";
27  
28      private static final String MYECLIPSE_HB_SESSION_FACTORY_NAME = "sessionFactoryName";
29  
30      private static final String MYECLIPSE_HB_PROFILE = "profile";
31  
32      private static final String MYECLIPSE_HB_DAO_SF_ID = "daoSFId";
33  
34      private static final String MYECLIPSE_HB_VERSION = "version";
35  
36      private static final String MYECLIPSE_HB_JNDI_PATH = "jndiPath";
37  
38      private static final String MYECLIPSE_HB_DETECT_M2M = "detectM2M";
39  
40      private static final String MYECLIPSE_HB_RE_STRATEGY_CLASS = "reStrategyClass";
41  
42      private static final String MYECLIPSE_HB_SPRING_DAO_FILE = "springDaoFile";
43  
44      private static final String MYECLIPSE_HB_USE_JAVA_TYPES = "useJavaTypes";
45  
46      private static final String MYECLIPSE_HB_KEY_GENERATOR = "keyGenerator";
47  
48      private static final String MYECLIPSE_HB_LIB_INSTALL_FOLDER = "libInstallFolder";
49  
50      private static final String MYECLIPSE_HB_ADD_LIBS_TO_PROJECT = "addLibs2Project";
51  
52      private static final String MYECLIPSE_HB_GEN_VERSION_TAG = "genVersionTag";
53  
54      private static final String MYECLIPSE_HB_SESSION_FACTORY_ID = "sessionFactoryId";
55  
56      private static final String MYECLIPSE_HB_BASE_PERSISTENT_CLASS = "basePersistenceClass";
57  
58      private static final String MYECLIPSE_HB_RE_SETTINGS_FILE = "reSettingsFile";
59  
60      private static final String MYECLIPSE_HB_CONFIG_FILE = "configFile";
61  
62      private static final String MYECLIPSE_HB_CREATE_CONFIG_FILE = "createConfigFile";
63  
64      private static final String MYECLIPSE_HB_ADD_LIBS_TO_CLASSPATH = "addLibs2Classpath";
65  
66      private static final String MYECLIPSE_HB_BASE_DAO_CLASS = "baseDaoClass";
67  
68      
69  
70  
71      private Map hibernateConfig;
72  
73      
74  
75  
76  
77  
78      public MyEclipseHibernateWriter( Map hibernateConfig )
79      {
80          this.hibernateConfig = hibernateConfig;
81      }
82  
83      
84  
85  
86  
87  
88      public void write()
89          throws MojoExecutionException
90      {
91          FileWriter w;
92  
93          try
94          {
95              w = new FileWriter( new File( config.getEclipseProjectDirectory(), MYECLIPSE_HIBERNATE_DATA_FILE ) );
96          }
97          catch ( IOException ex )
98          {
99              throw new MojoExecutionException( Messages.getString( "EclipsePlugin.erroropeningfile" ), ex ); 
100         }
101 
102         PrintWriter pw = new PrintWriter( w );
103 
104         pw.println( "# Generated by Maven" );
105         addProperty( pw, MYECLIPSE_HB_GEN_COMP_ID, "false" );
106         addProperty( pw, MYECLIPSE_HB_SESSION_FACTORY_NAME, null );
107         addProperty( pw, MYECLIPSE_HB_PROFILE, null );
108         addProperty( pw, MYECLIPSE_HB_DAO_SF_ID, null );
109         addProperty( pw, MYECLIPSE_HB_VERSION, getHibernateVersion() );
110         addProperty( pw, MYECLIPSE_HB_JNDI_PATH, null );
111         addProperty( pw, MYECLIPSE_HB_DETECT_M2M, "false" );
112         addProperty( pw, MYECLIPSE_HB_RE_STRATEGY_CLASS, null );
113         addProperty( pw, MYECLIPSE_HB_SPRING_DAO_FILE, null );
114         addProperty( pw, MYECLIPSE_HB_USE_JAVA_TYPES, "true" );
115         addProperty( pw, MYECLIPSE_HB_KEY_GENERATOR, null );
116         addProperty( pw, MYECLIPSE_HB_LIB_INSTALL_FOLDER, null );
117         addProperty( pw, MYECLIPSE_HB_ADD_LIBS_TO_PROJECT, "false" );
118         addProperty( pw, MYECLIPSE_HB_GEN_VERSION_TAG, "false" );
119         addProperty( pw, MYECLIPSE_HB_SESSION_FACTORY_ID, (String) hibernateConfig.get( "session-factory-id" ) );
120         addProperty( pw, MYECLIPSE_HB_BASE_PERSISTENT_CLASS, null );
121         addProperty( pw, MYECLIPSE_HB_RE_SETTINGS_FILE, null );
122         addProperty( pw, MYECLIPSE_HB_CONFIG_FILE,
123                      makePathToHibernateConfigFile( (String) hibernateConfig.get( "config-file" ) ) );
124         addProperty( pw, MYECLIPSE_HB_CREATE_CONFIG_FILE, "false" );
125         addProperty( pw, MYECLIPSE_HB_ADD_LIBS_TO_CLASSPATH, "false" );
126         addProperty( pw, MYECLIPSE_HB_BASE_DAO_CLASS, null );
127 
128         IOUtil.close( w );
129     }
130 
131     
132 
133 
134 
135 
136 
137 
138     private void addProperty( PrintWriter pw, String propName, String propValue )
139     {
140         StringBuffer sb = new StringBuffer( 64 );
141 
142         sb.append( propName ).append( "=" );
143 
144         if ( propValue != null )
145         {
146             sb.append( propValue );
147         }
148 
149         pw.println( sb.toString() );
150     }
151 
152     
153 
154 
155 
156 
157     private String getHibernateVersion()
158     {
159         String version =
160             IdeUtils.getArtifactVersion( new String[] { "hibernate" }, config.getProject().getDependencies(), 3 );
161 
162         return version != null ? version : "3.2";
163     }
164 
165     
166 
167 
168 
169 
170     private String makePathToHibernateConfigFile( String configFile )
171     {
172         StringBuffer sb = new StringBuffer( 64 );
173 
174         sb.append( "/" ).append( config.getProject().getArtifactId() ).append( "/" ).append( configFile );
175 
176         return sb.toString();
177     }
178 }