View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.plugin.eclipse.writers;
20  
21  import java.io.File;
22  import java.util.Arrays;
23  import java.util.Comparator;
24  import java.util.List;
25  import java.util.Map;
26  
27  import org.apache.maven.artifact.repository.ArtifactRepository;
28  import org.apache.maven.plugin.eclipse.EclipsePlugin;
29  import org.apache.maven.plugin.eclipse.EclipseSourceDir;
30  import org.apache.maven.plugin.ide.IdeDependency;
31  import org.apache.maven.project.MavenProject;
32  
33  /**
34   * @author Fabrizio Giustina
35   * @version $Id: EclipseWriterConfig.java 599684 2007-11-30 03:02:08Z aheritier $
36   */
37  public class EclipseWriterConfig
38  {
39      /**
40       * The maven project.
41       */
42      private MavenProject project;
43  
44      /**
45       * The maven project packaging.
46       */
47      private String packaging;
48  
49      /**
50       * Eclipse project dir.
51       */
52      private File eclipseProjectDirectory;
53  
54      /**
55       * The name of the project in eclipse.
56       */
57      private String eclipseProjectName;
58  
59      /**
60       * Base project dir.
61       */
62      private File projectBaseDir;
63  
64      /**
65       * List of IDE dependencies.
66       */
67      private IdeDependency[] deps = new IdeDependency[0];
68  
69      /**
70       * List of IDE dependencies ordered.
71       */
72      private IdeDependency[] orderedDeps = new IdeDependency[0];
73  
74      /**
75       * Source directories.
76       */
77      private EclipseSourceDir[] sourceDirs;
78  
79      /**
80       * Local maven repo.
81       */
82      private ArtifactRepository localRepository;
83  
84      /**
85       * Build output directory for eclipse.
86       */
87      private File buildOutputDirectory;
88  
89      /**
90       * Manifest file.
91       */
92      private File manifestFile;
93  
94      /**
95       * PDE mode.
96       */
97      private boolean pde;
98  
99      /**
100      * Project natures.
101      */
102     private List projectnatures;
103 
104     /**
105      * Project facets.
106      */
107     private Map projectFacets;
108 
109     /**
110      * Build commands. List<BuildCommand>
111      */
112     private List buildCommands;
113 
114     /**
115      * Classpath containers.
116      */
117     private List classpathContainers;
118 
119     /**
120      * Appends the version number to the project name if <tt>true</tt>.
121      * 
122      * @deprecated use {@link #projectNameTemplate}
123      */
124     private boolean addVersionToProjectName;
125 
126     /**
127      * @see EclipsePlugin#getProjectNameTemplate()
128      */
129     private String projectNameTemplate;
130 
131     /**
132      * @see EclipsePlugin#deployName()
133      */
134 
135     private String contextName;
136 
137     /**
138      * @see EclipsePlugin#wtpapplicationxml()
139      */
140     private boolean wtpapplicationxml;
141 
142     /**
143      * @see EclipsePlugin#getWtpversion()
144      */
145     private float wtpVersion;
146 
147     /**
148      * Getter for <code>deps</code>.
149      * 
150      * @return Returns the deps.
151      */
152     public IdeDependency[] getDeps()
153     {
154         return this.deps;
155     }
156 
157     /**
158      * Setter for <code>deps</code>.
159      * 
160      * @param deps The deps to set.
161      */
162     public void setDeps( IdeDependency[] deps )
163     {
164         this.deps = deps;
165         if ( deps != null )
166         {
167             // TODO get the right comparator depending on orderDependencies={name,nearness..};
168             // if none specified it could use a NullComparator to reduce the number of
169             // conditions that have to be checked
170             Comparator depsByArtifactId = new Comparator()
171             {
172                 public int compare( Object o1, Object o2 )
173                 {
174                     return ( (IdeDependency) o1 ).getArtifactId().compareToIgnoreCase(
175                                                                                        ( (IdeDependency) o2 ).getArtifactId() );
176                 }
177             };
178 
179             orderedDeps = new IdeDependency[deps.length];
180             System.arraycopy( deps, 0, orderedDeps, 0, deps.length );
181             Arrays.sort( orderedDeps, depsByArtifactId );
182         }
183     }
184 
185     /**
186      * Getter for <code>eclipseProjectDir</code>.
187      * 
188      * @return Returns the eclipseProjectDir.
189      */
190     public File getEclipseProjectDirectory()
191     {
192         return this.eclipseProjectDirectory;
193     }
194 
195     /**
196      * Setter for <code>eclipseProjectDir</code>.
197      * 
198      * @param eclipseProjectDir The eclipseProjectDir to set.
199      */
200     public void setEclipseProjectDirectory( File eclipseProjectDir )
201     {
202         this.eclipseProjectDirectory = eclipseProjectDir;
203     }
204 
205     /**
206      * Getter for <code>eclipseProjectName</code>.
207      * 
208      * @return Returns the project name used in eclipse.
209      */
210     public String getEclipseProjectName()
211     {
212         return eclipseProjectName;
213     }
214 
215     /**
216      * Setter for <code>eclipseProjectName</code>.
217      * 
218      * @param eclipseProjectName the project name used in eclipse.
219      */
220     public void setEclipseProjectName( String eclipseProjectName )
221     {
222         this.eclipseProjectName = eclipseProjectName;
223     }
224 
225     /**
226      * Getter for <code>project</code>.
227      * 
228      * @return Returns the project.
229      */
230     public MavenProject getProject()
231     {
232         return this.project;
233     }
234 
235     /**
236      * Setter for <code>project</code>.
237      * 
238      * @param project The project to set.
239      */
240     public void setProject( MavenProject project )
241     {
242         this.project = project;
243     }
244 
245     /**
246      * Getter for <code>sourceDirs</code>.
247      * 
248      * @return Returns the sourceDirs.
249      */
250     public EclipseSourceDir[] getSourceDirs()
251     {
252         return this.sourceDirs;
253     }
254 
255     /**
256      * Setter for <code>sourceDirs</code>.
257      * 
258      * @param sourceDirs The sourceDirs to set.
259      */
260     public void setSourceDirs( EclipseSourceDir[] sourceDirs )
261     {
262         this.sourceDirs = sourceDirs;
263     }
264 
265     /**
266      * Getter for <code>buildOutputDirectory</code>.
267      * 
268      * @return Returns the buildOutputDirectory.
269      */
270     public File getBuildOutputDirectory()
271     {
272         return this.buildOutputDirectory;
273     }
274 
275     /**
276      * Setter for <code>buildOutputDirectory</code>.
277      * 
278      * @param buildOutputDirectory The buildOutputDirectory to set.
279      */
280     public void setBuildOutputDirectory( File buildOutputDirectory )
281     {
282         this.buildOutputDirectory = buildOutputDirectory;
283     }
284 
285     /**
286      * Getter for <code>localRepository</code>.
287      * 
288      * @return Returns the localRepository.
289      */
290     public ArtifactRepository getLocalRepository()
291     {
292         return this.localRepository;
293     }
294 
295     /**
296      * Setter for <code>localRepository</code>.
297      * 
298      * @param localRepository The localRepository to set.
299      */
300     public void setLocalRepository( ArtifactRepository localRepository )
301     {
302         this.localRepository = localRepository;
303     }
304 
305     /**
306      * Getter for <code>manifestFile</code>.
307      * 
308      * @return Returns the manifestFile.
309      */
310     public File getManifestFile()
311     {
312         return this.manifestFile;
313     }
314 
315     /**
316      * Setter for <code>manifestFile</code>.
317      * 
318      * @param manifestFile The manifestFile to set.
319      */
320     public void setManifestFile( File manifestFile )
321     {
322         this.manifestFile = manifestFile;
323     }
324 
325     /**
326      * Getter for <code>classpathContainers</code>.
327      * 
328      * @return Returns the classpathContainers.
329      */
330     public List getClasspathContainers()
331     {
332         return this.classpathContainers;
333     }
334 
335     /**
336      * Setter for <code>classpathContainers</code>.
337      * 
338      * @param classpathContainers The classpathContainers to set.
339      */
340     public void setClasspathContainers( List classpathContainers )
341     {
342         this.classpathContainers = classpathContainers;
343     }
344 
345     /**
346      * Getter for <code>pde</code>.
347      * 
348      * @return Returns the pde.
349      */
350     public boolean isPde()
351     {
352         return this.pde;
353     }
354 
355     /**
356      * Setter for <code>pde</code>.
357      * 
358      * @param pde The pde to set.
359      */
360     public void setPde( boolean pde )
361     {
362         this.pde = pde;
363     }
364 
365     /**
366      * Getter for <code>buildCommands</code>.
367      * 
368      * @return Returns the buildCommands.
369      */
370     public List getBuildCommands()
371     {
372         return this.buildCommands;
373     }
374 
375     /**
376      * Setter for <code>buildCommands</code>.
377      * 
378      * @param buildCommands The buildCommands to set.
379      */
380     public void setBuildCommands( List buildCommands )
381     {
382         this.buildCommands = buildCommands;
383     }
384 
385     /**
386      * Getter for <code>projectnatures</code>.
387      * 
388      * @return Returns the projectnatures.
389      */
390     public List getProjectnatures()
391     {
392         return this.projectnatures;
393     }
394 
395     /**
396      * Setter for <code>projectnatures</code>.
397      * 
398      * @param projectnatures The projectnatures to set.
399      */
400     public void setProjectnatures( List projectnatures )
401     {
402         this.projectnatures = projectnatures;
403     }
404 
405     /**
406      * Getter for <code>projectFacets</code>.
407      * 
408      * @return Returns the projectFacets
409      */
410     public Map getProjectFacets()
411     {
412         return projectFacets;
413     }
414 
415     /**
416      * Setter for <code>projectFacets</code>
417      * 
418      * @param projectFacets The projectFacets to set.
419      */
420     public void setProjectFacets( Map projectFacets )
421     {
422         this.projectFacets = projectFacets;
423     }
424 
425     /**
426      * Getter for <code>projectBaseDir</code>.
427      * 
428      * @return Returns the projectBaseDir.
429      */
430     public File getProjectBaseDir()
431     {
432         return this.projectBaseDir;
433     }
434 
435     /**
436      * Setter for <code>projectBaseDir</code>.
437      * 
438      * @param projectBaseDir The projectBaseDir to set.
439      */
440     public void setProjectBaseDir( File projectBaseDir )
441     {
442         this.projectBaseDir = projectBaseDir;
443     }
444 
445     /**
446      * Getter for <code>addVersionToProjectName</code>.
447      * 
448      * @deprecated use {@link #getProjectNameTemplate()}
449      */
450     public boolean isAddVersionToProjectName()
451     {
452         return addVersionToProjectName;
453     }
454 
455     /**
456      * Setter for <code>addVersionToProjectName</code>.
457      * 
458      * @deprecated use {@link #setProjectNameTemplate(String)}
459      */
460     public void setAddVersionToProjectName( boolean addVersionToProjectName )
461     {
462         this.addVersionToProjectName = addVersionToProjectName;
463     }
464 
465     public void setProjectNameTemplate( String projectNameTemplate )
466     {
467         this.projectNameTemplate = projectNameTemplate;
468     }
469 
470     public String getProjectNameTemplate()
471     {
472         return projectNameTemplate;
473     }
474 
475     public String getContextName()
476     {
477         return this.contextName;
478     }
479 
480     public void setContextName( String deployName )
481     {
482         this.contextName = deployName;
483     }
484 
485     /**
486      * @return the packaging
487      */
488     public String getPackaging()
489     {
490         return this.packaging;
491     }
492 
493     /**
494      * @param packaging the packaging to set
495      */
496     public void setPackaging( String packaging )
497     {
498         this.packaging = packaging;
499     }
500 
501     /**
502      * Getter for <code>wtpapplicationxml</code>.
503      * 
504      * @return Returns the wtpapplicationxml.
505      */
506     public boolean getWtpapplicationxml()
507     {
508         return this.wtpapplicationxml;
509     }
510 
511     /**
512      * Setter for <code>buildCommands</code>.
513      * 
514      * @param buildCommands The buildCommands to set.
515      */
516     public void setWtpapplicationxml( boolean wtpapplicationxml )
517     {
518         this.wtpapplicationxml = wtpapplicationxml;
519     }
520 
521     /**
522      * Getter for <code>wtpVersion</code>.
523      * 
524      * @return Returns the wtpVersion.
525      */
526     public float getWtpVersion()
527     {
528         return wtpVersion;
529     }
530 
531     /**
532      * Setter for <code>wtpVersion</code>.
533      * 
534      * @param wtpVersion The wtpVersion to set.
535      */
536     public void setWtpVersion( float wtpVersion )
537     {
538         this.wtpVersion = wtpVersion;
539     }
540 
541     /**
542      * @return an ordered list of dependencies
543      */
544     public IdeDependency[] getDepsOrdered()
545     {
546         return orderedDeps;
547     }
548 
549 }