1
2
3
4
5 package com.javaforge.bobber.archetype.model.io.xpp3;
6
7
8
9
10
11 import com.javaforge.bobber.archetype.model.BobberArchetype;
12 import com.javaforge.bobber.archetype.model.Template;
13 import com.javaforge.bobber.archetype.model.Variable;
14 import java.io.Writer;
15 import java.text.DateFormat;
16 import java.util.Iterator;
17 import java.util.Locale;
18 import org.codehaus.plexus.util.xml.pull.MXSerializer;
19 import org.codehaus.plexus.util.xml.pull.XmlSerializer;
20
21
22
23
24
25
26 public class BobberArchetypeXpp3Writer {
27
28
29
30
31
32
33
34
35
36 private String NAMESPACE;
37
38
39
40
41
42
43
44
45
46
47
48
49
50 public void write(Writer writer, BobberArchetype bobberArchetype)
51 throws java.io.IOException
52 {
53 XmlSerializer serializer = new MXSerializer();
54 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
55 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
56 serializer.setOutput( writer );
57 serializer.startDocument( bobberArchetype.getModelEncoding(), null );
58 writeBobberArchetype( bobberArchetype, "archetype", serializer );
59 serializer.endDocument();
60 }
61
62
63
64
65
66
67
68
69
70 private void writeBobberArchetype(BobberArchetype bobberArchetype, String tagName, XmlSerializer serializer)
71 throws java.io.IOException
72 {
73 if ( bobberArchetype != null )
74 {
75 serializer.startTag( NAMESPACE, tagName );
76 if ( bobberArchetype.getId() != null )
77 {
78 serializer.startTag( NAMESPACE, "id" ).text( bobberArchetype.getId() ).endTag( NAMESPACE, "id" );
79 }
80 if ( bobberArchetype.isAllowPartial() != false )
81 {
82 serializer.startTag( NAMESPACE, "allowPartial" ).text( String.valueOf( bobberArchetype.isAllowPartial() ) ).endTag( NAMESPACE, "allowPartial" );
83 }
84 if ( bobberArchetype.getVariables() != null && bobberArchetype.getVariables().size() > 0 )
85 {
86 serializer.startTag( NAMESPACE, "variables" );
87 for ( Iterator iter = bobberArchetype.getVariables().iterator(); iter.hasNext(); )
88 {
89 Variable o = (Variable) iter.next();
90 writeVariable( o, "variable", serializer );
91 }
92 serializer.endTag( NAMESPACE, "variables" );
93 }
94 if ( bobberArchetype.getTemplates() != null && bobberArchetype.getTemplates().size() > 0 )
95 {
96 serializer.startTag( NAMESPACE, "templates" );
97 for ( Iterator iter = bobberArchetype.getTemplates().iterator(); iter.hasNext(); )
98 {
99 Template o = (Template) iter.next();
100 writeTemplate( o, "template", serializer );
101 }
102 serializer.endTag( NAMESPACE, "templates" );
103 }
104 serializer.endTag( NAMESPACE, tagName );
105 }
106 }
107
108
109
110
111
112
113
114
115
116 private void writeTemplate(Template template, String tagName, XmlSerializer serializer)
117 throws java.io.IOException
118 {
119 if ( template != null )
120 {
121 serializer.startTag( NAMESPACE, tagName );
122 if ( template.getFile() != null )
123 {
124 serializer.startTag( NAMESPACE, "file" ).text( template.getFile() ).endTag( NAMESPACE, "file" );
125 }
126 if ( template.getOutput() != null )
127 {
128 serializer.startTag( NAMESPACE, "output" ).text( template.getOutput() ).endTag( NAMESPACE, "output" );
129 }
130 if ( template.getDependsOnVar() != null )
131 {
132 serializer.startTag( NAMESPACE, "dependsOnVar" ).text( template.getDependsOnVar() ).endTag( NAMESPACE, "dependsOnVar" );
133 }
134 serializer.endTag( NAMESPACE, tagName );
135 }
136 }
137
138
139
140
141
142
143
144
145
146 private void writeVariable(Variable variable, String tagName, XmlSerializer serializer)
147 throws java.io.IOException
148 {
149 if ( variable != null )
150 {
151 serializer.startTag( NAMESPACE, tagName );
152 if ( variable.getName() != null )
153 {
154 serializer.startTag( NAMESPACE, "name" ).text( variable.getName() ).endTag( NAMESPACE, "name" );
155 }
156 if ( variable.getDescription() != null )
157 {
158 serializer.startTag( NAMESPACE, "description" ).text( variable.getDescription() ).endTag( NAMESPACE, "description" );
159 }
160 if ( variable.getDefvalue() != null )
161 {
162 serializer.startTag( NAMESPACE, "defvalue" ).text( variable.getDefvalue() ).endTag( NAMESPACE, "defvalue" );
163 }
164 if ( variable.getVariables() != null && variable.getVariables().size() > 0 )
165 {
166 serializer.startTag( NAMESPACE, "variables" );
167 for ( Iterator iter = variable.getVariables().iterator(); iter.hasNext(); )
168 {
169 Variable o = (Variable) iter.next();
170 writeVariable( o, "variable", serializer );
171 }
172 serializer.endTag( NAMESPACE, "variables" );
173 }
174 serializer.endTag( NAMESPACE, tagName );
175 }
176 }
177
178
179 }