OSDN Git Service

save
[jcfa/jcfa.git] / jcfa / src / jp / igapyon / jcfa / util / JcfaWriteUtil.java
1 package jp.igapyon.jcfa.util;
2
3 import java.io.BufferedWriter;
4 import java.io.FileOutputStream;
5 import java.io.IOException;
6 import java.io.OutputStreamWriter;
7
8 import jp.igapyon.jcfa.vo.JcfaClass;
9 import jp.igapyon.jcfa.vo.JcfaComment;
10 import jp.igapyon.jcfa.vo.JcfaField;
11 import jp.igapyon.jcfa.vo.JcfaMethod;
12 import jp.igapyon.jcfa.vo.JcfaUnit;
13
14 public class JcfaWriteUtil {
15         public static void writeToFile(final JcfaUnit jcfaUnit) throws IOException {
16                 final StringBuffer result = new StringBuffer();
17
18                 for (JcfaClass jcfaClass : jcfaUnit.getClassList()) {
19                         writeToBuffer(jcfaClass, result);
20                 }
21
22                 final BufferedWriter writer = new BufferedWriter(
23                                 new OutputStreamWriter(new FileOutputStream(
24                                                 jcfaUnit.getTargetFile())));
25                 writer.write(JcfaEclipseUtil.formatSource(result.toString()));
26                 writer.close();
27         }
28
29         /**
30          * Write class
31          * 
32          * @param jcfaClass
33          * @param result
34          */
35         public static void writeToBuffer(final JcfaClass jcfaClass,
36                         final StringBuffer result) {
37
38                 if (jcfaClass.isMainClass()) {
39                         if (jcfaClass.getName().contains(".")) {
40                                 result.append(" package "
41                                                 + jcfaClass.getName().substring(0,
42                                                                 jcfaClass.getName().lastIndexOf(".")) + ";");
43                         }
44                 }
45
46                 writeToBuffer(jcfaClass.getComment(), result);
47
48                 result.append(jcfaClass.getAccess());
49                 result.append(" class " + jcfaClass.getLocalName());
50                 if (jcfaClass.getExtendsName() != null
51                                 && jcfaClass.getExtendsName().length() > 0
52                                 && jcfaClass.getExtendsName().equals("java.lang.Object") == false) {
53                         result.append(" extends " + jcfaClass.getExtendsName());
54                 }
55                 result.append("{");
56
57                 for (JcfaField jcfaField : jcfaClass.getFieldList()) {
58                         writeToBuffer(jcfaField, result);
59                 }
60
61                 for (JcfaMethod jcfaMethod : jcfaClass.getMethodList()) {
62                         writeToBuffer(jcfaMethod, result);
63                 }
64
65                 result.append("}");
66         }
67
68         public static void writeToBuffer(final JcfaField jcfaField,
69                         final StringBuffer result) {
70                 writeToBuffer(jcfaField.getComment(), result);
71
72                 result.append(" " + jcfaField.getAccess() + " " + jcfaField.getType()
73                                 + " " + jcfaField.getName());
74                 result.append(";");
75         }
76
77         public static void writeToBuffer(final JcfaMethod jcfaMethod,
78                         final StringBuffer result) {
79
80                 writeToBuffer(jcfaMethod.getComment(), result);
81
82         }
83
84         public static void writeToBuffer(final JcfaComment jcfaComment,
85                         final StringBuffer result) {
86                 if (jcfaComment.isJavaDoc()) {
87                         result.append("\n/** ");
88                 } else {
89                         result.append("\n/* ");
90                 }
91
92                 for (String comment : jcfaComment.getCommentList()) {
93                         result.append(" " + comment + " ");
94                 }
95
96                 result.append(" */\n");
97         }
98 }