/* * 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.bridge.util.impl; import org.hibernate.search.bridge.StringBridge; import org.hibernate.search.bridge.spi.EncodingBridge; import org.hibernate.search.bridge.spi.NullMarker; import org.hibernate.search.metadata.NumericFieldSettingsDescriptor.NumericEncodingType; /** * A base class for {@link EncodingBridge}s that encode values as Strings using a specific format. * * @author Yoann Rodiere */ public abstract class EncodingStringBridge<T> implements EncodingBridge, StringBridge { @Override public NumericEncodingType getEncodingType() { // Nulls are encoded as strings return NumericEncodingType.UNKNOWN; } /** * Parse the 'indexNullAs' string to an indexable value. * <p>The required format does not have to be the same as the encoded format. * * @param indexNullAs The string to parse. * @return The encoded value for the given string. * @throws IllegalArgumentException If the given string does not match the required format. */ protected abstract T parseIndexNullAs(String indexNullAs) throws IllegalArgumentException; @Override public NullMarker createNullMarker(String indexNullAs) throws IllegalArgumentException { // Parse the given "indexNullAs" string T typedValue = parseIndexNullAs( indexNullAs ); // Convert the resulting date to the format used when indexing. String encodedValue = objectToString( typedValue ); return new ToStringNullMarker( encodedValue ); } }