001: /*
002: * Copyright 2004-2006 the original author or authors.
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: package org.compass.core.test.filterquerybuilder;
018:
019: import java.util.Calendar;
020:
021: import org.compass.core.*;
022: import org.compass.core.config.CompassEnvironment;
023: import org.compass.core.config.CompassSettings;
024: import org.compass.core.test.AbstractTestCase;
025:
026: /**
027: * @author kimchy
028: */
029: public class QueryFilterBuilderTests extends AbstractTestCase {
030:
031: protected String[] getMappings() {
032: return new String[] { "filterquerybuilder/querybuilder.cpm.xml" };
033: }
034:
035: protected void addSettings(CompassSettings settings) {
036: settings
037: .setGroupSettings(
038: CompassEnvironment.Converter.PREFIX,
039: CompassEnvironment.Converter.DefaultTypes.Simple.DATE,
040: new String[] { CompassEnvironment.Converter.Format.FORMAT },
041: new String[] { "yyyy-MM-dd-HH" });
042: }
043:
044: private void setUpData(CompassSession session) {
045: Calendar calendar = Calendar.getInstance();
046: A a = new A();
047: a.setId(new Long(1));
048: a.setValue1("0001");
049: a.setValue2("test1");
050: calendar.set(2000, 1, 1);
051: a.setDate(calendar.getTime());
052: session.save(a);
053: a.setId(new Long(2));
054: a.setValue1("0002");
055: a.setValue2("test2");
056: calendar.set(2000, 1, 2);
057: a.setDate(calendar.getTime());
058: session.save(a);
059: a.setId(new Long(3));
060: a.setValue1("0003");
061: a.setValue2("test3");
062: calendar.set(2000, 1, 3);
063: a.setDate(calendar.getTime());
064: session.save(a);
065: a.setId(new Long(4));
066: a.setValue1("0004");
067: a.setValue2("the quick brown fox jumped over the lazy dog");
068: calendar.set(2000, 1, 4);
069: a.setDate(calendar.getTime());
070: session.save(a);
071: }
072:
073: public void testBetween() {
074: CompassSession session = openSession();
075: CompassTransaction tr = session.beginTransaction();
076:
077: setUpData(session);
078:
079: CompassQueryBuilder queryBuilder = session.queryBuilder();
080: CompassQueryFilterBuilder queryFilterBuilder = session
081: .queryFilterBuilder();
082: CompassHits hits = queryBuilder.alias("a").setFilter(
083: queryFilterBuilder.between("mvalue1", "0001", "0003",
084: true, true)).hits();
085: assertEquals(3, hits.length());
086:
087: hits = queryBuilder.matchAll().setFilter(
088: queryFilterBuilder.between("mvalue1", "0001", "0003",
089: false, true)).hits();
090: assertEquals(2, hits.length());
091:
092: hits = queryBuilder.matchAll().setFilter(
093: queryFilterBuilder.between("mvalue1", "0001", "0003",
094: true, false)).hits();
095: assertEquals(2, hits.length());
096:
097: hits = queryBuilder.matchAll().setFilter(
098: queryFilterBuilder.between("mvalue1", "0001", "0003",
099: false, false)).hits();
100: assertEquals(1, hits.length());
101:
102: tr.commit();
103: session.close();
104: }
105:
106: public void testGt() {
107: CompassSession session = openSession();
108: CompassTransaction tr = session.beginTransaction();
109:
110: setUpData(session);
111:
112: CompassQueryBuilder queryBuilder = session.queryBuilder();
113: CompassQueryFilterBuilder queryFilterBuilder = session
114: .queryFilterBuilder();
115: CompassHits hits = queryBuilder.matchAll().setFilter(
116: queryFilterBuilder.gt("mvalue1", "0002")).hits();
117: assertEquals(2, hits.length());
118:
119: tr.commit();
120: session.close();
121: }
122:
123: public void testGe() {
124: CompassSession session = openSession();
125: CompassTransaction tr = session.beginTransaction();
126:
127: setUpData(session);
128:
129: CompassQueryBuilder queryBuilder = session.queryBuilder();
130: CompassQueryFilterBuilder queryFilterBuilder = session
131: .queryFilterBuilder();
132: CompassHits hits = queryBuilder.matchAll().setFilter(
133: queryFilterBuilder.ge("mvalue1", "0002")).hits();
134: assertEquals(3, hits.length());
135:
136: tr.commit();
137: session.close();
138: }
139:
140: public void testLt() {
141: CompassSession session = openSession();
142: CompassTransaction tr = session.beginTransaction();
143:
144: setUpData(session);
145:
146: CompassQueryBuilder queryBuilder = session.queryBuilder();
147: CompassQueryFilterBuilder queryFilterBuilder = session
148: .queryFilterBuilder();
149: CompassHits hits = queryBuilder.matchAll().setFilter(
150: queryFilterBuilder.lt("mvalue1", "0002")).hits();
151: assertEquals(1, hits.length());
152:
153: tr.commit();
154: session.close();
155: }
156:
157: public void testLe() {
158: CompassSession session = openSession();
159: CompassTransaction tr = session.beginTransaction();
160:
161: setUpData(session);
162:
163: CompassQueryBuilder queryBuilder = session.queryBuilder();
164: CompassQueryFilterBuilder queryFilterBuilder = session
165: .queryFilterBuilder();
166: CompassHits hits = queryBuilder.matchAll().setFilter(
167: queryFilterBuilder.le("mvalue1", "0002")).hits();
168: assertEquals(2, hits.length());
169:
170: tr.commit();
171: session.close();
172: }
173:
174: public void testQuery() {
175: CompassSession session = openSession();
176: CompassTransaction tr = session.beginTransaction();
177:
178: setUpData(session);
179:
180: CompassQueryBuilder queryBuilder = session.queryBuilder();
181: CompassQueryFilterBuilder queryFilterBuilder = session
182: .queryFilterBuilder();
183: CompassHits hits = queryBuilder.matchAll().setFilter(
184: queryFilterBuilder.query(queryBuilder.le("mvalue1",
185: "0002"))).hits();
186: assertEquals(2, hits.length());
187:
188: tr.commit();
189: session.close();
190: }
191:
192: public void testBool() {
193: CompassSession session = openSession();
194: CompassTransaction tr = session.beginTransaction();
195:
196: setUpData(session);
197:
198: CompassQueryBuilder queryBuilder = session.queryBuilder();
199: CompassQueryFilterBuilder queryFilterBuilder = session
200: .queryFilterBuilder();
201: CompassHits hits = queryBuilder.matchAll().setFilter(
202: queryFilterBuilder.bool().and(
203: queryFilterBuilder.le("mvalue1", "0002")).and(
204: queryFilterBuilder.ge("mvalue1", "0002"))
205: .toFilter()).hits();
206: assertEquals(1, hits.length());
207:
208: tr.commit();
209: session.close();
210: }
211: }
|