package org.infinispan.query.impl;
import static org.infinispan.hibernate.search.spi.InfinispanIntegration.DATA_CACHENAME;
import static org.infinispan.hibernate.search.spi.InfinispanIntegration.DEFAULT_INDEXESDATA_CACHENAME;
import static org.infinispan.hibernate.search.spi.InfinispanIntegration.DEFAULT_INDEXESMETADATA_CACHENAME;
import static org.infinispan.hibernate.search.spi.InfinispanIntegration.DEFAULT_LOCKING_CACHENAME;
import static org.infinispan.hibernate.search.spi.InfinispanIntegration.LOCKING_CACHENAME;
import static org.infinispan.hibernate.search.spi.InfinispanIntegration.METADATA_CACHENAME;
import java.util.Properties;
import java.util.Set;
import org.hibernate.search.cfg.Environment;
import org.infinispan.query.affinity.AffinityIndexManager;
import org.infinispan.query.indexmanager.InfinispanIndexManager;
/**
* Extract useful information from indexing configuration
*
* @author gustavonalle
* @since 7.0
*/
public final class IndexPropertyInspector {
private IndexPropertyInspector() {
}
public static String getLockingCacheName(Properties properties) {
return getPropertyFor(LOCKING_CACHENAME, properties, DEFAULT_LOCKING_CACHENAME);
}
public static String getDataCacheName(Properties properties) {
return getPropertyFor(DATA_CACHENAME, properties, DEFAULT_INDEXESDATA_CACHENAME);
}
public static String getMetadataCacheName(Properties properties) {
return getPropertyFor(METADATA_CACHENAME, properties, DEFAULT_INDEXESMETADATA_CACHENAME);
}
public static boolean hasInfinispanDirectory(Properties properties) {
String indexManager = getPropertyFor(Environment.INDEX_MANAGER_IMPL_NAME, properties, null);
String directoryProvider = getPropertyFor("directory_provider", properties, null);
return "infinispan".equals(directoryProvider) || InfinispanIndexManager.class.getName().equals(indexManager) || AffinityIndexManager.class.getName().equals(indexManager);
}
private static String getPropertyFor(String suffix, Properties properties, String defaultValue) {
Set<String> propertyNames = properties.stringPropertyNames();
String propertyValue = null;
for (String propertyName : propertyNames) {
if (propertyName.endsWith(suffix)) {
propertyValue = properties.getProperty(propertyName);
}
}
return propertyValue == null ? defaultValue : propertyValue;
}
}