View Javadoc
1   /*
2    * $Source$
3    * $Revision$
4    *
5    * Copyright (C) 2003 Samuel Goldstein
6    *
7    * Part of Melati (http://melati.org), a framework for the rapid
8    * development of clean, maintainable web applications.
9    *
10   * Melati is free software; Permission is granted to copy, distribute
11   * and/or modify this software under the terms either:
12   *
13   * a) the GNU General Public License as published by the Free Software
14   *    Foundation; either version 2 of the License, or (at your option)
15   *    any later version,
16   *
17   *    or
18   *
19   * b) any version of the Melati Software License, as published
20   *    at http://melati.org
21   *
22   * You should have received a copy of the GNU General Public License and
23   * the Melati Software License along with this program;
24   * if not, write to the Free Software Foundation, Inc.,
25   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA to obtain the
26   * GNU General Public License and visit http://melati.org to obtain the
27   * Melati Software License.
28   *
29   * Feel free to contact the Developers of Melati (http://melati.org),
30   * if you would like to work out a different arrangement than the options
31   * outlined here.  It is our intention to allow Melati to be used by as
32   * wide an audience as possible.
33   *
34   * This program is distributed in the hope that it will be useful,
35   * but WITHOUT ANY WARRANTY; without even the implied warranty of
36   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
37   * GNU General Public License for more details.
38   *
39   * Contact details for copyright holder:
40   *
41   *     Samuel Goldstein <samuel At 1969.ws>
42   *     http://www.1969.ws
43   *     13101 W. Washington Blvd Suite 248, Los Angeles, CA 90066 USA
44   */
45  
46  package org.melati.poem.prepro;
47  
48  import java.util.Vector;
49  
50  /**
51   * A definition of a <tt>BigDecimalPoemType</tt> from the DSD.
52   * 
53   * Its member variables are populated from the DSD or defaults. Its methods are
54   * used to generate the java code.
55   */
56  public class BigDecimalFieldDef extends AtomFieldDef {
57  
58    private int scale;
59  
60    private int precision;
61  
62    /**
63     * Constructor.
64     *
65     * @param lineNo       the line number in the DSD file
66     * @param table        the {@link TableDef} that this <code>Field</code> is part of
67     * @param name         the name of this field
68     * @param displayOrder where to place this field in a list
69     * @param qualifiers   all the qualifiers of this field
70     * @throws IllegalityException if a semantic inconsistency is detected
71     */
72    public BigDecimalFieldDef(int lineNo, TableDef table, String name,
73        int displayOrder, Vector<FieldQualifier> qualifiers) throws IllegalityException {
74      super(lineNo, table, name, "BigDecimal", displayOrder, qualifiers);
75      table.addImport("org.melati.poem.BigDecimalPoemType", "table");
76      table.addImport("java.math.BigDecimal", "table");
77      table.addImport("java.math.BigDecimal", "persistent");
78    }
79  
80    /**
81     * @param w
82     *          The base persistent java file.
83     * @throws IOException
84     *           if something goes wrong with the file system
85     */
86    // PMD objects to overriding methods which only call super
87    // public void generateBaseMethods(Writer w) throws IOException {
88    // super.generateBaseMethods(w);
89    /*
90     * w.write("\n" + " public final void set" + mixedCaseName + "(double cooked)\n" + "
91     * throws AccessPoemException, ValidationPoemException {\n" + " set" + mixedCaseName +
92     * "(new Double(cooked));\n" + " }\n");
93     */
94    // }
95    /** @return the Java string for this <code>PoemType</code>. */
96    public String poemTypeJava() {
97      return "new BigDecimalPoemType(" + isNullable() + ", " + getPrecision()
98          + ", " + getScale() + ")";
99    }
100 
101   /**
102    * Retrieve the precision.
103    * 
104    * @return the precision
105    */
106   public int getPrecision() {
107     return precision;
108   }
109 
110   /**
111    * Set the precision.
112    * @param precision the numeric precision
113    */
114   public void setPrecision(int precision) {
115     if (this.precision != 0)
116       throw new IllegalityException(lineNumber, "Redefinition of precision.");
117     this.precision = precision;
118   }
119 
120   /**
121    * Retrieve the scale.
122    * 
123    * @return the scale
124    */
125   public int getScale() {
126     return scale;
127   }
128 
129   /**
130    * Set the scale.
131    * 
132    * @param scale the scale to set
133    */
134   public void setScale(int scale) {
135     if (this.scale != 0)
136       throw new IllegalityException(lineNumber, "Redefinition of scale.");
137     this.scale = scale;
138   }
139 
140 }