/* * Hibernate, Relational Persistence for Idiomatic Java * * Copyright (c) 2010, Red Hat, Inc. and/or its affiliates or third-party contributors as * indicated by the @author tags or express copyright attribution * statements applied by the authors. All third-party contributions are * distributed under license by Red Hat, Inc. * * This copyrighted material is made available to anyone wishing to use, modify, * copy, or redistribute it subject to the terms and conditions of the GNU * Lesser General Public License, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution; if not, write to: * Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor * Boston, MA 02110-1301 USA */ package org.hibernate.search.cfg; import java.lang.annotation.ElementType; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; /** * @author Emmanuel Bernard */ public class EntityDescriptor { private Map<String, Object> indexed; private Map<PropertyKey, PropertyDescriptor> properties = new HashMap<PropertyKey, PropertyDescriptor>(); private Map<String, Object> similarity; private Map<String, Object> boost; private Map<String, Object> analyzerDiscriminator; private Set<Map<String, Object>> fullTextFilterDefs = new HashSet<Map<String, Object>>(); private Map<String, Object> providedId; private Set<Map<String, Object>> classBridges = new HashSet<Map<String, Object>>(); private Set<Map<String, Object>> spatials = new HashSet<Map<String, Object>>(); private Map<String, Object> dynamicBoost; private Map<String, Object> cacheInMemory; public Map<String, Object> getIndexed() { return indexed; } public EntityDescriptor(Class<?> entityType) { } public void setIndexed(Map<String, Object> indexed) { this.indexed = indexed; } PropertyDescriptor getProperty(String name, ElementType type) { PropertyKey propertyKey = new PropertyKey( name, type ); PropertyDescriptor descriptor = properties.get( propertyKey ); if ( descriptor == null ) { descriptor = new PropertyDescriptor( name, type ); properties.put( propertyKey, descriptor ); } return descriptor; } public PropertyDescriptor getPropertyDescriptor(String name, ElementType type) { return properties.get( new PropertyKey( name, type ) ); } public void setSimilariy(Map<String, Object> similarity) { this.similarity = similarity; } public Map<String, Object> getSimilarity() { return similarity; } public Map<String, Object> getCacheInMemory() { return cacheInMemory; } public void setCacheInMemory(Map<String, Object> cacheInMemory) { this.cacheInMemory = cacheInMemory; } public void setBoost(Map<String, Object> boost) { this.boost = boost; } public Map<String, Object> getBoost() { return boost; } public void setAnalyzerDiscriminator(Map<String, Object> analyzerDiscriminator) { this.analyzerDiscriminator = analyzerDiscriminator; } public Map<String, Object> getAnalyzerDiscriminator() { return analyzerDiscriminator; } public Set<Map<String, Object>> getFullTextFilterDefs() { return fullTextFilterDefs; } public void addFulltextFilterDef(Map<String, Object> fullTextFilterDef) { fullTextFilterDefs.add( fullTextFilterDef ); } public void addClassBridgeDef(Map<String, Object> classBridge) { classBridges.add( classBridge ); } public Set<Map<String, Object>> getClassBridgeDefs() { return classBridges; } public void addSpatial(Map<String,Object> spatial) { spatials.add(spatial); } public Set<Map<String, Object>> getSpatials() { return spatials; } public void setProvidedId(Map<String, Object> providedId) { this.providedId = providedId; } public Map<String, Object> getProvidedId() { return this.providedId; } public void setDynamicBoost(Map<String, Object> dynamicEntityBoost) { this.dynamicBoost = dynamicEntityBoost; } public Map<String, Object> getDynamicBoost() { return this.dynamicBoost; } private static class PropertyKey { private final String name; private final ElementType type; PropertyKey(String name, ElementType type) { this.name = name; this.type = type; } @Override public boolean equals(Object o) { if ( this == o ) { return true; } if ( o == null || getClass() != o.getClass() ) { return false; } PropertyKey property = (PropertyKey) o; if ( name != null ? !name.equals( property.name ) : property.name != null ) { return false; } if ( type != property.type ) { return false; } return true; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + ( type != null ? type.hashCode() : 0 ); return result; } } }