All Downloads are FREE. Search and download functionalities are using the official Maven repository.

helper.database.internal.Util Maven / Gradle / Ivy

The newest version!
package helper.database.internal;

import com.google.common.base.Preconditions;
import helper.database.DatabaseException;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
import javax.annotation.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 数据库工具。
 *
 * @author qiang.zhang
 */
public final class Util {
  private Util() {
    throw new AssertionError("No instance.");
  }

  private static final Logger LOGGER = LoggerFactory.getLogger("database");

  /**
   * 检测方法。
   *
   * @param target 目标对象。
   * @param predicate 断言对象。
   * @param  目标类型。
   * @return true 检测通过;false 检测不通过。
   * @throws DatabaseException 统一化的数据库异常,更容易被捕捉。
   */
  public static  boolean check(T target, Predicate predicate) {
    Preconditions.checkNotNull(predicate);
    try {
      return predicate.test(target);
    } catch (Exception e) {
      LOGGER.error("check error, cause: {}", e.getMessage());
      throw new DatabaseException("check failed!", e);
    }
  }

  /**
   * 创建方法。
   *
   * @param supplier 供应商对象。
   * @param  目标类型。
   * @return 目标对象,可能为 Null。
   * @throws DatabaseException 统一化的数据库异常,更容易被捕捉。
   */
  public static @Nullable  T create(Supplier supplier) {
    Preconditions.checkNotNull(supplier);
    try {
      return supplier.get();
    } catch (Exception e) {
      LOGGER.error("create error, cause: {}", e.getMessage());
      throw new DatabaseException("create failed!", e);
    }
  }

  /**
   * 执行方法。
   *
   * @param target 目标对象。
   * @param  目标类型。
   * @param consumer 消费者对象。
   * @throws DatabaseException 统一化的数据库异常,更容易被捕捉。
   */
  public static  void execute(T target, Consumer consumer) {
    Preconditions.checkNotNull(target);
    Preconditions.checkNotNull(consumer);
    try {
      consumer.accept(target);
    } catch (Exception e) {
      LOGGER.error("execute {} error, cause: {}", target, e.getMessage());
      throw new DatabaseException("execute failed!", e);
    }
  }

  /**
   * 转换方法。
   *
   * @param input 输入对象。
   * @param function 功能对象。
   * @param  输入类型。
   * @param  返回类型。
   * @return 返回对象,可能为 Null。
   * @throws DatabaseException 统一化的数据库异常,更容易被捕捉。
   */
  public static @Nullable  R transform(I input, Function function) {
    Preconditions.checkNotNull(input);
    Preconditions.checkNotNull(function);
    try {
      return function.apply(input);
    } catch (Exception e) {
      LOGGER.error("transform {} error, cause: {}", input, e.getMessage());
      throw new DatabaseException("transform failed!", e);
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy