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

com.rapleaf.jack.store.field.JsFields Maven / Gradle / Ivy

package com.rapleaf.jack.store.field;

import java.util.function.Function;

import com.google.gson.JsonObject;
import org.joda.time.DateTime;

import com.rapleaf.jack.store.JsRecord;
import com.rapleaf.jack.store.iface.ValueIndexer;

public final class JsFields {

  private JsFields() {
  }

  // value fields

  public static JsValueField createIntField(String key) {
    return new JsValueField<>(key, ValueIndexer::putInt, JsRecord::getInt);
  }

  public static JsValueField createLongField(String key) {
    return new JsValueField<>(key, ValueIndexer::putLong, JsRecord::getLong);
  }

  public static JsValueField createStringField(String key) {
    return new JsValueField<>(key, ValueIndexer::putString, JsRecord::getString);
  }

  public static JsValueField createBooleanField(String key) {
    return new JsValueField<>(key, ValueIndexer::putBoolean, JsRecord::getBoolean);
  }

  public static JsValueField createDoubleField(String key) {
    return new JsValueField<>(key, ValueIndexer::putDouble, JsRecord::getDouble);
  }

  public static JsValueField createDateTimeField(String key) {
    return new JsValueField<>(key, ValueIndexer::putDateTime, JsRecord::getDateTime);
  }

  public static JsValueField createJsonField(String key) {
    return new JsValueField<>(key, ValueIndexer::putJson, JsRecord::getJson);
  }

  // list fields

  public static JsListField createIntListField(String key) {
    return new JsListField<>(key, ValueIndexer::putIntList, JsRecord::getIntList);
  }

  public static JsListField createLongListField(String key) {
    return new JsListField<>(key, ValueIndexer::putLongList, JsRecord::getLongList);
  }

  public static JsListField createStringListField(String key) {
    return new JsListField<>(key, ValueIndexer::putStringList, JsRecord::getStringList);
  }

  public static JsListField createBooleanListField(String key) {
    return new JsListField<>(key, ValueIndexer::putBooleanList, JsRecord::getBooleanList);
  }

  public static JsListField createDoubleListField(String key) {
    return new JsListField<>(key, ValueIndexer::putDoubleList, JsRecord::getDoubleList);
  }

  public static JsListField createDateTimeListField(String key) {
    return new JsListField<>(key, ValueIndexer::putDateTimeList, JsRecord::getDateTimeList);
  }

  // enum fields

  public static > JsEnumNameField createEnumNameField(String key, Function nameToEnumFunction) {
    return new JsEnumNameField<>(key, nameToEnumFunction, ValueIndexer::putString, JsRecord::getString);
  }

  public static > JsEnumValueField createEnumValueField(String key, Function enumToValueFunction, Function valueToEnumFunction) {
    return new JsEnumValueField<>(key, enumToValueFunction, valueToEnumFunction, ValueIndexer::putInt, JsRecord::getInt);
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy