/*
* 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.engine;
import junit.framework.TestCase;
import org.compass.core.Property;
import org.compass.core.Resource;
import org.compass.core.ResourceFactory;
import org.compass.core.config.CompassSettings;
import org.compass.core.engine.SearchEngine;
import org.compass.core.engine.SearchEngineQuery;
import org.compass.core.engine.naming.StaticPropertyPath;
import org.compass.core.mapping.CompassMapping;
import org.compass.core.mapping.ResourceMapping;
import org.compass.core.mapping.ResourcePropertyMapping;
import org.compass.core.mapping.internal.DefaultCompassMapping;
import org.compass.core.spi.InternalResource;
/**
* @author kimchy
*/
public abstract class AbstractEngineTests extends TestCase {
public static final String PROPERTY_ID1 = "id1";
public static final String PROPERTY_ID2 = "id2";
public static final String PROPERTY_ID3 = "id3";
public static final String VALUE_ID1 = "id1value";
public static final String VALUE_ID2 = "id2value";
public static final String VALUE_ID3 = "id3value";
public static final String VALUE_ID1_2 = "id1value_2";
public static final String VALUE_ID2_2 = "id2value_2";
public static final String VALUE_ID3_2 = "id3value_2";
public static final String PROPERTY_VAL1 = "val1";
public static final String PROPERTY_VAL2 = "val2";
public static final String PROPERTY_VAL3 = "val3";
public static final String PROPERTY_VAL4 = "val4";
public static final String VALUE_VAL1 = "val1value";
public static final String VALUE_VAL2 = "val2value";
public static final String VALUE_VAL3 = "val3value";
public static final String VALUE_VAL4 = "val4value";
public static final String ALIAS_SINGLE = "singleid";
public static final String ALIAS_MUTLI = "multiid";
public static final String UPDATED_SUFFIX = "updated";
private CompassSettings settings;
private CompassMapping mapping;
public CompassSettings getSettings() {
return settings;
}
public CompassMapping getMapping() {
return this.mapping;
}
protected CompassMapping buildCompassMapping() {
ResourcePropertyMapping id1 = new MockPropertyMapping(PROPERTY_ID1, new StaticPropertyPath(PROPERTY_ID1));
ResourcePropertyMapping id2 = new MockPropertyMapping(PROPERTY_ID2, new StaticPropertyPath(PROPERTY_ID2));
ResourcePropertyMapping id3 = new MockPropertyMapping(PROPERTY_ID3, new StaticPropertyPath(PROPERTY_ID3));
// PropertyMapping val1 = new MockPropertyMapping(PROPERTY_VAL1, PROPERTY_VAL1);
// PropertyMapping val2 = new MockPropertyMapping(PROPERTY_VAL2, PROPERTY_VAL2);
// PropertyMapping val3 = new MockPropertyMapping(PROPERTY_VAL3, PROPERTY_VAL3);
// PropertyMapping val4 = new MockPropertyMapping(PROPERTY_VAL4, PROPERTY_VAL4);
ResourceMapping singleIdMapping = new MockResourceMapping(ALIAS_SINGLE);
((MockResourceMapping) singleIdMapping).addId(id1);
ResourceMapping multipleIdMapping = new MockResourceMapping(ALIAS_MUTLI);
((MockResourceMapping) multipleIdMapping).addId(id2);
((MockResourceMapping) multipleIdMapping).addId(id3);
DefaultCompassMapping mapping = new DefaultCompassMapping();
mapping.addMapping(singleIdMapping);
mapping.addMapping(multipleIdMapping);
return mapping;
}
protected void setUp() throws Exception {
super.setUp();
buildCompassSettings();
mapping = buildCompassMapping();
}
protected void tearDown() throws Exception {
super.tearDown();
}
protected CompassSettings buildCompassSettings() {
settings = new CompassSettings();
return settings;
}
protected Resource getSingleIdResource(SearchEngine searchEngine) {
return searchEngine.get(createSingleIdResource(searchEngine));
}
protected void assertSingleIdResourceExists(SearchEngine searchEngine) {
Resource r = getSingleIdResource(searchEngine);
assertNotNull("single resource id don't exists", r);
}
protected Resource getSingleIdResource2(SearchEngine searchEngine) {
return searchEngine.get(createSingleIdResource2(searchEngine));
}
protected void assertSingleIdResource2Exists(SearchEngine searchEngine) {
Resource r = getSingleIdResource2(searchEngine);
assertNotNull("single resource id exists", r);
}
protected Resource getMulitIdResource(SearchEngine searchEngine) {
return searchEngine.get(createMultiIdResource(searchEngine));
}
protected void assertMulitIdResourceExists(SearchEngine searchEngine) {
Resource r = getMulitIdResource(searchEngine);
assertNotNull("multi resource id exists", r);
}
protected Resource getMulitIdResource2(SearchEngine searchEngine) {
return searchEngine.get(createMultiIdResource2(searchEngine));
}
protected void assertMulitIdResource2Exists(SearchEngine searchEngine) {
Resource r = getMulitIdResource2(searchEngine);
assertNotNull("multi resource 2 id exists", r);
}
protected void assertSingleIdResourceNotExists(SearchEngine searchEngine) {
Resource r = getSingleIdResource(searchEngine);
assertNull("single resource id don't exists", r);
}
protected void assertSingleIdResource2NotExists(SearchEngine searchEngine) {
Resource r = getSingleIdResource2(searchEngine);
assertNull("single resource id don't exists", r);
}
protected void assertMulitIdResourceNotExists(SearchEngine searchEngine) {
Resource r = getMulitIdResource(searchEngine);
assertNull("multi resource id don't exists", r);
}
protected void assertMulitIdResource2NotExists(SearchEngine searchEngine) {
Resource r = getMulitIdResource2(searchEngine);
assertNull("multi resource id don't exists", r);
}
protected void assertSingleIdResourceOriginal(SearchEngine searchEngine) {
Resource resource = getSingleIdResource(searchEngine);
assertEquals(VALUE_ID1, resource.getValue(PROPERTY_ID1));
assertEquals(VALUE_VAL1, resource.getValue(PROPERTY_VAL1));
}
protected void assertSingleIdResource2Original(SearchEngine searchEngine) {
Resource resource = getSingleIdResource(searchEngine);
assertEquals(VALUE_ID2, resource.getValue(PROPERTY_ID1));
assertEquals(VALUE_VAL1, resource.getValue(PROPERTY_VAL1));
}
protected void assertSingleIdResourceUpdated(SearchEngine searchEngine) {
Resource resource = getSingleIdResource(searchEngine);
assertEquals(VALUE_ID1, resource.getValue(PROPERTY_ID1));
assertEquals(VALUE_VAL1 + UPDATED_SUFFIX, resource.getValue(PROPERTY_VAL1));
}
protected void assertSingleId2ResourceUpdated(SearchEngine searchEngine) {
Resource resource = getSingleIdResource2(searchEngine);
assertEquals(VALUE_ID2, resource.getValue(PROPERTY_ID1));
assertEquals(VALUE_VAL1 + UPDATED_SUFFIX, resource.getValue(PROPERTY_VAL1));
}
protected void assertMulitIdResourceOriginal(SearchEngine searchEngine) {
Resource resource = getMulitIdResource(searchEngine);
assertEquals(VALUE_ID2, resource.getValue(PROPERTY_ID2));
assertEquals(VALUE_ID3, resource.getValue(PROPERTY_ID3));
assertEquals(VALUE_VAL2, resource.getValue(PROPERTY_VAL2));
}
protected void assertMulitIdResourceUpdated(SearchEngine searchEngine) {
Resource resource = getMulitIdResource(searchEngine);
assertEquals(VALUE_ID2, resource.getValue(PROPERTY_ID2));
assertEquals(VALUE_ID3, resource.getValue(PROPERTY_ID3));
assertEquals(VALUE_VAL2 + UPDATED_SUFFIX, resource.getValue(PROPERTY_VAL2));
}
protected Resource createSingleIdResource(SearchEngine searchEngine) {
ResourceFactory resourceFactory = searchEngine.getSearchEngineFactory().getResourceFactory();
Resource singleId = resourceFactory.createResource(ALIAS_SINGLE);
singleId.addProperty(resourceFactory.createProperty(PROPERTY_ID1, VALUE_ID1, Property.Store.YES,
Property.Index.NOT_ANALYZED));
singleId.addProperty(resourceFactory.createProperty(PROPERTY_VAL1, VALUE_VAL1, Property.Store.YES,
Property.Index.ANALYZED));
singleId.addProperty(resourceFactory.createProperty(PROPERTY_VAL4, VALUE_VAL4, Property.Store.YES,
Property.Index.ANALYZED));
((InternalResource) singleId).addUID();
return singleId;
}
protected Resource createUpdatedSingleIdResource(SearchEngine searchEngine) {
ResourceFactory resourceFactory = searchEngine.getSearchEngineFactory().getResourceFactory();
Resource resource = createSingleIdResource(searchEngine);
resource.removeProperties(PROPERTY_VAL1);
resource.addProperty(resourceFactory.createProperty(PROPERTY_VAL1, VALUE_VAL1 + UPDATED_SUFFIX, Property.Store.YES,
Property.Index.ANALYZED));
return resource;
}
protected Resource createSingleIdResource2(SearchEngine searchEngine) {
ResourceFactory resourceFactory = searchEngine.getSearchEngineFactory().getResourceFactory();
Resource singleId = resourceFactory.createResource(ALIAS_SINGLE);
singleId.addProperty(resourceFactory.createProperty(PROPERTY_ID1, VALUE_ID1_2, Property.Store.YES,
Property.Index.NOT_ANALYZED));
singleId.addProperty(resourceFactory.createProperty(PROPERTY_VAL1, VALUE_VAL1, Property.Store.YES,
Property.Index.ANALYZED));
singleId.addProperty(resourceFactory.createProperty(PROPERTY_VAL4, VALUE_VAL4, Property.Store.YES,
Property.Index.ANALYZED));
((InternalResource) singleId).addUID();
return singleId;
}
protected Resource createUpdatedSingleIdResource2(SearchEngine searchEngine) {
ResourceFactory resourceFactory = searchEngine.getSearchEngineFactory().getResourceFactory();
Resource resource = createSingleIdResource2(searchEngine);
resource.removeProperties(PROPERTY_VAL1);
resource.addProperty(resourceFactory.createProperty(PROPERTY_VAL1, VALUE_VAL1 + UPDATED_SUFFIX, Property.Store.YES,
Property.Index.ANALYZED));
return resource;
}
protected Resource createMultiIdResource(SearchEngine searchEngine) {
ResourceFactory resourceFactory = searchEngine.getSearchEngineFactory().getResourceFactory();
Resource multiId = resourceFactory.createResource(ALIAS_MUTLI);
multiId.addProperty(resourceFactory.createProperty(PROPERTY_ID2, VALUE_ID2, Property.Store.YES,
Property.Index.NOT_ANALYZED));
multiId.addProperty(resourceFactory.createProperty(PROPERTY_ID3, VALUE_ID3, Property.Store.YES,
Property.Index.NOT_ANALYZED));
multiId.addProperty(resourceFactory.createProperty(PROPERTY_VAL2, VALUE_VAL2, Property.Store.YES,
Property.Index.ANALYZED));
multiId.addProperty(resourceFactory.createProperty(PROPERTY_VAL3, VALUE_VAL3, Property.Store.YES,
Property.Index.ANALYZED));
multiId.addProperty(resourceFactory.createProperty(PROPERTY_VAL4, VALUE_VAL4, Property.Store.YES,
Property.Index.ANALYZED));
((InternalResource) multiId).addUID();
return multiId;
}
protected Resource createMultiIdResource2(SearchEngine searchEngine) {
ResourceFactory resourceFactory = searchEngine.getSearchEngineFactory().getResourceFactory();
Resource multiId = resourceFactory.createResource(ALIAS_MUTLI);
multiId.addProperty(resourceFactory.createProperty(PROPERTY_ID2, VALUE_ID2_2, Property.Store.YES,
Property.Index.NOT_ANALYZED));
multiId.addProperty(resourceFactory.createProperty(PROPERTY_ID3, VALUE_ID3_2, Property.Store.YES,
Property.Index.NOT_ANALYZED));
multiId.addProperty(resourceFactory.createProperty(PROPERTY_VAL2, VALUE_VAL2, Property.Store.YES,
Property.Index.ANALYZED));
multiId.addProperty(resourceFactory.createProperty(PROPERTY_VAL3, VALUE_VAL3, Property.Store.YES,
Property.Index.ANALYZED));
multiId.addProperty(resourceFactory.createProperty(PROPERTY_VAL4, VALUE_VAL4, Property.Store.YES,
Property.Index.ANALYZED));
((InternalResource) multiId).addUID();
return multiId;
}
protected Resource createUpdatedMultiIdResource(SearchEngine searchEngine) {
ResourceFactory resourceFactory = searchEngine.getSearchEngineFactory().getResourceFactory();
Resource resource = createMultiIdResource(searchEngine);
resource.removeProperties(PROPERTY_VAL2);
resource.addProperty(resourceFactory.createProperty(PROPERTY_VAL2, VALUE_VAL2 + UPDATED_SUFFIX, Property.Store.YES,
Property.Index.ANALYZED));
return resource;
}
protected SearchEngineQuery createSinlgeResourceDeleteQuery(SearchEngine searchEngine) {
return searchEngine.queryBuilder().queryString(PROPERTY_ID1 + ":" + VALUE_ID1).toQuery();
}
protected SearchEngineQuery createMultiResourceDeteteQuery(SearchEngine searchEngine) {
return searchEngine.queryBuilder().queryString("+" + PROPERTY_ID2 + ":" + VALUE_ID2 + " +" + PROPERTY_ID3 + ":" + VALUE_ID3).toQuery();
}
}