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

org.carrot2.attrs.AttrEnum Maven / Gradle / Ivy

There is a newer version: 4.6.0
Show newest version
/*
 * Carrot2 project.
 *
 * Copyright (C) 2002-2021, Dawid Weiss, Stanisław Osiński.
 * All rights reserved.
 *
 * Refer to the full license file "carrot2.LICENSE"
 * in the root folder of the repository checkout or at:
 * https://www.carrot2.org/carrot2.LICENSE
 */
package org.carrot2.attrs;

import java.util.EnumSet;
import java.util.List;
import java.util.Locale;

public class AttrEnum> extends Attr {
  private Class clazz;

  AttrEnum(
      Class clazz, T value, List> constraint, String label) {
    super(value, label, constraint);

    if (!clazz.isEnum()) {
      throw new RuntimeException(
          String.format(Locale.ROOT, "Expected an enum class: %s", clazz.getSimpleName()));
    }
    this.clazz = clazz;
  }

  public Class enumClass() {
    return clazz;
  }

  public static class Builder> extends BuilderScaffold {
    private Class clazz;

    public Builder(Class clazz) {
      this.clazz = clazz;

      addConstraint(Constraint.named("value in " + EnumSet.allOf(clazz), (v) -> {}));
    }

    public Builder label(String label) {
      super.label(label);
      return this;
    }

    public AttrEnum defaultValue(T defaultValue) {
      return new AttrEnum<>(clazz, defaultValue, getConstraint(), label);
    }
  }

  public static > Builder builder(Class clazz) {
    return new Builder<>(clazz);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy