Package org.hibernate.search.bridge.impl

Source Code of org.hibernate.search.bridge.impl.DateBridgeProvider

/*
* 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.impl;

import java.lang.reflect.AnnotatedElement;

import org.hibernate.search.annotations.Resolution;
import org.hibernate.search.bridge.FieldBridge;
import org.hibernate.search.bridge.builtin.DateBridge;
import org.hibernate.search.bridge.builtin.impl.TwoWayString2FieldBridgeAdaptor;
import org.hibernate.search.util.logging.impl.Log;
import org.hibernate.search.util.logging.impl.LoggerFactory;

/**
* Built-in {@link org.hibernate.search.bridge.spi.BridgeProvider} handling date bridging
* when {@code @DateBridge} is involved.
* As built-in provider, no Service Loader file is used: the {@code BridgeFactory} does access it
* after the custom bridge providers found.
*
* @author Emmanuel Bernard <emmanuel@hibernate.org>
*/
public class DateBridgeProvider extends ExtendedBridgeProvider {
  private static final Log LOG = LoggerFactory.make();

  private static final FieldBridge DATE_YEAR = new TwoWayString2FieldBridgeAdaptor( DateBridge.DATE_YEAR );
  private static final FieldBridge DATE_MONTH = new TwoWayString2FieldBridgeAdaptor( DateBridge.DATE_MONTH );
  private static final FieldBridge DATE_DAY = new TwoWayString2FieldBridgeAdaptor( DateBridge.DATE_DAY );
  private static final FieldBridge DATE_HOUR = new TwoWayString2FieldBridgeAdaptor( DateBridge.DATE_HOUR );
  private static final FieldBridge DATE_MINUTE = new TwoWayString2FieldBridgeAdaptor( DateBridge.DATE_MINUTE );
  private static final FieldBridge DATE_SECOND = new TwoWayString2FieldBridgeAdaptor( DateBridge.DATE_SECOND );
  public static final FieldBridge DATE_MILLISECOND = new TwoWayString2FieldBridgeAdaptor(DateBridge.DATE_MILLISECOND );

  @Override
  public FieldBridge provideFieldBridge(ExtendedBridgeProviderContext context) {
    AnnotatedElement annotatedElement = context.getAnnotatedElement();
    if ( annotatedElement.isAnnotationPresent( org.hibernate.search.annotations.DateBridge.class ) ) {
      Resolution resolution = annotatedElement.getAnnotation( org.hibernate.search.annotations.DateBridge.class )
          .resolution();
      return getDateField( resolution );
    }
    return null;
  }

  private FieldBridge getDateField(Resolution resolution) {
    switch ( resolution ) {
      case YEAR:
        return DATE_YEAR;
      case MONTH:
        return DATE_MONTH;
      case DAY:
        return DATE_DAY;
      case HOUR:
        return DATE_HOUR;
      case MINUTE:
        return DATE_MINUTE;
      case SECOND:
        return DATE_SECOND;
      case MILLISECOND:
        return DATE_MILLISECOND;
      default:
        throw LOG.unknownResolution( resolution.toString() );
    }
  }
}
TOP

Related Classes of org.hibernate.search.bridge.impl.DateBridgeProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.