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 }