View Javadoc
1   /*
2    * $Id$
3    */
4   
5   package com.javaforge.bobber.archetype.model;
6   
7     //---------------------------------/
8    //- Imported classes and packages -/
9   //---------------------------------/
10  
11  import java.util.Collection;
12  import java.util.Date;
13  
14  /**
15   * 
16   *              Represents system variable to be put in the
17   * Velocity Context
18   *           .
19   * 
20   * @version $Revision$ $Date$
21   */
22  public class Variable implements java.io.Serializable {
23  
24  
25        //--------------------------/
26       //- Class/Member Variables -/
27      //--------------------------/
28  
29      /**
30       * Field name.
31       */
32      private String name;
33  
34      /**
35       * Field description.
36       */
37      private String description;
38  
39      /**
40       * Field defvalue.
41       */
42      private String defvalue;
43  
44      /**
45       * Field variables.
46       */
47      private java.util.List variables;
48  
49  
50        //-----------/
51       //- Methods -/
52      //-----------/
53  
54      /**
55       * Method addVariable.
56       * 
57       * @param variable
58       */
59      public void addVariable(Variable variable)
60      {
61          if ( !(variable instanceof Variable) )
62          {
63              throw new ClassCastException( "Variable.addVariables(variable) parameter must be instanceof " + Variable.class.getName() );
64          }
65          getVariables().add( variable );
66          variable.createVariableAssociation( this );
67      } //-- void addVariable(Variable) 
68  
69      /**
70       * Method breakVariableAssociation.
71       * 
72       * @param variable
73       */
74      public void breakVariableAssociation(Variable variable)
75      {
76          if ( ! getVariables().contains( variable ) )
77          {
78              throw new IllegalStateException( "variable isn't associated." );
79          }
80          
81          getVariables().remove( variable );
82      } //-- void breakVariableAssociation(Variable) 
83  
84      /**
85       * Method createVariableAssociation.
86       * 
87       * @param variable
88       */
89      public void createVariableAssociation(Variable variable)
90      {
91          Collection variables = getVariables();
92          
93          if ( getVariables().contains(variable) )
94          {
95              throw new IllegalStateException( "variable is already assigned." );
96          }
97          
98          variables.add( variable );
99      } //-- void createVariableAssociation(Variable) 
100 
101     /**
102      * Get the defvalue field.
103      * 
104      * @return String
105      */
106     public String getDefvalue()
107     {
108         return this.defvalue;
109     } //-- String getDefvalue() 
110 
111     /**
112      * Get the description field.
113      * 
114      * @return String
115      */
116     public String getDescription()
117     {
118         return this.description;
119     } //-- String getDescription() 
120 
121     /**
122      * Get the name field.
123      * 
124      * @return String
125      */
126     public String getName()
127     {
128         return this.name;
129     } //-- String getName() 
130 
131     /**
132      * Method getVariables.
133      * 
134      * @return java.util.List
135      */
136     public java.util.List getVariables()
137     {
138         if ( this.variables == null )
139         {
140             this.variables = new java.util.ArrayList();
141         }
142         
143         return this.variables;
144     } //-- java.util.List getVariables() 
145 
146     /**
147      * Method removeVariable.
148      * 
149      * @param variable
150      */
151     public void removeVariable(Variable variable)
152     {
153         if ( !(variable instanceof Variable) )
154         {
155             throw new ClassCastException( "Variable.removeVariables(variable) parameter must be instanceof " + Variable.class.getName() );
156         }
157         variable.breakVariableAssociation( this );
158         getVariables().remove( variable );
159     } //-- void removeVariable(Variable) 
160 
161     /**
162      * Set the defvalue field.
163      * 
164      * @param defvalue
165      */
166     public void setDefvalue(String defvalue)
167     {
168         this.defvalue = defvalue;
169     } //-- void setDefvalue(String) 
170 
171     /**
172      * Set the description field.
173      * 
174      * @param description
175      */
176     public void setDescription(String description)
177     {
178         this.description = description;
179     } //-- void setDescription(String) 
180 
181     /**
182      * Set the name field.
183      * 
184      * @param name
185      */
186     public void setName(String name)
187     {
188         this.name = name;
189     } //-- void setName(String) 
190 
191     /**
192      * Set 
193      *             Variables that depend on their parent.
194      * 
195      * @param variables
196      */
197     public void setVariables(java.util.List variables)
198     {
199         this.variables = variables;
200     } //-- void setVariables(java.util.List) 
201 
202 
203     private String modelEncoding = "UTF-8";
204 
205     /**
206      * Set an encoding used for reading/writing the model.
207      *
208      * @param modelEncoding the encoding used when reading/writing the model.
209      */
210     public void setModelEncoding( String modelEncoding )
211     {
212         this.modelEncoding = modelEncoding;
213     }
214 
215     /**
216      * @return the current encoding used when reading/writing this model.
217      */
218     public String getModelEncoding()
219     {
220         return modelEncoding;
221     }
222 }