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

org.carrot2.attrs.AttrInteger 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.List;

public class AttrInteger extends Attr {
  private AttrInteger(
      Integer value, List> constraint, String label) {
    super(value, label, constraint);
  }

  public static class Builder extends BuilderScaffold {
    public Builder min(int minInclusive) {
      addConstraint(
          Constraint.named(
              "value >= " + minInclusive,
              (v) -> {
                if (v != null && v < minInclusive) {
                  throw new IllegalArgumentException("Value must be >= " + minInclusive + ": " + v);
                }
              }));
      return this;
    }

    public Builder max(int maxInclusive) {
      addConstraint(
          Constraint.named(
              "value <= " + maxInclusive,
              (v) -> {
                if (v != null && v > maxInclusive) {
                  throw new IllegalArgumentException("Value must be <= " + maxInclusive + ": " + v);
                }
              }));
      return this;
    }

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

    public AttrInteger defaultValue(Integer defaultValue) {
      return new AttrInteger(defaultValue, getConstraint(), label);
    }
  }

  public static Builder builder() {
    return new Builder();
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy