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

net.intelie.liverig.plugin.curves.Curve Maven / Gradle / Ivy

The newest version!
package net.intelie.liverig.plugin.curves;

import com.google.common.base.Strings;
import net.intelie.live.LiveJson;

import java.util.Map;

public class Curve {
    public static final Double DEFAULT_PRECISION = 0.0;
    private final String unit, color, description, quantityType;
    private final Double minimum, maximum;
    private final Double precision;
    private final Integer order;

    public Curve(String unit, String quantityType, String color, String description, Double minimum, Double maximum, Double precision, Integer order) {
        this.unit = Strings.nullToEmpty(unit);
        this.quantityType = Strings.emptyToNull(quantityType);
        this.color = color;
        this.description = Strings.nullToEmpty(description);
        this.minimum = minimum;
        this.maximum = maximum;
        this.order = order;
        this.precision = precision != null && precision < 0.0 ? DEFAULT_PRECISION : precision;
    }

    public Curve(String unit, String quantityType, String color, String description, Double minimum, Double maximum) {
        this(unit, quantityType, color, description, minimum, maximum, null, null);
    }

    public Curve(String unit, String color, String description, Double minimum, Double maximum) {
        this(unit, null, color, description, minimum, maximum, null, null);
    }

    public String unit() {
        return unit;
    }

    public String quantityType() {
        return quantityType;
    }

    public String color() {
        return color;
    }

    public String description() {
        return description;
    }

    public Double minimum() {
        return minimum;
    }

    public Double maximum() {
        return maximum;
    }

    public Double precision() {
        return precision;
    }

    public boolean isValid() {
        return !description.isEmpty();
    }

    public Integer order() {
        return order;
    }

    @Override
    public String toString() {
        return LiveJson.toJson(this);
    }

    public static Curve loadFromMap(Map valueMap) {
        if (valueMap == null)
            return null;

        return new Curve(getString(valueMap, "unit"), getString(valueMap, "quantityType"), getString(valueMap, "color"), getString(valueMap, "description"),
                getDouble(valueMap, "minimum"), getDouble(valueMap, "maximum"), getDouble(valueMap, "precision"), getInteger(valueMap, "order"));
    }

    private static String getString(Map map, String key) {
        Object value = map.get(key);
        if (value instanceof String)
            return (String) value;
        return null;
    }

    private static Double getDouble(Map map, String key) {
        Object value = map.get(key);
        if (value instanceof Double)
            return (Double) value;
        else if (value instanceof Number)
            return ((Number) value).doubleValue();
        return null;
    }

    private static Integer getInteger(Map map, String key) {
        Object value = map.get(key);
        if (value instanceof Integer)
            return (Integer) value;
        else if (value instanceof Number)
            return ((Number) value).intValue();
        return null;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy