org.carrot2.attrs.AttrEnum Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of carrot2-core Show documentation
Show all versions of carrot2-core Show documentation
Carrot2 Text Clustering Library
/*
* Carrot2 project.
*
* Copyright (C) 2002-2020, 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 extends Constraint super T>> 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