View Javadoc

1   package org.apache.torque.templates.typemapping;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  /**
23   * An enum for all java types known to the generator.
24   *
25   * @version "Id: $
26   */
27  public enum JavaType
28  {
29      /** java.lang.String. */
30      STRING("String", false, false, null),
31      /** java.math.BigDecimal. */
32      BIG_DECIMAL("BigDecimal", false, true, "java.math."),
33      /** primitive boolean. */
34      BOOLEAN_PRIMITIVE("boolean", true, false, null),
35      /** java.lang.Boolean. */
36      BOOLEAN_OBJECT("Boolean", false, false, null),
37      /** primitive byte. */
38      BYTE_PRIMITIVE("byte", true, true, null),
39      /** java.lang.Byte. */
40      BYTE_OBJECT("Byte", false, true, null),
41      /** primitive short. */
42      SHORT_PRIMITIVE("short", true, true, null),
43      /** java.lang.Short. */
44      SHORT_OBJECT("Short", false, true, null),
45      /** primitive int. */
46      INTEGER_PRIMITIVE("int", true, true, null),
47      /** java.lang.Integer. */
48      INTEGER_OBJECT("Integer", false, true, null),
49      /** primitive long. */
50      LONG_PRIMITIVE("long", true, true, null),
51      /** java.lang.Long. */
52      LONG_OBJECT("Long", false, true, null),
53      /** primitive float. */
54      FLOAT_PRIMITIVE("float", true, true, null),
55      /** java.lang.Float. */
56      FLOAT_OBJECT("Float", false, true, null),
57      /** primitive double. */
58      DOUBLE_PRIMITIVE("double", true, true, null),
59      /** java.lang.Double. */
60      DOUBLE_OBJECT("Double", false, true, null),
61      /** primitive char. */
62      CHAR_PRIMITIVE("char", true, false, null),
63      /** java.lang.Char. */
64      CHAR_OBJECT("Char", false, false, null),
65      /** primitive byte array. */
66      BYTE_PRIMITIVE_ARRAY("byte[]", false, false, null),
67      /** java.util.Date. */
68      // TODO move package prefix to last argument
69      DATE("java.util.Date", false, false, null);
70  
71      /** The class name without package name. */
72      private String className;
73  
74      /** Whether the type is a primitive type. */
75      private boolean primitive;
76  
77      /** Whether the type is a number. */
78      private boolean number;
79  
80      /** The package prefix for object types, if different from java.lang. */
81      private String packagePrefix;
82  
83      /**
84       * Constructor.
85       *
86       * @param className the class name, not null.
87       * @param primitive Whether the type is a primitive type.
88       * @param number Whether the type is a number.
89       * @param packagePrefix The package prefix for object types, or null.
90       */
91      private JavaType(
92              String className,
93              boolean primitive,
94              boolean number,
95              String packagePrefix)
96      {
97          this.className = className;
98          this.primitive = primitive;
99          this.number = number;
100         this.packagePrefix = packagePrefix;
101     }
102 
103     /**
104      * Returns whether the type is a primitive type.
105      *
106      * @return true if the type is a primitive type, false otherwise.
107      */
108     public boolean isPrimitive()
109     {
110         return primitive;
111     }
112 
113     /**
114      * Returns whether the type is a number.
115      *
116      * @return true if the type is a number, false otherwise.
117      */
118     public boolean isNumber()
119     {
120         return number;
121     }
122 
123     /**
124      * Returns the class name.
125      *
126      * @return the unqualified class name.
127      */
128     public String getClassName()
129     {
130         return className;
131     }
132 
133     /**
134      * Returns the package prefix.
135      *
136      * @return the package prefix, or null.
137      */
138     public String getPackagePrefix()
139     {
140         return packagePrefix;
141     }
142 
143     /**
144      * Returns the class name, if necessary qualified with the package name.
145      *
146      * @return the full class name.
147      */
148     public String getFullClassName()
149     {
150         if (packagePrefix == null)
151         {
152             return className;
153         }
154         else
155         {
156             return packagePrefix + className;
157         }
158     }
159 }