001: package org.compass.core.impl;
002:
003: import org.compass.core.CompassQuery;
004: import org.compass.core.CompassQueryFilter;
005: import org.compass.core.CompassQueryFilterBuilder;
006: import org.compass.core.engine.SearchEngineQueryFilterBuilder;
007: import org.compass.core.mapping.ResourcePropertyLookup;
008: import org.compass.core.spi.InternalCompassSession;
009:
010: /**
011: * @author kimchy
012: */
013: public class DefaultCompassQueryFilterBuilder implements
014: CompassQueryFilterBuilder {
015:
016: public static class DefaultCompassBooleanQueryFilterBuilder
017: implements CompassBooleanQueryFilterBuilder {
018:
019: private SearchEngineQueryFilterBuilder.SearchEngineBooleanQueryFilterBuilder filterBuilder;
020:
021: public DefaultCompassBooleanQueryFilterBuilder(
022: SearchEngineQueryFilterBuilder.SearchEngineBooleanQueryFilterBuilder filterBuilder) {
023: this .filterBuilder = filterBuilder;
024: }
025:
026: public CompassBooleanQueryFilterBuilder and(
027: CompassQueryFilter filter) {
028: filterBuilder.and(((DefaultCompassQueryFilter) filter)
029: .getFilter());
030: return this ;
031: }
032:
033: public CompassBooleanQueryFilterBuilder or(
034: CompassQueryFilter filter) {
035: filterBuilder.or(((DefaultCompassQueryFilter) filter)
036: .getFilter());
037: return this ;
038: }
039:
040: public CompassBooleanQueryFilterBuilder andNot(
041: CompassQueryFilter filter) {
042: filterBuilder.andNot(((DefaultCompassQueryFilter) filter)
043: .getFilter());
044: return this ;
045: }
046:
047: public CompassBooleanQueryFilterBuilder xor(
048: CompassQueryFilter filter) {
049: filterBuilder.xor(((DefaultCompassQueryFilter) filter)
050: .getFilter());
051: return this ;
052: }
053:
054: public CompassQueryFilter toFilter() {
055: return new DefaultCompassQueryFilter(filterBuilder
056: .toFilter());
057: }
058: }
059:
060: private InternalCompassSession session;
061:
062: private SearchEngineQueryFilterBuilder filterBuilder;
063:
064: public DefaultCompassQueryFilterBuilder(
065: SearchEngineQueryFilterBuilder filterBuilder,
066: InternalCompassSession session) {
067: this .filterBuilder = filterBuilder;
068: this .session = session;
069: }
070:
071: public CompassQueryFilter between(String name, Object low,
072: Object high, boolean includeLow, boolean includeHigh) {
073: ResourcePropertyLookup lookup = session.getMapping()
074: .getResourcePropertyLookup(name);
075: return new DefaultCompassQueryFilter(filterBuilder.between(
076: lookup.getPath(), lookup.getValue(low), lookup
077: .getValue(high), includeLow, includeHigh));
078: }
079:
080: public CompassQueryFilter lt(String name, Object value) {
081: ResourcePropertyLookup lookup = session.getMapping()
082: .getResourcePropertyLookup(name);
083: return new DefaultCompassQueryFilter(filterBuilder.lt(lookup
084: .getPath(), lookup.getValue(value)));
085: }
086:
087: public CompassQueryFilter le(String name, Object value) {
088: ResourcePropertyLookup lookup = session.getMapping()
089: .getResourcePropertyLookup(name);
090: return new DefaultCompassQueryFilter(filterBuilder.le(lookup
091: .getPath(), lookup.getValue(value)));
092: }
093:
094: public CompassQueryFilter gt(String name, Object value) {
095: ResourcePropertyLookup lookup = session.getMapping()
096: .getResourcePropertyLookup(name);
097: return new DefaultCompassQueryFilter(filterBuilder.gt(lookup
098: .getPath(), lookup.getValue(value)));
099: }
100:
101: public CompassQueryFilter ge(String name, Object value) {
102: ResourcePropertyLookup lookup = session.getMapping()
103: .getResourcePropertyLookup(name);
104: return new DefaultCompassQueryFilter(filterBuilder.ge(lookup
105: .getPath(), lookup.getValue(value)));
106: }
107:
108: public CompassQueryFilter query(CompassQuery query) {
109: return new DefaultCompassQueryFilter(filterBuilder
110: .query(((DefaultCompassQuery) query)
111: .getSearchEngineQuery()));
112: }
113:
114: public CompassBooleanQueryFilterBuilder bool() {
115: return new DefaultCompassBooleanQueryFilterBuilder(
116: filterBuilder.bool());
117: }
118: }
|