/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.spi;
import org.hibernate.search.util.logging.impl.Log;
import org.hibernate.search.util.logging.impl.LoggerFactory;
/**
* Modes for triggering indexing of entities.
*
* @author Gunnar Morling
*/
public enum IndexingMode {
/**
* Indexing is triggered automatically upon entity insertion, update etc.
*/
EVENT("event"),
/**
* Indexing is triggered explicitly.
*/
MANUAL("manual");
private static Log LOG = LoggerFactory.make();
private String externalRepresentation;
private IndexingMode(String externalRepresentation) {
this.externalRepresentation = externalRepresentation;
}
/**
* Returns the {@link IndexingMode} matching the given external representation as specified via
* {@link org.hibernate.search.cfg.Environment#INDEXING_STRATEGY}
* @param indexingMode the indexing mode external representation
* @return the {@link IndexingMode}
*/
public static IndexingMode fromExternalRepresentation(String indexingMode) {
if ( EVENT.toExternalRepresentation().equals( indexingMode ) ) {
return IndexingMode.EVENT;
}
else if ( MANUAL.toExternalRepresentation().equals( indexingMode ) ) {
return IndexingMode.MANUAL;
}
else {
throw LOG.unknownIndexingMode( indexingMode );
}
}
/**
* Returns the external representation of this indexing mode. Generally this enumeration itself should preferably be
* used for comparisons etc.
* @return the external representation as string
*/
public String toExternalRepresentation() {
return externalRepresentation;
}
}