View Javadoc

1   package net.sf.mavenhist.extractor;
2   
3   import java.util.HashMap;
4   
5   import net.sf.mavenhist.extractor.checkstyle.CheckstyleAllExtractor;
6   import net.sf.mavenhist.extractor.checkstyle.CheckstyleCheckedFilesExtractor;
7   import net.sf.mavenhist.extractor.checkstyle.CheckstyleErrorExtractor;
8   import net.sf.mavenhist.extractor.checkstyle.CheckstyleInfoExtractor;
9   import net.sf.mavenhist.extractor.checkstyle.CheckstyleWarningExtractor;
10  import net.sf.mavenhist.extractor.cobertura.CoberturaBranchPercentageExtractor;
11  import net.sf.mavenhist.extractor.cobertura.CoberturaLinesOfCodeExtractor;
12  import net.sf.mavenhist.extractor.cobertura.CoberturaLinesPercentageExtractor;
13  import net.sf.mavenhist.extractor.cpd.CPDDuplicatedLinesExtractor;
14  import net.sf.mavenhist.extractor.findbugs.FindbugsViolationFilesExtractor;
15  import net.sf.mavenhist.extractor.findbugs.FindbugsViolationsExtractor;
16  import net.sf.mavenhist.extractor.jncss.JNCSSCCNExtractor;
17  import net.sf.mavenhist.extractor.jncss.JNCSSClassesExtractor;
18  import net.sf.mavenhist.extractor.jncss.JNCSSFunctionsExtractor;
19  import net.sf.mavenhist.extractor.jncss.JNCSSFunctionsPerPackageExtractor;
20  import net.sf.mavenhist.extractor.jncss.JNCSSJavadocsExtractor;
21  import net.sf.mavenhist.extractor.jncss.JNCSSNCSSExtractor;
22  import net.sf.mavenhist.extractor.jncss.JNCSSPackagesExtractor;
23  import net.sf.mavenhist.extractor.junit.JUnitErrorsExtractor;
24  import net.sf.mavenhist.extractor.junit.JUnitFailuresExtractor;
25  import net.sf.mavenhist.extractor.junit.JUnitPassrateExtractor;
26  import net.sf.mavenhist.extractor.junit.JUnitTestsExtractor;
27  import net.sf.mavenhist.extractor.pmd.PMDFilesExtractor;
28  import net.sf.mavenhist.extractor.pmd.PMDViolationsExtractor;
29  import net.sf.mavenhist.extractor.surefire.TestErrorsExtractor;
30  import net.sf.mavenhist.extractor.surefire.TestFailuresExtractor;
31  import net.sf.mavenhist.extractor.surefire.TestPassrateExtractor;
32  import net.sf.mavenhist.extractor.surefire.TestSkippedExtractor;
33  import net.sf.mavenhist.extractor.surefire.TestTestsExtractor;
34  import net.sf.mavenhist.extractor.surefire.TestTimeExtractor;
35  
36  
37  /**
38   * This factory is capable to create different extractors.
39   */
40  public class ExtractorFactory {
41    
42    private static HashMap hashMap;
43    private static ExtractorFactory extractorFactory;
44    
45    /**
46     * Gets the singleton instance.
47     * @return the single instance.
48     */
49    public static ExtractorFactory getInstance() {
50      if (extractorFactory == null) {
51        extractorFactory = new ExtractorFactory();
52        ExtractorFactory.initialize();
53      }
54      return extractorFactory;
55    }
56    
57    /**
58     * Gets a <code>ValueExtractor</code> for the specified id.
59     * @param id of the required extractor.
60     * @return found extractor or <code>null</code> if none is found.
61     */
62    public IValueExtractor getValueExtractor(String id) {
63      return (IValueExtractor) hashMap.get(id);
64    }
65    
66    /**
67     * Initializes the internal map of all extractors.
68     */
69    private static void initialize() {
70      hashMap = new HashMap();
71      putInMap(new CheckstyleAllExtractor());
72      putInMap(new CheckstyleErrorExtractor());
73      putInMap(new CheckstyleWarningExtractor());
74      putInMap(new CheckstyleInfoExtractor());
75      putInMap(new CheckstyleCheckedFilesExtractor());
76      
77      putInMap(new CoberturaLinesOfCodeExtractor());
78      putInMap(new CoberturaBranchPercentageExtractor());
79      putInMap(new CoberturaLinesPercentageExtractor());
80      
81      putInMap(new FindbugsViolationFilesExtractor());
82      putInMap(new FindbugsViolationsExtractor());
83      
84      putInMap(new JNCSSClassesExtractor());
85      putInMap(new JNCSSCCNExtractor());
86      putInMap(new JNCSSFunctionsExtractor());
87      putInMap(new JNCSSFunctionsPerPackageExtractor());
88      putInMap(new JNCSSJavadocsExtractor());
89      putInMap(new JNCSSNCSSExtractor());
90      putInMap(new JNCSSPackagesExtractor());
91      
92      putInMap(new PMDViolationsExtractor());
93      putInMap(new PMDFilesExtractor());
94      
95      /**
96       * Only for maven 1
97       */
98      putInMap(new JUnitErrorsExtractor());
99      putInMap(new JUnitFailuresExtractor());
100     putInMap(new JUnitPassrateExtractor());
101     putInMap(new JUnitTestsExtractor());
102     
103     /**
104      * Only for maven 2
105      */
106     putInMap(new TestErrorsExtractor());
107     putInMap(new TestFailuresExtractor());
108     putInMap(new TestPassrateExtractor());
109     putInMap(new TestSkippedExtractor());
110     putInMap(new TestTestsExtractor());
111     putInMap(new TestTimeExtractor());
112     
113     /**
114      * Only for maven 2
115      */
116     putInMap(new CPDDuplicatedLinesExtractor());
117   }
118   
119   /**
120    * Helper method to put an extractor correctly into the map. Name as key and the extractor as
121    * value.
122    * 
123    * @param extractor to put in the map.
124    */
125   private static void putInMap(INamedExtractor extractor) {
126     hashMap.put(extractor.getName(), extractor);
127   }
128   
129   /**
130    * Gets an array of all available extractors.
131    *
132    * @return Array of all available extractors.
133    */
134   public IValueExtractor[] getAllExtractors() {
135     return (IValueExtractor[]) hashMap.values().toArray(new IValueExtractor[0]);
136   }
137 }