View Javadoc

1   /*
2    * $Id$
3    */
4   
5   package com.javaforge.bobber.archetype.model.io.xpp3;
6   
7     //---------------------------------/
8    //- Imported classes and packages -/
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   * Class BobberArchetypeXpp3Writer.
23   * 
24   * @version $Revision$ $Date$
25   */
26  public class BobberArchetypeXpp3Writer {
27  
28  
29        //--------------------------/
30       //- Class/Member Variables -/
31      //--------------------------/
32  
33      /**
34       * Field NAMESPACE.
35       */
36      private String NAMESPACE;
37  
38  
39        //-----------/
40       //- Methods -/
41      //-----------/
42  
43      /**
44       * Method write.
45       * 
46       * @param writer
47       * @param bobberArchetype
48       * @throws java.io.IOException
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      } //-- void write(Writer, BobberArchetype) 
61  
62      /**
63       * Method writeBobberArchetype.
64       * 
65       * @param bobberArchetype
66       * @param serializer
67       * @param tagName
68       * @throws java.io.IOException
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     } //-- void writeBobberArchetype(BobberArchetype, String, XmlSerializer) 
107 
108     /**
109      * Method writeTemplate.
110      * 
111      * @param template
112      * @param serializer
113      * @param tagName
114      * @throws java.io.IOException
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     } //-- void writeTemplate(Template, String, XmlSerializer) 
137 
138     /**
139      * Method writeVariable.
140      * 
141      * @param variable
142      * @param serializer
143      * @param tagName
144      * @throws java.io.IOException
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     } //-- void writeVariable(Variable, String, XmlSerializer) 
177 
178 
179 }