/* * 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 org.compass.core.Property; import org.compass.core.config.CompassEnvironment; import org.compass.core.engine.naming.PropertyPath; import org.compass.core.engine.subindex.ConstantSubIndexHash; import org.compass.core.engine.subindex.SubIndexHash; import org.compass.core.mapping.AliasMapping; import org.compass.core.mapping.AllMapping; import org.compass.core.mapping.BoostPropertyMapping; import org.compass.core.mapping.Cascade; import org.compass.core.mapping.CascadeMapping; import org.compass.core.mapping.Mapping; import org.compass.core.mapping.ResourceAnalyzerController; import org.compass.core.mapping.ResourceIdMappingProvider; import org.compass.core.mapping.ResourcePropertyMapping; import org.compass.core.mapping.SpellCheck; import org.compass.core.mapping.internal.DefaultAllMapping; import org.compass.core.mapping.internal.InternalAllMapping; import org.compass.core.mapping.internal.InternalResourceMapping; import org.compass.core.mapping.support.AbstractMultipleMapping; import org.compass.core.util.config.ConfigurationHelper; /** * @author kimchy */ public class MockResourceMapping extends AbstractMultipleMapping implements InternalResourceMapping, AliasMapping { public String[] getExtendingAliases() { return extendingAliases; } public void setExtendingAliases(String[] extendingAliases) { this.extendingAliases = extendingAliases; } private class MockResourceIdMapping implements ResourceIdMappingProvider { private ResourcePropertyMapping[] ids = new ResourcePropertyMapping[0]; public void addId(ResourcePropertyMapping id) { ResourcePropertyMapping[] result = new ResourcePropertyMapping[ids.length + 1]; int i = 0; for (i = 0; i < ids.length; i++) result[i] = ids[i]; result[i] = id; ids = result; } public Mapping[] getIdMappings() { return ids; } public ResourcePropertyMapping[] getResourceIdMappings() { return ids; } } private String alias; private String[] extendedAliases = new String[0]; private String[] extendingAliases = new String[0]; private float boost = 1.0f; private SubIndexHash subIndexHash; private AllMapping allMapping = new DefaultAllMapping(); private MockResourceIdMapping idMapping = new MockResourceIdMapping(); public MockResourceMapping(String alias) { this.alias = alias; ((InternalAllMapping) allMapping).setExcludeAlias(false); ((InternalAllMapping) allMapping).setOmitNorms(false); ((InternalAllMapping) allMapping).setOmitTf(false); ((InternalAllMapping) allMapping).setSupported(true); ((InternalAllMapping) allMapping).setProperty(CompassEnvironment.All.DEFAULT_NAME); ((InternalAllMapping) allMapping).setTermVector(Property.TermVector.NO); ((InternalAllMapping) allMapping).setIncludePropertiesWithNoMappings(true); } public AliasMapping shallowCopy() { return new MockResourceMapping(alias); } public void addId(ResourcePropertyMapping id) { idMapping.addId(id); } public Mapping[] getIdMappings() { return idMapping.getIdMappings(); } public ResourcePropertyMapping[] getResourceIdMappings() { return idMapping.getResourceIdMappings(); } public SubIndexHash getSubIndexHash() { if (this.subIndexHash != null) { return this.subIndexHash; } return new ConstantSubIndexHash(getAlias()); } public boolean isIncludePropertiesWithNoMappingsInAll() { return true; } public String getAlias() { return alias; } public void setAlias(String alias) { this.alias = alias; } public float getBoost() { return boost; } public void setBoost(float boost) { this.boost = boost; } public Mapping copy() { return null; } public boolean isRoot() { return true; } public String getAllProperty() { return null; } public Boolean isAllSupported() { return true; } public String[] getExtendedAliases() { return extendedAliases; } public void setExtendedAliases(String[] extendedMappings) { this.extendedAliases = extendedMappings; } public void setSubIndexHash(SubIndexHash subIndexHash) { this.subIndexHash = subIndexHash; } public Property.TermVector getAllTermVector() { return Property.TermVector.NO; } public ConfigurationHelper getConfiguration() { return null; } public ResourcePropertyMapping[] getResourcePropertyMappings() { return new ResourcePropertyMapping[0]; } public String getAnalyzer() { return null; } public boolean hasSpecificAnalyzerPerResourceProperty() { return false; } public ResourcePropertyMapping getResourcePropertyMapping(String propertyName) { return null; } public ResourcePropertyMapping getResourcePropertyMappingByPath(PropertyPath path) { return null; } public ResourcePropertyMapping[] getResourcePropertyMappings(String propertyName) { return new ResourcePropertyMapping[0]; } public String getAllAnalyzer() { return null; } public ResourceAnalyzerController getAnalyzerController() { return null; } public BoostPropertyMapping getBoostPropertyMapping() { return null; } public String[] getResourcePropertyNames() { return new String[0]; } public ResourcePropertyMapping getResourcePropertyMappingByDotPath(String path) { return null; } public CascadeMapping[] getCascadeMappings() { return null; } public boolean operationAllowed(Cascade cascade) { return isRoot(); } public boolean isAllOmitNorms() { return false; } public boolean isExcludeAliasFromAll() { return true; } public void setUIDPath(String uid) { throw new IllegalStateException("Should not be called, just for testing"); } public String getUIDPath() { return "$uid"; } public void setAnalyzer(String analyzer) { } public AllMapping getAllMapping() { return allMapping; } public void setAllMapping(AllMapping allMapping) { this.allMapping = allMapping; } public void setSpellCheck(SpellCheck spellCheck) { } public SpellCheck getSpellCheck() { return SpellCheck.NA; } }