1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.themis.xanalysis.parser.proj;
18
19 import io.github.tonywasher.joceanus.oceanus.base.OceanusException;
20 import io.github.tonywasher.joceanus.themis.xanalysis.parser.base.ThemisXAnalysisInstance.ThemisXAnalysisClassInstance;
21 import io.github.tonywasher.joceanus.themis.xanalysis.parser.base.ThemisXAnalysisInstance.ThemisXAnalysisNodeInstance;
22 import io.github.tonywasher.joceanus.themis.xanalysis.parser.base.ThemisXAnalysisParserDef;
23 import io.github.tonywasher.joceanus.themis.xanalysis.parser.node.ThemisXAnalysisNodeCompilationUnit;
24
25 import java.io.File;
26 import java.util.ArrayList;
27 import java.util.List;
28
29
30
31
32 public class ThemisXAnalysisFile {
33
34
35
36 public static final String SFX_JAVA = ".java";
37
38
39
40
41 private final File theLocation;
42
43
44
45
46 private final String theName;
47
48
49
50
51 private final List<ThemisXAnalysisClassInstance> theClasses;
52
53
54
55
56 private ThemisXAnalysisNodeCompilationUnit theContents;
57
58
59
60
61
62
63 ThemisXAnalysisFile(final File pFile) {
64
65 theLocation = pFile;
66 theName = pFile.getName().replace(SFX_JAVA, "");
67 theClasses = new ArrayList<>();
68 }
69
70
71
72
73
74
75 public String getName() {
76 return theName;
77 }
78
79
80
81
82
83
84 public String getLocation() {
85 return theLocation.getAbsolutePath();
86 }
87
88
89
90
91
92
93 public ThemisXAnalysisNodeCompilationUnit getContents() {
94 return theContents;
95 }
96
97
98
99
100
101
102 public List<ThemisXAnalysisClassInstance> getClasses() {
103 return theClasses;
104 }
105
106 @Override
107 public String toString() {
108 return theName;
109 }
110
111
112
113
114
115
116
117 void parseJavaCode(final ThemisXAnalysisParserDef pParser) throws OceanusException {
118
119 pParser.setCurrentFile(theLocation);
120
121
122 theContents = (ThemisXAnalysisNodeCompilationUnit) pParser.parseJavaFile();
123
124
125 final ThemisXAnalysisClassInstance myClass = theContents.getContents();
126 if (!theName.equals(myClass.getName())) {
127 throw pParser.buildException("Incorrect name for class in file", ((ThemisXAnalysisNodeInstance) myClass).getNode());
128 }
129
130
131 theClasses.addAll(pParser.getClasses());
132 }
133 }