/
JavaSourceFileContent.java
76 lines (59 loc) · 2.07 KB
/
JavaSourceFileContent.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package org.sugarj.driver.sourcefilecontent;
import java.util.LinkedList;
import java.util.List;
import org.sugarj.driver.Environment;
import org.sugarj.driver.FileCommands;
import org.sugarj.driver.path.RelativePath;
/**
* @author seba
*
*/
public class JavaSourceFileContent implements ISourceFileContent {
private static final long serialVersionUID = 1164576595940328804L;
String packageDecl;
List<String> imports = new LinkedList<String>();
boolean importsOptional;
List<String> bodyDecls = new LinkedList<String>();
public JavaSourceFileContent() {
}
public void setPackageDecl(String packageDecl) {
this.packageDecl = packageDecl;
}
public void addImport(String imp) {
imports.add(imp);
}
public void setOptionalImport(boolean isOptional) {
this.importsOptional = isOptional;
}
public void addBodyDecl(String bodyDecl) {
bodyDecls.add(bodyDecl);
}
public String getCode(List<RelativePath> generatedClasses) throws ClassNotFoundException {
List<String> classes = new LinkedList<String>();
for (RelativePath p : generatedClasses)
classes.add(FileCommands.dropExtension(p.getRelativePath()).replace(Environment.sep, "."));
StringBuilder code = new StringBuilder();
code.append(packageDecl);
code.append('\n');
for (String imp : imports)
if (classes.contains(imp))
code.append("import ").append(imp).append(";\n");
else if (!importsOptional)
throw new ClassNotFoundException(imp);
for (String bodyDecl : bodyDecls)
code.append(bodyDecl);
return code.toString();
}
public int hashCode() {
return packageDecl.hashCode() + imports.hashCode() + bodyDecls.hashCode();
}
public boolean equals(Object o) {
if (!(o instanceof JavaSourceFileContent))
return false;
JavaSourceFileContent other = (JavaSourceFileContent) o;
return other.packageDecl.equals(packageDecl) &&
other.imports.equals(imports) &&
other.importsOptional == importsOptional &&
other.bodyDecls.equals(bodyDecls);
}
}