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

kz.greetgo.conf.hot.ElementDefinition Maven / Gradle / Ivy

There is a newer version: 2.0.5
Show newest version
package kz.greetgo.conf.hot;

import kz.greetgo.conf.type_manager.TypeManager;
import kz.greetgo.conf.type_manager.TypeManagerCache;

/**
 * Definition of config element
 */
public class ElementDefinition {

  /**
   * Config element name
   */
  public final String name;

  /**
   * Type manager for operation with type
   */
  public final TypeManager typeManager;

  /**
   * Config element default value
   */
  final Object defaultValue;

  /**
   * Description of config element
   */
  public final String description;

  /**
   * Define default list size. If null then is not list
   */
  public final Integer defaultListSize;

  public final FirstReadEnv firstReadEnv;

  private ElementDefinition(String name,
                            TypeManager typeManager,
                            Object defaultValue,
                            String description,
                            Integer defaultListSize,
                            FirstReadEnv firstReadEnv) {
    this.firstReadEnv = firstReadEnv;

    if (defaultValue instanceof TypeManager) {
      throw new IllegalArgumentException("defaultValue cannot be TypeManager");
    }
    this.name = name;
    this.typeManager = typeManager;
    this.defaultValue = defaultValue;
    this.description = description;
    this.defaultListSize = defaultListSize;

  }

  public static ElementDefinition newOne(String name, Class type, Object defaultValue, String description) {
    return new ElementDefinition(name, TypeManagerCache.getOrCreate(type), defaultValue, description, null, null);
  }

  public Object newDefaultValue() {
    return typeManager.newDefaultValue(defaultValue);
  }

  public LineStructure createLineStructure() {
    return typeManager.createLineStructure(name, defaultValue, description, defaultListSize);
  }

  public static ElementDefinition newList(String name, Class type, Object defaultValue, String description) {
    return new ElementDefinition(name, TypeManagerCache.getOrCreate(type), defaultValue, description, 1, null);
  }

  public static ElementDefinition create(String name,
                                         TypeManager typeManager,
                                         Object defaultValue,
                                         String description,
                                         Integer defaultListSize,
                                         FirstReadEnv firstReadEnv) {

    return new ElementDefinition(name, typeManager, defaultValue, description, defaultListSize, firstReadEnv);

  }

  public static ElementDefinition create(String name,
                                         Class type,
                                         Object defaultValue,
                                         String description,
                                         Integer defaultListSize,
                                         FirstReadEnv firstReadEnv) {

    return new ElementDefinition(
      name,
      TypeManagerCache.getOrCreate(type),
      defaultValue,
      description,
      defaultListSize,
      firstReadEnv);

  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy