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.eclipse.WorkspaceConfiguration;
31  import org.apache.maven.plugin.ide.IdeDependency;
32  import org.apache.maven.project.MavenProject;
33  
34  /**
35   * @author Fabrizio Giustina
36   * @version $Id: EclipseWriterConfig.java 798336 2009-07-27 23:54:06Z aheritier $
37   */
38  public class EclipseWriterConfig
39  {
40      /**
41       * The maven project.
42       */
43      private MavenProject project;
44  
45      /**
46       * The maven project packaging.
47       */
48      private String packaging;
49  
50      /**
51       * Eclipse project dir.
52       */
53      private File eclipseProjectDirectory;
54  
55      /**
56       * The name of the project in eclipse.
57       */
58      private String eclipseProjectName;
59  
60      /**
61       * Base project dir.
62       */
63      private File projectBaseDir;
64  
65      /**
66       * List of IDE dependencies.
67       */
68      private IdeDependency[] deps = new IdeDependency[0];
69  
70      /**
71       * List of IDE dependencies ordered.
72       */
73      private IdeDependency[] orderedDeps = new IdeDependency[0];
74  
75      /**
76       * Source directories.
77       */
78      private EclipseSourceDir[] sourceDirs;
79  
80      /**
81       * Local maven repo.
82       */
83      private ArtifactRepository localRepository;
84  
85      /**
86       * Build output directory for eclipse.
87       */
88      private File buildOutputDirectory;
89  
90      /**
91       * Manifest file.
92       */
93      private File osgiManifestFile;
94  
95      /**
96       * PDE mode.
97       */
98      private boolean pde;
99  
100     /**
101      * Project natures.
102      */
103     private List projectnatures;
104 
105     /**
106      * Project facets.
107      */
108     private Map projectFacets;
109 
110     /**
111      * Build commands. List<BuildCommand>
112      */
113     private List buildCommands;
114 
115     /**
116      * Classpath containers.
117      */
118     private List classpathContainers;
119 
120     /**
121      * Appends the version number to the project name if <tt>true</tt>.
122      * 
123      * @deprecated use {@link #projectNameTemplate}
124      */
125     private boolean addVersionToProjectName;
126 
127     /**
128      * @see EclipsePlugin#getProjectNameTemplate()
129      */
130     private String projectNameTemplate;
131 
132     /**
133      * @see EclipsePlugin#deployName()
134      */
135 
136     private String contextName;
137 
138     /**
139      * @see EclipsePlugin#wtpapplicationxml()
140      */
141     private boolean wtpapplicationxml;
142 
143     /**
144      * @see EclipsePlugin#getWtpversion()
145      */
146     private float wtpVersion;
147 
148     private float ajdtVersion;
149 
150     private WorkspaceConfiguration workspaceConfiguration;
151 
152     private List linkedResources;
153 
154     public WorkspaceConfiguration getWorkspaceConfiguration()
155     {
156         return workspaceConfiguration;
157     }
158 
159     public void setWorkspaceConfiguration( WorkspaceConfiguration workspaceConfiguration )
160     {
161         this.workspaceConfiguration = workspaceConfiguration;
162     }
163 
164     /**
165      * Getter for <code>deps</code>.
166      * 
167      * @return Returns the deps.
168      */
169     public IdeDependency[] getDeps()
170     {
171         return deps;
172     }
173 
174     /**
175      * Setter for <code>deps</code>.
176      * 
177      * @param deps The deps to set.
178      */
179     public void setDeps( IdeDependency[] deps )
180     {
181         this.deps = deps;
182         if ( deps != null )
183         {
184             // TODO get the right comparator depending on orderDependencies={name,nearness..};
185             // if none specified it could use a NullComparator to reduce the number of
186             // conditions that have to be checked
187             Comparator depsByArtifactId = new Comparator()
188             {
189                 public int compare( Object o1, Object o2 )
190                 {
191                     int result =
192                         ( (IdeDependency) o1 ).getArtifactId().compareToIgnoreCase(
193                                                                                     ( (IdeDependency) o2 ).getArtifactId() );
194                     if ( result != 0 )
195                     {
196                         return result;
197                     }
198                     if ( ( (IdeDependency) o1 ).getClassifier() != null
199                         && ( (IdeDependency) o2 ).getClassifier() != null )
200                     {
201                         result =
202                             ( (IdeDependency) o1 ).getClassifier().compareToIgnoreCase(
203                                                                                         ( (IdeDependency) o2 ).getClassifier() );
204                         if ( result != 0 )
205                         {
206                             return result;
207                         }
208                     }
209                     result = ( (IdeDependency) o1 ).getType().compareToIgnoreCase( ( (IdeDependency) o2 ).getType() );
210                     if ( result != 0 )
211                     {
212                         return result;
213                     }
214                     result =
215                         ( (IdeDependency) o1 ).getGroupId().compareToIgnoreCase( ( (IdeDependency) o2 ).getGroupId() );
216                     return result;
217                 }
218             };
219 
220             orderedDeps = new IdeDependency[deps.length];
221             System.arraycopy( deps, 0, orderedDeps, 0, deps.length );
222             Arrays.sort( orderedDeps, depsByArtifactId );
223         }
224     }
225 
226     /**
227      * Getter for <code>eclipseProjectDir</code>.
228      * 
229      * @return Returns the eclipseProjectDir.
230      */
231     public File getEclipseProjectDirectory()
232     {
233         return eclipseProjectDirectory;
234     }
235 
236     /**
237      * Setter for <code>eclipseProjectDir</code>.
238      * 
239      * @param eclipseProjectDir The eclipseProjectDir to set.
240      */
241     public void setEclipseProjectDirectory( File eclipseProjectDir )
242     {
243         eclipseProjectDirectory = eclipseProjectDir;
244     }
245 
246     /**
247      * Getter for <code>eclipseProjectName</code>.
248      * 
249      * @return Returns the project name used in eclipse.
250      */
251     public String getEclipseProjectName()
252     {
253         return eclipseProjectName;
254     }
255 
256     /**
257      * Setter for <code>eclipseProjectName</code>.
258      * 
259      * @param eclipseProjectName the project name used in eclipse.
260      */
261     public void setEclipseProjectName( String eclipseProjectName )
262     {
263         this.eclipseProjectName = eclipseProjectName;
264     }
265 
266     /**
267      * Getter for <code>project</code>.
268      * 
269      * @return Returns the project.
270      */
271     public MavenProject getProject()
272     {
273         return project;
274     }
275 
276     /**
277      * Setter for <code>project</code>.
278      * 
279      * @param project The project to set.
280      */
281     public void setProject( MavenProject project )
282     {
283         this.project = project;
284     }
285 
286     /**
287      * Getter for <code>sourceDirs</code>.
288      * 
289      * @return Returns the sourceDirs.
290      */
291     public EclipseSourceDir[] getSourceDirs()
292     {
293         return sourceDirs;
294     }
295 
296     /**
297      * Setter for <code>sourceDirs</code>.
298      * 
299      * @param sourceDirs The sourceDirs to set.
300      */
301     public void setSourceDirs( EclipseSourceDir[] sourceDirs )
302     {
303         this.sourceDirs = sourceDirs;
304     }
305 
306     /**
307      * Getter for <code>buildOutputDirectory</code>.
308      * 
309      * @return Returns the buildOutputDirectory.
310      */
311     public File getBuildOutputDirectory()
312     {
313         return buildOutputDirectory;
314     }
315 
316     /**
317      * Setter for <code>buildOutputDirectory</code>.
318      * 
319      * @param buildOutputDirectory The buildOutputDirectory to set.
320      */
321     public void setBuildOutputDirectory( File buildOutputDirectory )
322     {
323         this.buildOutputDirectory = buildOutputDirectory;
324     }
325 
326     /**
327      * Getter for <code>localRepository</code>.
328      * 
329      * @return Returns the localRepository.
330      */
331     public ArtifactRepository getLocalRepository()
332     {
333         return localRepository;
334     }
335 
336     /**
337      * Setter for <code>localRepository</code>.
338      * 
339      * @param localRepository The localRepository to set.
340      */
341     public void setLocalRepository( ArtifactRepository localRepository )
342     {
343         this.localRepository = localRepository;
344     }
345 
346     /**
347      * Getter for <code>manifestFile</code>.
348      * 
349      * @return Returns the manifestFile.
350      */
351     public File getOSGIManifestFile()
352     {
353         return osgiManifestFile;
354     }
355 
356     /**
357      * Setter for <code>manifestFile</code>.
358      * 
359      * @param manifestFile The manifestFile to set.
360      */
361     public void setOSGIManifestFile( File manifestFile )
362     {
363         this.osgiManifestFile = manifestFile;
364     }
365 
366     /**
367      * Getter for <code>classpathContainers</code>.
368      * 
369      * @return Returns the classpathContainers.
370      */
371     public List getClasspathContainers()
372     {
373         return classpathContainers;
374     }
375 
376     /**
377      * Setter for <code>classpathContainers</code>.
378      * 
379      * @param classpathContainers The classpathContainers to set.
380      */
381     public void setClasspathContainers( List classpathContainers )
382     {
383         this.classpathContainers = classpathContainers;
384     }
385 
386     /**
387      * Getter for <code>pde</code>.
388      * 
389      * @return Returns the pde.
390      */
391     public boolean isPde()
392     {
393         return pde;
394     }
395 
396     /**
397      * Setter for <code>pde</code>.
398      * 
399      * @param pde The pde to set.
400      */
401     public void setPde( boolean pde )
402     {
403         this.pde = pde;
404     }
405 
406     /**
407      * Getter for <code>buildCommands</code>.
408      * 
409      * @return Returns the buildCommands.
410      */
411     public List getBuildCommands()
412     {
413         return buildCommands;
414     }
415 
416     /**
417      * Setter for <code>buildCommands</code>.
418      * 
419      * @param buildCommands The buildCommands to set.
420      */
421     public void setBuildCommands( List buildCommands )
422     {
423         this.buildCommands = buildCommands;
424     }
425 
426     /**
427      * Getter for <code>projectnatures</code>.
428      * 
429      * @return Returns the projectnatures.
430      */
431     public List getProjectnatures()
432     {
433         return projectnatures;
434     }
435 
436     /**
437      * Setter for <code>projectnatures</code>.
438      * 
439      * @param projectnatures The projectnatures to set.
440      */
441     public void setProjectnatures( List projectnatures )
442     {
443         this.projectnatures = projectnatures;
444     }
445 
446     /**
447      * Getter for <code>projectFacets</code>.
448      * 
449      * @return Returns the projectFacets
450      */
451     public Map getProjectFacets()
452     {
453         return projectFacets;
454     }
455 
456     /**
457      * Setter for <code>projectFacets</code>
458      * 
459      * @param projectFacets The projectFacets to set.
460      */
461     public void setProjectFacets( Map projectFacets )
462     {
463         this.projectFacets = projectFacets;
464     }
465 
466     /**
467      * Getter for <code>projectBaseDir</code>.
468      * 
469      * @return Returns the projectBaseDir.
470      */
471     public File getProjectBaseDir()
472     {
473         return projectBaseDir;
474     }
475 
476     /**
477      * Setter for <code>projectBaseDir</code>.
478      * 
479      * @param projectBaseDir The projectBaseDir to set.
480      */
481     public void setProjectBaseDir( File projectBaseDir )
482     {
483         this.projectBaseDir = projectBaseDir;
484     }
485 
486     /**
487      * Getter for <code>addVersionToProjectName</code>.
488      * 
489      * @deprecated use {@link #getProjectNameTemplate()}
490      */
491     public boolean isAddVersionToProjectName()
492     {
493         return addVersionToProjectName;
494     }
495 
496     /**
497      * Setter for <code>addVersionToProjectName</code>.
498      * 
499      * @deprecated use {@link #setProjectNameTemplate(String)}
500      */
501     public void setAddVersionToProjectName( boolean addVersionToProjectName )
502     {
503         this.addVersionToProjectName = addVersionToProjectName;
504     }
505 
506     public void setProjectNameTemplate( String projectNameTemplate )
507     {
508         this.projectNameTemplate = projectNameTemplate;
509     }
510 
511     public String getProjectNameTemplate()
512     {
513         return projectNameTemplate;
514     }
515 
516     public String getContextName()
517     {
518         return contextName;
519     }
520 
521     public void setContextName( String deployName )
522     {
523         contextName = deployName;
524     }
525 
526     /**
527      * @return the packaging
528      */
529     public String getPackaging()
530     {
531         return packaging;
532     }
533 
534     /**
535      * @param packaging the packaging to set
536      */
537     public void setPackaging( String packaging )
538     {
539         this.packaging = packaging;
540     }
541 
542     /**
543      * Getter for <code>wtpapplicationxml</code>.
544      * 
545      * @return Returns the wtpapplicationxml.
546      */
547     public boolean getWtpapplicationxml()
548     {
549         return wtpapplicationxml;
550     }
551 
552     /**
553      * Setter for <code>buildCommands</code>.
554      * 
555      * @param buildCommands The buildCommands to set.
556      */
557     public void setWtpapplicationxml( boolean wtpapplicationxml )
558     {
559         this.wtpapplicationxml = wtpapplicationxml;
560     }
561 
562     /**
563      * Getter for <code>wtpVersion</code>.
564      * 
565      * @return Returns the wtpVersion.
566      */
567     public float getWtpVersion()
568     {
569         return wtpVersion;
570     }
571 
572     /**
573      * Setter for <code>wtpVersion</code>.
574      * 
575      * @param wtpVersion The wtpVersion to set.
576      */
577     public void setWtpVersion( float wtpVersion )
578     {
579         this.wtpVersion = wtpVersion;
580     }
581 
582     /**
583      * @return an ordered list of dependencies
584      */
585     public IdeDependency[] getDepsOrdered()
586     {
587         return orderedDeps;
588     }
589 
590     /**
591      * Returns the ajdtVersion.
592      * 
593      * @return the ajdtVersion.
594      */
595     public float getAjdtVersion()
596     {
597         return ajdtVersion;
598     }
599 
600     /**
601      * Sets the ajdtVersion.
602      * 
603      * @param ajdtVersion the ajdtVersion.
604      */
605     public void setAjdtVersion( float ajdtVersion )
606     {
607         this.ajdtVersion = ajdtVersion;
608     }
609 
610     /**
611      * @return the linkedResources
612      */
613     public List getLinkedResources()
614     {
615         return linkedResources;
616     }
617 
618     /**
619      * @param linkedResources the linkedResources to set
620      */
621     public void setLinkedResources( List linkedResources )
622     {
623         this.linkedResources = linkedResources;
624     }
625 
626 }