/*
* Copyright 2004-2009 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.compass.core.test.filterquerybuilder;
import java.util.Calendar;
import org.compass.core.CompassHits;
import org.compass.core.CompassQueryBuilder;
import org.compass.core.CompassQueryFilterBuilder;
import org.compass.core.CompassSession;
import org.compass.core.CompassTransaction;
import org.compass.core.config.CompassEnvironment;
import org.compass.core.config.CompassSettings;
import org.compass.core.test.AbstractTestCase;
/**
* @author kimchy
*/
public class QueryFilterBuilderTests extends AbstractTestCase {
protected String[] getMappings() {
return new String[]{"filterquerybuilder/querybuilder.cpm.xml"};
}
protected void addSettings(CompassSettings settings) {
settings.setGroupSettings(CompassEnvironment.Converter.PREFIX,
CompassEnvironment.Converter.DefaultTypes.Simple.DATE,
new String[]{CompassEnvironment.Converter.Format.FORMAT},
new String[]{"yyyy-MM-dd-HH"});
}
private void setUpData(CompassSession session) {
Calendar calendar = Calendar.getInstance();
A a = new A();
a.setId(new Long(1));
a.setValue1("0001");
a.setValue2("test1");
calendar.set(2000, 1, 1);
a.setDate(calendar.getTime());
session.save(a);
a.setId(new Long(2));
a.setValue1("0002");
a.setValue2("test2");
calendar.set(2000, 1, 2);
a.setDate(calendar.getTime());
session.save(a);
a.setId(new Long(3));
a.setValue1("0003");
a.setValue2("test3");
calendar.set(2000, 1, 3);
a.setDate(calendar.getTime());
session.save(a);
a.setId(new Long(4));
a.setValue1("0004");
a.setValue2("the quick brown fox jumped over the lazy dog");
calendar.set(2000, 1, 4);
a.setDate(calendar.getTime());
session.save(a);
}
public void testBetween() {
CompassSession session = openSession();
CompassTransaction tr = session.beginTransaction();
setUpData(session);
CompassQueryBuilder queryBuilder = session.queryBuilder();
CompassQueryFilterBuilder queryFilterBuilder = session.queryFilterBuilder();
CompassHits hits = queryBuilder.alias("a").
setFilter(queryFilterBuilder.between("mvalue1", "0001", "0003", true, true)).hits();
assertEquals(3, hits.length());
hits = queryBuilder.matchAll().
setFilter(queryFilterBuilder.between("mvalue1", "0001", "0003", false, true)).hits();
assertEquals(2, hits.length());
hits = queryBuilder.matchAll().
setFilter(queryFilterBuilder.between("mvalue1", "0001", "0003", true, false)).hits();
assertEquals(2, hits.length());
hits = queryBuilder.matchAll().
setFilter(queryFilterBuilder.between("mvalue1", "0001", "0003", false, false)).hits();
assertEquals(1, hits.length());
tr.commit();
session.close();
}
public void testGt() {
CompassSession session = openSession();
CompassTransaction tr = session.beginTransaction();
setUpData(session);
CompassQueryBuilder queryBuilder = session.queryBuilder();
CompassQueryFilterBuilder queryFilterBuilder = session.queryFilterBuilder();
CompassHits hits = queryBuilder.matchAll().
setFilter(queryFilterBuilder.gt("mvalue1", "0002")).hits();
assertEquals(2, hits.length());
tr.commit();
session.close();
}
public void testGe() {
CompassSession session = openSession();
CompassTransaction tr = session.beginTransaction();
setUpData(session);
CompassQueryBuilder queryBuilder = session.queryBuilder();
CompassQueryFilterBuilder queryFilterBuilder = session.queryFilterBuilder();
CompassHits hits = queryBuilder.matchAll().
setFilter(queryFilterBuilder.ge("mvalue1", "0002")).hits();
assertEquals(3, hits.length());
tr.commit();
session.close();
}
public void testLt() {
CompassSession session = openSession();
CompassTransaction tr = session.beginTransaction();
setUpData(session);
CompassQueryBuilder queryBuilder = session.queryBuilder();
CompassQueryFilterBuilder queryFilterBuilder = session.queryFilterBuilder();
CompassHits hits = queryBuilder.matchAll().
setFilter(queryFilterBuilder.lt("mvalue1", "0002")).hits();
assertEquals(1, hits.length());
tr.commit();
session.close();
}
public void testLe() {
CompassSession session = openSession();
CompassTransaction tr = session.beginTransaction();
setUpData(session);
CompassQueryBuilder queryBuilder = session.queryBuilder();
CompassQueryFilterBuilder queryFilterBuilder = session.queryFilterBuilder();
CompassHits hits = queryBuilder.matchAll().
setFilter(queryFilterBuilder.le("mvalue1", "0002")).hits();
assertEquals(2, hits.length());
tr.commit();
session.close();
}
public void testQuery() {
CompassSession session = openSession();
CompassTransaction tr = session.beginTransaction();
setUpData(session);
CompassQueryBuilder queryBuilder = session.queryBuilder();
CompassQueryFilterBuilder queryFilterBuilder = session.queryFilterBuilder();
CompassHits hits = queryBuilder.matchAll().
setFilter(queryFilterBuilder.query(queryBuilder.le("mvalue1", "0002"))).hits();
assertEquals(2, hits.length());
tr.commit();
session.close();
}
public void testBool() {
CompassSession session = openSession();
CompassTransaction tr = session.beginTransaction();
setUpData(session);
CompassQueryBuilder queryBuilder = session.queryBuilder();
CompassQueryFilterBuilder queryFilterBuilder = session.queryFilterBuilder();
CompassHits hits = queryBuilder.matchAll().
setFilter(queryFilterBuilder.bool().and(queryFilterBuilder.le("mvalue1", "0002")).and(queryFilterBuilder.ge("mvalue1", "0002")).toFilter()).hits();
assertEquals(1, hits.length());
tr.commit();
session.close();
}
}