001 /*
002 // $Id: Datatype.java 482 2012-01-05 23:27:27Z jhyde $
003 //
004 // Licensed to Julian Hyde under one or more contributor license
005 // agreements. See the NOTICE file distributed with this work for
006 // additional information regarding copyright ownership.
007 //
008 // Julian Hyde licenses this file to you under the Apache License,
009 // Version 2.0 (the "License"); you may not use this file except in
010 // compliance with the License. You may obtain a copy of the License at:
011 //
012 // http://www.apache.org/licenses/LICENSE-2.0
013 //
014 // Unless required by applicable law or agreed to in writing, software
015 // distributed under the License is distributed on an "AS IS" BASIS,
016 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017 // See the License for the specific language governing permissions and
018 // limitations under the License.
019 */
020 package org.olap4j.metadata;
021
022 /**
023 * Enumeration of the allowable data types of a Property or Measure.
024 *
025 * <p>The values derive from the OLE DB specification, specifically a
026 * subset of the OLE DB Types Indicators returned by SQL Server.
027 *
028 * @author jhyde
029 * @version $Id: Datatype.java 482 2012-01-05 23:27:27Z jhyde $
030 * @since Aug 23, 2006
031 */
032 public enum Datatype implements XmlaConstant {
033 /*
034 * The following values exactly match VARENUM
035 * in Automation and may be used in VARIANT.
036 */
037 INTEGER(3, "DBTYPE_I4", "A four-byte, signed integer: INTEGER"),
038
039 DOUBLE(5, "DBTYPE_R8", "A double-precision floating-point value: Double"),
040
041 CURRENCY(
042 6,
043 "DBTYPE_CY",
044 "A currency value: LARGE_INTEGER, Currency is a fixed-point number with "
045 + "four digits to the right of the decimal point. It is stored in an "
046 + "eight-byte signed integer, scaled by 10,000."),
047
048 BOOLEAN(
049 11,
050 "DBTYPE_BOOL",
051 "A Boolean value stored in the same way as in Automation: VARIANT_BOOL; "
052 + "0 means false and ~0 (bitwise, the value is not 0; that is, all bits "
053 + "are set to 1) means true."),
054
055 /**
056 * Used by SQL Server for value.
057 */
058 VARIANT(12, "DBTYPE_VARIANT", "An Automation VARIANT"),
059
060 /**
061 * Used by SQL Server for font size.
062 */
063 UNSIGNED_SHORT(18, "DBTYPE_UI2", "A two-byte, unsigned integer"),
064
065 /**
066 * Used by SQL Server for colors, font flags and cell ordinal.
067 */
068 UNSIGNED_INTEGER(19, "DBTYPE_UI4", "A four-byte, unsigned integer"),
069
070 /*
071 * The following values exactly match VARENUM
072 * in Automation but cannot be used in VARIANT.
073 */
074 LARGE_INTEGER(
075 20,
076 "DBTYPE_I8",
077 "An eight-byte, signed integer: LARGE_INTEGER"),
078
079 /*
080 * The following values are not in VARENUM in OLE.
081 */
082 STRING(
083 130,
084 "DBTYPE_WSTR",
085 "A null-terminated Unicode character string: wchar_t[length]; If "
086 + "DBTYPE_WSTR is used by itself, the number of bytes allocated "
087 + "for the string, including the null-termination character, is "
088 + "specified by cbMaxLen in the DBBINDING structure. If "
089 + "DBTYPE_WSTR is combined with DBTYPE_BYREF, the number of bytes "
090 + "allocated for the string, including the null-termination character, "
091 + "is at least the length of the string plus two. In either case, the "
092 + "actual length of the string is determined from the bound length "
093 + "value. The maximum length of the string is the number of allocated "
094 + "bytes divided by sizeof(wchar_t) and truncated to the nearest "
095 + "integer."),
096
097 /**
098 * Used by SAP BW. Represents a Character
099 */
100 ACCP(1000, "ACCP", "SAP BW Character"),
101
102 /**
103 * Used by SAP BW. Represents a CHAR
104 */
105 CHAR(1001, "CHAR", "SAP BW CHAR"),
106
107 /**
108 * Used by SAP BW. Represents a CHAR
109 */
110 CUKY(1002, "CUKY", "SAP BW CHAR"),
111
112 /**
113 * Used by SAP BW. Represents a Currency - Packed decimal, Integer
114 */
115 CURR(1003, "CURR", "SAP BW Currency - Packed decimal, Integer"),
116
117 /**
118 * Used by SAP BW. Represents a Date
119 */
120 DATS(1004, "DATS", "SAP BW Date"),
121
122 /**
123 * Used by SAP BW. Represents a Decimal
124 */
125 DEC(1005, "DEC", "SAP BW Decimal"),
126
127 /**
128 * Used by SAP BW. Represents a Point
129 */
130 FLTP(1006, "FLTP", "SAP BW Floating Point"),
131
132 /**
133 * Used by SAP BW. Represents a Byte
134 */
135 INT1(1007, "INT1", "SAP BW Byte"),
136
137 /**
138 * Used by SAP BW. Represents a Small integer
139 */
140 INT2(1008, "INT2", "SAP BW Small integer"),
141
142 /**
143 * Used by SAP BW. Represents an Integer
144 */
145 INT4(1009, "INT4", "SAP BW Integer"),
146
147 /**
148 * Used by SAP BW. Represents a Text
149 */
150 LCHR(1010, "LCHR", "SAP BW Text"),
151
152 /**
153 * Used by SAP BW. Represents a Numeric
154 */
155 NUMC(1011, "NUMC", "SAP BW Numeric"),
156
157 /**
158 * Used by SAP BW. Represents a Tiny Int
159 */
160 PREC(1012, "PREC", "SAP BW Tiny Int"),
161
162 /**
163 * Used by SAP BW. Represents a QUAN Integer
164 */
165 QUAN(1013, "QUAN", "SAP BW QUAN Integer"),
166
167 /**
168 * Used by SAP BW. Represents a String
169 */
170 SSTR(1014, "SSTR", "SAP BW String"),
171
172 /**
173 * Used by SAP BW. Represents a Long String
174 */
175 STRG(1015, "STRG", "SAP BW Long String"),
176
177 /**
178 * Used by SAP BW. Represents a Time
179 */
180 TIMS(1016, "TIMS", "SAP BW Time"),
181
182 /**
183 * Used by SAP BW. Represents a Varchar
184 */
185 VARC(1017, "VARC", "SAP BW Varchar"),
186
187 /**
188 * Used by SAP BW. Represents a Long String for Units
189 */
190 UNIT(1018, "UNIT", "SAP BW Long String for Units");
191
192 private final int xmlaOrdinal;
193 private String dbTypeIndicator;
194 private String description;
195
196 private static final DictionaryImpl<Datatype> DICTIONARY =
197 DictionaryImpl.forClass(Datatype.class);
198
199 Datatype(
200 int xmlaOrdinal,
201 String dbTypeIndicator,
202 String description)
203 {
204 this.xmlaOrdinal = xmlaOrdinal;
205 this.dbTypeIndicator = dbTypeIndicator;
206 this.description = description;
207 }
208
209 /**
210 * The internal name of this Datatype.
211 * Might not be unique across Datatype instances.
212 */
213 public String xmlaName() {
214 return dbTypeIndicator;
215 }
216
217 /**
218 * Human readable description of a Datatype instance.
219 */
220 public String getDescription() {
221 return description;
222 }
223
224 /**
225 * Unique identifier of a Datatype instance.
226 */
227 public int xmlaOrdinal() {
228 return xmlaOrdinal;
229 }
230
231 /**
232 * Per {@link org.olap4j.metadata.XmlaConstant}, returns a dictionary
233 * of all values of this enumeration.
234 *
235 * @return Dictionary of all values
236 */
237 public static Dictionary<Datatype> getDictionary() {
238 return DICTIONARY;
239 }
240 }
241
242 // End Datatype.java