// Path: rulette-core/src/main/java/com/github/kislayverma/rulette/core/ruleinput/value/IInputValue.java
// public interface IInputValue<T> {
//     String getDataType();
//     T getValue();
//     int compareTo(String obj);
//     int compareTo(IInputValue<T> obj);
//     boolean isEmpty();
// }


import com.github.kislayverma.rulette.core.ruleinput.value.IInputValue;
import java.io.Serializable;
package com.github.kislayverma.rulette.core.ruleinput.value.defaults;


class InputStringValue implements IInputValue<String>, Serializable {
    private static final long serialVersionUID = 8248443566883409848L;

    private final String value;

    public InputStringValue (String value) {
        this.value = value;
    }

    @Override
    public boolean isEmpty() {
        return value == null || value.isEmpty();
    }

    @Override
    public String getValue() {
        return this.value;
    }

    @Override
    public int compareTo(String o) {
        String x = (o == null) ? "" : o;
        return this.value.compareTo(x);
    }

    @Override
    public String getDataType() {
        return String.class.getName();
    }

    @Override
    public int compareTo(IInputValue<String> obj) {
        if (this.isEmpty() && obj.isEmpty()) {
            return 0;
// Path: rulette-core/src/main/java/com/github/kislayverma/rulette/core/ruleinput/value/IInputValue.java
// public interface IInputValue<T> {
//     String getDataType();
//     T getValue();
//     int compareTo(String obj);
//     int compareTo(IInputValue<T> obj);
//     boolean isEmpty();
// }


// Path: rulette-core/src/main/java/com/github/kislayverma/rulette/core/ruleinput/value/defaults/InputStringValue.java
import com.github.kislayverma.rulette.core.ruleinput.value.IInputValue;
import java.io.Serializable;

package com.github.kislayverma.rulette.core.ruleinput.value.defaults;


class InputStringValue implements IInputValue<String>, Serializable {
    private static final long serialVersionUID = 8248443566883409848L;

    private final String value;

    public InputStringValue (String value) {
        this.value = value;
    }

    @Override
    public boolean isEmpty() {
        return value == null || value.isEmpty();
    }

    @Override
    public String getValue() {
        return this.value;
    }

    @Override
    public int compareTo(String o) {
        String x = (o == null) ? "" : o;
        return this.value.compareTo(x);
    }

    @Override
    public String getDataType() {
        return String.class.getName();
    }

    @Override
    public int compareTo(IInputValue<String> obj) {
        if (this.isEmpty() && obj.isEmpty()) {
            return 0;
        } else {