View Javadoc

1   package net.sourceforge.pmd;
2   
3   import java.io.File;
4   import java.util.HashMap;
5   import java.util.Map;
6   
7   /**
8    * This class can give the SourceType of a source file.
9    *
10   * @author pieter_van_raemdonck - Application Engineers NV/SA - www.ae.be
11   */
12  public class SourceTypeDiscoverer {
13  
14      /**
15       * Map of (upper-case) file name extensions on the appropriate SourceType
16       * object.
17       */
18      private Map<String, SourceType> mapExtensionOnSourceType = new HashMap<String, SourceType>();
19  
20      /**
21       * Public constructor.
22       */
23      public SourceTypeDiscoverer() {
24          initialize();
25      }
26  
27      /**
28       * Initialization of mapExtensionOnSourceType.
29       */
30      private void initialize() {
31          mapExtensionOnSourceType.put(SourceFileConstants.JSP_EXTENSION_UPPERCASE, SourceType.JSP);
32          mapExtensionOnSourceType.put(SourceFileConstants.JSPX_EXTENSION_UPPERCASE, SourceType.JSP);
33  
34          // TODO: Do we want a default ??
35          mapExtensionOnSourceType.put(SourceFileConstants.JAVA_EXTENSION_UPPERCASE, SourceType.JAVA_14);
36      }
37  
38      /**
39       * Get the SourceType of a given source file.
40       *
41       * @param sourceFile The File
42       * @return a SourceType
43       */
44      public SourceType getSourceTypeOfFile(File sourceFile) {
45          String fileName = sourceFile.getName();
46          return getSourceTypeOfFile(fileName);
47      }
48  
49      /**
50       * Get the SourceType of a source file with given name.
51       *
52       * @param fileName The File
53       * @return a SourceType ; null if the fileName is not recognized as a supported source type.
54       */
55      public SourceType getSourceTypeOfFile(String fileName) {
56          SourceType sourceType = null;
57  
58          int extensionIndex = 1 + fileName.lastIndexOf('.');
59          if (extensionIndex > 0) {
60              String extensionUppercase = fileName.substring(extensionIndex).toUpperCase();
61  
62              sourceType = mapExtensionOnSourceType.get(extensionUppercase);
63          }
64  
65          return sourceType;
66      }
67  
68      /**
69       * Set the SourceType of files with ".java" extension. This chooses the Java
70       * version.
71       *
72       * @param sourceType the wanted SourceType
73       */
74      public void setSourceTypeOfJavaFiles(SourceType sourceType) {
75          mapExtensionOnSourceType.put(SourceFileConstants.JAVA_EXTENSION_UPPERCASE, sourceType);
76      }
77  
78      public SourceType getSourceTypeOfJavaFiles() {
79          return mapExtensionOnSourceType.get(SourceFileConstants.JAVA_EXTENSION_UPPERCASE);
80      }
81  }