/* * 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.test.bridge; import java.util.Map; import org.hibernate.search.bridge.ParameterizedBridge; import org.hibernate.search.bridge.TwoWayStringBridge; /** * Padding Integer bridge. * All numbers will be padded with 0 to match 5 digits * * @author Emmanuel Bernard */ public class PaddedIntegerBridge implements TwoWayStringBridge, ParameterizedBridge { public static final String PADDING_PROPERTY = "padding"; private int padding = 5; //default @Override public void setParameterValues(Map<String,String> parameters) { String padding = parameters.get( PADDING_PROPERTY ); if ( padding != null ) { this.padding = Integer.parseInt( padding ); } } @Override public String objectToString(Object object) { String rawInteger = object.toString(); if ( rawInteger.length() > padding ) { throw new IllegalArgumentException( "Try to pad on a number too big" ); } StringBuilder paddedInteger = new StringBuilder(); for ( int padIndex = rawInteger.length(); padIndex < padding; padIndex++ ) { paddedInteger.append( '0' ); } return paddedInteger.append( rawInteger ).toString(); } @Override public Object stringToObject(String stringValue) { return new Integer( stringValue ); } }