package pt.ist.fenixframework.hibernatesearch;
import java.util.*;
import org.hibernate.annotations.common.reflection.ReflectionManager;
import org.hibernate.search.cfg.SearchMapping;
import org.hibernate.search.cfg.spi.IndexManagerFactory;
import org.hibernate.search.cfg.spi.SearchConfigurationBase;
import org.hibernate.search.impl.DefaultIndexManagerFactory;
import org.hibernate.search.spi.ServiceProvider;
/**
* This class is used to configure hibernate-search.
*/
class SearchConfiguration extends SearchConfigurationBase {
private final Map<String, Class<?>> classes = new HashMap<String, Class<?>>();
private final Properties properties;
private final SearchMapping searchMapping;
private final Map<Class<? extends ServiceProvider<?>>, Object> providedServices =
new HashMap<Class<? extends ServiceProvider<?>>, Object>();
private final IndexManagerFactory indexManagerFactory = new DefaultIndexManagerFactory();
public SearchConfiguration(Properties properties, SearchMapping searchMapping, Collection<Class<?>> classes) {
this.properties = properties;
this.searchMapping = searchMapping;
for (Class<?> c : classes) {
this.classes.put(c.getName(), c);
}
}
@Override
public Iterator<Class<?>> getClassMappings() {
return classes.values().iterator();
}
@Override
public Class<?> getClassMapping(String name) {
return classes.get(name);
}
@Override
public String getProperty(String propertyName) {
return properties.getProperty(propertyName);
}
@Override
public Properties getProperties() {
return properties;
}
@Override
public ReflectionManager getReflectionManager() {
return null;
}
@Override
public SearchMapping getProgrammaticMapping() {
return searchMapping;
}
@Override
public Map<Class<? extends ServiceProvider<?>>, Object> getProvidedServices() {
return providedServices;
}
@Override
public IndexManagerFactory getIndexManagerFactory() {
return indexManagerFactory;
}
}