Revision 1405 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/dynobject/impl/DynClassExportHelper.java

View differences:

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