OSDN Git Service

3c236a987ffad69857155f8a5d299e4438a7fa60
[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         /**
69          * Write field.
70          * 
71          * @param jcfaField
72          * @param result
73          */
74         public static void writeToBuffer(final JcfaField jcfaField,
75                         final StringBuffer result) {
76                 writeToBuffer(jcfaField.getComment(), result);
77
78                 result.append(" " + jcfaField.getAccess() + " " + jcfaField.getType()
79                                 + " " + jcfaField.getName());
80                 if (jcfaField.getConstantValue() != null) {
81                         result.append(" = ");
82                         result.append(jcfaField.getConstantValue());
83                 }
84                 result.append(";");
85         }
86
87         public static void writeToBuffer(final JcfaMethod jcfaMethod,
88                         final StringBuffer result) {
89
90                 writeToBuffer(jcfaMethod.getComment(), result);
91
92         }
93
94         public static void writeToBuffer(final JcfaComment jcfaComment,
95                         final StringBuffer result) {
96                 if (jcfaComment.isJavaDoc()) {
97                         result.append("\n/** ");
98                 } else {
99                         result.append("\n/* ");
100                 }
101
102                 for (String comment : jcfaComment.getCommentList()) {
103                         result.append(" " + comment + " ");
104                 }
105
106                 result.append(" */\n");
107         }
108 }