2 * Copyright 2010 Sun Microsystems, Inc.
3 * All rights reserved. Use is subject to license terms.
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; version 2 of the License.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 package com.mysql.clusterj.bindings;
21 import com.mysql.cluster.ndbj.NdbApiException;
22 import com.mysql.cluster.ndbj.NdbScanFilter;
24 import com.mysql.clusterj.ClusterJDatastoreException;
26 import com.mysql.clusterj.ClusterJFatalInternalException;
27 import com.mysql.clusterj.core.store.Column;
28 import com.mysql.clusterj.core.store.ScanFilter;
30 import com.mysql.clusterj.core.util.I18NHelper;
31 import com.mysql.clusterj.core.util.Logger;
32 import com.mysql.clusterj.core.util.LoggerFactoryService;
36 import java.sql.Timestamp;
41 class ScanFilterImpl implements ScanFilter {
43 /** My message translator */
44 static final I18NHelper local = I18NHelper
45 .getInstance(ScanFilterImpl.class);
48 static final Logger logger = LoggerFactoryService.getFactory()
49 .getInstance(ScanFilterImpl.class);
51 private NdbScanFilter scanFilter;
53 public ScanFilterImpl(NdbScanFilter scanFilter) {
54 this.scanFilter = scanFilter;
60 } catch (NdbApiException ndbApiException) {
61 throw new ClusterJDatastoreException(local.message("ERR_Datastore"),
66 public void begin(Group group) {
68 scanFilter.begin(convertGroup(group));
69 } catch (NdbApiException ndbApiException) {
70 throw new ClusterJDatastoreException(local.message("ERR_Datastore"),
75 public void cmpBoolean(BinaryCondition condition, Column storeColumn, boolean booleanValue) {
76 throw new UnsupportedOperationException(local.message("ERR_NotImplemented"));
79 public void cmpBytes(BinaryCondition condition, Column storeColumn, byte[] value) {
81 scanFilter.cmp(convertCondition(condition), storeColumn.getName(), value);
82 } catch (NdbApiException ndbApiException) {
83 throw new ClusterJDatastoreException(local.message("ERR_Datastore"),
88 public void cmpDouble(BinaryCondition condition, Column storeColumn, double value) {
90 scanFilter.cmp(convertCondition(condition), storeColumn.getName(), value);
91 } catch (NdbApiException ndbApiException) {
92 throw new ClusterJDatastoreException(local.message("ERR_Datastore"),
97 public void cmpFloat(BinaryCondition condition, Column storeColumn, float value) {
99 scanFilter.cmp(convertCondition(condition), storeColumn.getName(), value);
100 } catch (NdbApiException ndbApiException) {
101 throw new ClusterJDatastoreException(local.message("ERR_Datastore"),
106 public void cmpInt(BinaryCondition condition, Column storeColumn, int value) {
108 scanFilter.cmp(convertCondition(condition), storeColumn.getName(), value);
109 } catch (NdbApiException ndbApiException) {
110 throw new ClusterJDatastoreException(local.message("ERR_Datastore"),
115 public void cmpLong(BinaryCondition condition, Column storeColumn, long value) {
117 scanFilter.cmp(convertCondition(condition), storeColumn.getName(), value);
118 } catch (NdbApiException ndbApiException) {
119 throw new ClusterJDatastoreException(local.message("ERR_Datastore"),
124 public void cmpString(BinaryCondition condition, Column storeColumn, String value) {
126 scanFilter.cmpString(convertCondition(condition), storeColumn.getName(), value);
127 } catch (NdbApiException ndbApiException) {
128 throw new ClusterJDatastoreException(local.message("ERR_Datastore"),
133 public void cmpTimestamp(BinaryCondition condition, Column storeColumn, Timestamp value) {
135 scanFilter.cmpTimestamp(convertCondition(condition), storeColumn.getName(), value);
136 } catch (NdbApiException ndbApiException) {
137 throw new ClusterJDatastoreException(local.message("ERR_Datastore"),
142 public void cmpDatetime(BinaryCondition condition, Column storeColumn, Timestamp value) {
144 scanFilter.cmp(convertCondition(condition), storeColumn.getName(), value);
145 } catch (NdbApiException ndbApiException) {
146 throw new ClusterJDatastoreException(local.message("ERR_Datastore"),
151 public void cmpDate(BinaryCondition condition, Column storeColumn, Date value) {
153 Timestamp timestamp = new Timestamp(value.getTime());
154 scanFilter.cmp(convertCondition(condition), storeColumn.getName(), timestamp);
155 } catch (NdbApiException ndbApiException) {
156 throw new ClusterJDatastoreException(local.message("ERR_Datastore"),
161 public void cmpTime(BinaryCondition condition, Column storeColumn, Time value) {
163 Timestamp timestamp = new Timestamp(value.getTime());
164 scanFilter.cmp(convertCondition(condition), storeColumn.getName(), timestamp);
165 } catch (NdbApiException ndbApiException) {
166 throw new ClusterJDatastoreException(local.message("ERR_Datastore"),
174 } catch (NdbApiException ndbApiException) {
175 throw new ClusterJDatastoreException(local.message("ERR_Datastore"),
180 private NdbScanFilter.BinaryCondition convertCondition(BinaryCondition condition) {
183 return NdbScanFilter.BinaryCondition.COND_EQ;
185 return NdbScanFilter.BinaryCondition.COND_LE;
187 return NdbScanFilter.BinaryCondition.COND_LT;
189 return NdbScanFilter.BinaryCondition.COND_GE;
191 return NdbScanFilter.BinaryCondition.COND_GT;
193 throw new ClusterJFatalInternalException(
194 local.message("ERR_Implementation_Should_Not_Occur"));
198 private NdbScanFilter.Group convertGroup(Group group) {
201 return NdbScanFilter.Group.AND;
203 throw new ClusterJFatalInternalException(
204 local.message("ERR_Implementation_Should_Not_Occur"));