01: package net.sourceforge.pmd;
02:
03: import java.io.File;
04: import java.util.HashMap;
05: import java.util.Map;
06:
07: /**
08: * This class can give the SourceType of a source file.
09: *
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(
32: SourceFileConstants.JSP_EXTENSION_UPPERCASE,
33: SourceType.JSP);
34: mapExtensionOnSourceType.put(
35: SourceFileConstants.JSPX_EXTENSION_UPPERCASE,
36: SourceType.JSP);
37:
38: // TODO: Do we want a default ??
39: mapExtensionOnSourceType.put(
40: SourceFileConstants.JAVA_EXTENSION_UPPERCASE,
41: SourceType.JAVA_14);
42: }
43:
44: /**
45: * Get the SourceType of a given source file.
46: *
47: * @param sourceFile The File
48: * @return a SourceType
49: */
50: public SourceType getSourceTypeOfFile(File sourceFile) {
51: String fileName = sourceFile.getName();
52: return getSourceTypeOfFile(fileName);
53: }
54:
55: /**
56: * Get the SourceType of a source file with given name.
57: *
58: * @param fileName The File
59: * @return a SourceType ; null if the fileName is not recognized as a supported source type.
60: */
61: public SourceType getSourceTypeOfFile(String fileName) {
62: SourceType sourceType = null;
63:
64: int extensionIndex = 1 + fileName.lastIndexOf('.');
65: if (extensionIndex > 0) {
66: String extensionUppercase = fileName.substring(
67: extensionIndex).toUpperCase();
68:
69: sourceType = mapExtensionOnSourceType
70: .get(extensionUppercase);
71: }
72:
73: return sourceType;
74: }
75:
76: /**
77: * Set the SourceType of files with ".java" extension. This chooses the Java
78: * version.
79: *
80: * @param sourceType the wanted SourceType
81: */
82: public void setSourceTypeOfJavaFiles(SourceType sourceType) {
83: mapExtensionOnSourceType.put(
84: SourceFileConstants.JAVA_EXTENSION_UPPERCASE,
85: sourceType);
86: }
87:
88: public SourceType getSourceTypeOfJavaFiles() {
89: return mapExtensionOnSourceType
90: .get(SourceFileConstants.JAVA_EXTENSION_UPPERCASE);
91: }
92: }
|