MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DomainFieldHandlerImpl.java
1 /*
2  * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 2 of the License.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
16  */
17 
18 package com.mysql.clusterj.jdbc;
19 
20 import com.mysql.clusterj.core.metadata.AbstractDomainFieldHandlerImpl;
21 import com.mysql.clusterj.core.store.Table;
22 import com.mysql.clusterj.core.util.I18NHelper;
23 import com.mysql.clusterj.core.util.Logger;
24 import com.mysql.clusterj.core.util.LoggerFactoryService;
25 
31 
33  static final I18NHelper local = I18NHelper.getInstance(DomainFieldHandlerImpl.class);
34 
37 
38  public int compareTo(Object other) {
39  return compareTo((DomainFieldHandlerImpl)other);
40  }
41 
42  public DomainFieldHandlerImpl(DomainTypeHandlerImpl<?> domainTypeHandler,
43  Table table, int fieldNumber, com.mysql.clusterj.core.store.Column column) {
44  this.domainTypeHandler = domainTypeHandler;
45  this.fieldNumber = fieldNumber;
46  this.name = column.getName();
47  this.storeColumn = column;
48  this.columnName = storeColumn.getName();
49  this.columnNames = new String[] {columnName};
50  storeColumnType = storeColumn.getType();
51  charsetName = storeColumn.getCharsetName();
52  if (logger.isDebugEnabled()) logger.debug("new DomainFieldHandlerImpl: fieldNumber: " + fieldNumber + "; name: " + name);
53  if (logger.isDebugEnabled())
54  logger.debug("Column type for " + name + " is "
55  + storeColumnType.toString() + "; charset name is "
56  + charsetName);
57  primaryKey = storeColumn.isPrimaryKey();
58  if (primaryKey) {
59  domainTypeHandler.registerPrimaryKeyColumn(this, columnName);
60  }
61  if (primaryKey) {
62  // primary key
63  switch (column.getType()) {
64  case Int:
65  case Unsigned:
66  case Mediumint:
67  case Mediumunsigned:
68  objectOperationHandlerDelegate = objectOperationHandlerKeyInt;
69  break;
70  case Bigint:
71  objectOperationHandlerDelegate = objectOperationHandlerKeyLong;
72  break;
73  case Char:
74  case Varchar:
75  case Longvarchar:
76  objectOperationHandlerDelegate = objectOperationHandlerKeyString;
77  break;
78  default:
79  // bad primary key type
80  objectOperationHandlerDelegate = objectOperationHandlerUnsupportedType;
81  error(
82  local.message("ERR_Unsupported_Field_Type", storeColumnType.name(), name));
83  }
84  } else if (storeColumn.getNullable()) {
85  // nullable columns
86  switch (column.getType()) {
87  case Int:
88  case Unsigned:
89  case Mediumint:
90  case Mediumunsigned:
91  objectOperationHandlerDelegate = objectOperationHandlerObjectInteger;
92  break;
93  case Bigint:
94  objectOperationHandlerDelegate = objectOperationHandlerObjectLong;
95  break;
96  case Char:
97  case Varchar:
98  case Longvarchar:
99  objectOperationHandlerDelegate = objectOperationHandlerString;
100  break;
101  case Binary:
102  case Varbinary:
103  case Longvarbinary:
104  objectOperationHandlerDelegate = objectOperationHandlerBytes;
105  break;
106  case Blob:
107  objectOperationHandlerDelegate = objectOperationHandlerBytesLob;
108  break;
109  case Date:
110  objectOperationHandlerDelegate = objectOperationHandlerJavaSqlDate;
111  break;
112  case Decimal:
113  case Decimalunsigned:
114  objectOperationHandlerDelegate = objectOperationHandlerDecimal;
115  break;
116  case Double:
117  objectOperationHandlerDelegate = objectOperationHandlerObjectDouble;
118  break;
119  case Float:
120  objectOperationHandlerDelegate = objectOperationHandlerObjectFloat;
121  break;
122  case Smallint:
123  objectOperationHandlerDelegate = objectOperationHandlerObjectShort;
124  break;
125  case Text:
126  objectOperationHandlerDelegate = objectOperationHandlerStringLob;
127  break;
128  case Time:
129  objectOperationHandlerDelegate = objectOperationHandlerJavaSqlTime;
130  break;
131  case Timestamp:
132  objectOperationHandlerDelegate = objectOperationHandlerJavaSqlTimestamp;
133  break;
134  case Tinyint:
135  case Tinyunsigned:
136  objectOperationHandlerDelegate = objectOperationHandlerObjectByte;
137  break;
138  default:
139  // unsupported column type
140  objectOperationHandlerDelegate = objectOperationHandlerUnsupportedType;
141  error(
142  local.message("ERR_Unsupported_Field_Type", storeColumnType.name(), name));
143  }
144  } else {
145  // not nullable columns
146  switch (column.getType()) {
147  case Int:
148  case Unsigned:
149  case Mediumint:
150  case Mediumunsigned:
151  objectOperationHandlerDelegate = objectOperationHandlerInt;
152  break;
153  case Bigint:
154  objectOperationHandlerDelegate = objectOperationHandlerLong;
155  break;
156  case Char:
157  case Varchar:
158  case Longvarchar:
159  objectOperationHandlerDelegate = objectOperationHandlerString;
160  break;
161  case Binary:
162  case Varbinary:
163  case Longvarbinary:
164  objectOperationHandlerDelegate = objectOperationHandlerBytes;
165  break;
166  case Blob:
167  objectOperationHandlerDelegate = objectOperationHandlerBytesLob;
168  break;
169  case Date:
170  objectOperationHandlerDelegate = objectOperationHandlerJavaSqlDate;
171  break;
172  case Decimal:
173  case Decimalunsigned:
174  objectOperationHandlerDelegate = objectOperationHandlerDecimal;
175  break;
176  case Double:
177  objectOperationHandlerDelegate = objectOperationHandlerDouble;
178  break;
179  case Float:
180  objectOperationHandlerDelegate = objectOperationHandlerFloat;
181  break;
182  case Smallint:
183  objectOperationHandlerDelegate = objectOperationHandlerShort;
184  break;
185  case Text:
186  objectOperationHandlerDelegate = objectOperationHandlerStringLob;
187  break;
188  case Time:
189  objectOperationHandlerDelegate = objectOperationHandlerJavaSqlTime;
190  break;
191  case Timestamp:
192  objectOperationHandlerDelegate = objectOperationHandlerJavaSqlTimestamp;
193  break;
194  case Tinyint:
195  case Tinyunsigned:
196  objectOperationHandlerDelegate = objectOperationHandlerByte;
197  break;
198  default:
199  // unsupported column type
200  objectOperationHandlerDelegate = objectOperationHandlerUnsupportedType;
201  error(
202  local.message("ERR_Unsupported_Field_Type", storeColumnType.name(), name));
203  }
204  }
205  indices = domainTypeHandler.registerIndices(this, columnName);
206  indexNames = domainTypeHandler.getIndexNames(indices);
207  logger.debug("Index names for " + name + " are " + indexNames);
208  logger.debug("Indices for " + name + " are " + printIndices());
209 
210  reportErrors();
211  }
212 
213 }