Revision 1405 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/dynobject/impl/DynClassExportHelper.java
DynClassExportHelper.java | ||
---|---|---|
8 | 8 |
import java.util.Iterator; |
9 | 9 |
import java.util.LinkedHashMap; |
10 | 10 |
import java.util.Map; |
11 |
import org.apache.commons.lang3.StringUtils; |
|
11 | 12 |
import org.gvsig.tools.dynobject.DynClass; |
13 |
import org.gvsig.tools.dynobject.DynClass_v2; |
|
12 | 14 |
import org.gvsig.tools.dynobject.DynField; |
13 | 15 |
import org.gvsig.tools.dynobject.DynObjectValueItem; |
16 |
import org.gvsig.tools.script.Script; |
|
14 | 17 |
|
15 | 18 |
public class DynClassExportHelper implements DynClassImportExportTags { |
16 | 19 |
|
... | ... | |
18 | 21 |
|
19 | 22 |
private String tagname; |
20 | 23 |
private Map attributes = new LinkedHashMap(); |
24 |
private String text = null; |
|
25 |
private boolean close = false; |
|
26 |
private int indent = -1; |
|
21 | 27 |
|
22 |
public XMLTag(String tagname) { |
|
28 |
public XMLTag(String tagname, int indent) {
|
|
23 | 29 |
this.tagname = tagname; |
30 |
this.indent = indent; |
|
24 | 31 |
} |
25 | 32 |
|
26 | 33 |
public String getTagname() { |
... | ... | |
49 | 56 |
this.attributes.put(name, value? "true":"false"); |
50 | 57 |
} |
51 | 58 |
|
59 |
public void close() { |
|
60 |
this.close = true; |
|
61 |
} |
|
62 |
|
|
63 |
public void setText(String text) { |
|
64 |
this.text = text; |
|
65 |
} |
|
66 |
|
|
52 | 67 |
public String toString() { |
53 | 68 |
StringBuffer buffer = new StringBuffer(); |
54 | 69 |
buffer.append("<"); |
... | ... | |
64 | 79 |
buffer.append("\""); |
65 | 80 |
} |
66 | 81 |
} |
67 |
buffer.append(">\n"); |
|
82 |
buffer.append(">"); |
|
83 |
if( !StringUtils.isEmpty(this.text) ) { |
|
84 |
if( StringUtils.isAlphanumeric(this.text) ) { |
|
85 |
buffer.append(this.text); |
|
86 |
} else { |
|
87 |
buffer.append("\n<![CDATA[\n"); |
|
88 |
buffer.append(this.text); |
|
89 |
buffer.append("\n]]>\n"); |
|
90 |
} |
|
91 |
} else { |
|
92 |
buffer.append("\n"); |
|
93 |
} |
|
94 |
if( this.close ) { |
|
95 |
buffer.append(this.spaces(indent)); |
|
96 |
buffer.append("</").append(this.tagname).append(">\n"); |
|
97 |
} |
|
68 | 98 |
return buffer.toString(); |
69 | 99 |
} |
100 |
|
|
101 |
private String spaces(int indent) { |
|
102 |
if( indent<1 ) { |
|
103 |
return ""; |
|
104 |
} |
|
105 |
String spaces = " "; |
|
106 |
if( indent*2 > spaces.length() ) { |
|
107 |
return spaces; |
|
108 |
} else { |
|
109 |
return spaces.substring(0, indent*2); |
|
110 |
} |
|
111 |
} |
|
70 | 112 |
} |
71 | 113 |
|
72 | 114 |
private class XMLHelper { |
... | ... | |
115 | 157 |
} |
116 | 158 |
|
117 | 159 |
public XMLTag createTag(String tagname) { |
118 |
return new XMLTag(tagname); |
|
160 |
return new XMLTag(tagname, -1);
|
|
119 | 161 |
} |
120 | 162 |
|
163 |
public XMLTag createTag(String tagname, int indent) { |
|
164 |
return new XMLTag(tagname, indent); |
|
165 |
} |
|
166 |
|
|
121 | 167 |
public XMLHelper append(int indent, XMLTag tag) { |
122 | 168 |
this.indent(indent); |
123 | 169 |
this.buffer.append(tag.toString()); |
... | ... | |
180 | 226 |
tag.set(CLASS_NAMESPACE_TAG, superDynClass.getNamespace()); |
181 | 227 |
tag.set(CLASS_NAME_TAG, superDynClass.getName()); |
182 | 228 |
buffer.append(indent, tag); |
229 |
buffer.close(indent,tag); |
|
183 | 230 |
} |
184 | 231 |
} |
185 | 232 |
buffer.close(--indent, CLASS_EXTENDS_TAG); |
186 | 233 |
|
187 | 234 |
buffer.append(indent, CLASS_DESCRIPTION_TAG, dynClass.getDescription()); |
235 |
|
|
236 |
if( dynClass instanceof DynClass_v2 ) { |
|
237 |
Script script = ((DynClass_v2)dynClass).getScript(); |
|
238 |
if( script != null ) { |
|
239 |
tag = buffer.createTag(CLASS_CODE_TAG); |
|
240 |
tag.set(CLASS_LANGCODE_TAG, script.getTypeName()); |
|
241 |
tag.setText(script.getCode()); |
|
242 |
tag.close(); |
|
243 |
buffer.append(indent, tag); |
|
244 |
} |
|
245 |
} |
|
246 |
|
|
188 | 247 |
|
189 | 248 |
buffer.append(indent++, CLASS_FIELDS_TAG); |
190 | 249 |
|
Also available in: Unified diff