001: /*
002: * Copyright 2006 Davide Deidda
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: /*
018: * SqlQueryFilter.java
019: *
020: * Created on 28 aprile 2005, 22.15
021: */
022:
023: package it.biobytes.ammentos.query;
024:
025: import java.util.*;
026: import java.sql.*;
027: import it.biobytes.ammentos.*;
028:
029: /**
030: *
031: * @author davide
032: */
033: public class SqlQueryFilter implements QueryFilter {
034: private String m_sql;
035: private List<QueryFilter> m_filters;
036: private int m_appender;
037:
038: /** Creates a new instance of SqlQueryFilter */
039: public SqlQueryFilter(String sql) {
040: this (APP_AND, sql);
041: }
042:
043: public SqlQueryFilter(int appender, String sql) {
044: m_sql = sql;
045: m_appender = appender;
046: m_filters = new ArrayList<QueryFilter>();
047: }
048:
049: public int setParamValues(PreparedStatement pstmt, int initialIndex)
050: throws SQLException {
051: for (QueryFilter filter : m_filters) {
052: initialIndex = filter.setParamValues(pstmt, initialIndex);
053: }
054:
055: return initialIndex;
056: }
057:
058: public String getSql() {
059: return " (" + m_sql + ")";
060: }
061:
062: public String getPreviousAppender() {
063: String res = " AND ";
064: switch (m_appender) {
065: case APP_AND:
066: res = " AND ";
067: break;
068: case APP_OR:
069: res = " OR ";
070: break;
071: }
072: return res;
073: }
074:
075: public void setString(String value) {
076: SimpleQueryFilter filter = new SimpleQueryFilter();
077: filter.setString(value);
078: m_filters.add(filter);
079: }
080:
081: public void setDate(java.util.Date date) {
082: SimpleQueryFilter filter = new SimpleQueryFilter();
083: filter.setDate(date);
084: m_filters.add(filter);
085:
086: }
087:
088: public void setLong(long value) {
089: SimpleQueryFilter filter = new SimpleQueryFilter();
090: filter.setLong(value);
091: m_filters.add(filter);
092: }
093:
094: public void setInteger(int value) {
095: SimpleQueryFilter filter = new SimpleQueryFilter();
096: filter.setInteger(value);
097: m_filters.add(filter);
098: }
099:
100: public void setDecimal(double value) {
101: SimpleQueryFilter filter = new SimpleQueryFilter();
102: filter.setDecimal(value);
103: m_filters.add(filter);
104: }
105:
106: public void setBoolean(boolean value) {
107: SimpleQueryFilter filter = new SimpleQueryFilter();
108: filter.setBoolean(value);
109: m_filters.add(filter);
110: }
111:
112: public void setObject(Object value, FieldType type) {
113: SimpleQueryFilter filter = new SimpleQueryFilter();
114: filter.setObject(value, type);
115: m_filters.add(filter);
116: }
117:
118: }
|