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

cdc.enums.BooleanEnumType Maven / Gradle / Ivy

package cdc.enums;

import java.util.Collections;
import java.util.List;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import cdc.util.lang.FailureReaction;
import cdc.util.lang.NotFoundException;
import cdc.util.lang.Operators;

/**
 * EnumType implementation dedicated to booleans.
 *
 * @author Damien Carbonne
 *
 */
public final class BooleanEnumType implements EnumType {
    private static final Logger LOGGER = LogManager.getLogger(BooleanEnumType.class);
    private final List values;

    public static final BooleanEnumType INSTANCE = new BooleanEnumType();

    private BooleanEnumType() {
        this.values = List.of(Boolean.FALSE, Boolean.TRUE);
    }

    @Override
    public void addEventHandler(DagEventHandler handler) {
        // Ignore
    }

    @Override
    public void removeEventHandler(DagEventHandler handler) {
        // Ignore
    }

    @Override
    public boolean isSupported(DagFeature feature) {
        return false;
    }

    @Override
    public boolean isLocked() {
        return true;
    }

    @Override
    public Class getValueClass() {
        return Boolean.class;
    }

    @Override
    public List getValues() {
        return values;
    }

    @Override
    public List getRoots() {
        return getValues();
    }

    @Override
    public List getChildren(Boolean value) {
        return Collections.emptyList();
    }

    @Override
    public List getParents(Boolean value) {
        return Collections.emptyList();
    }

    @Override
    public String getName(Boolean value) {
        return value == null ? null : value.toString();
    }

    @Override
    public String getQName(Boolean value) {
        return getName(value);
    }

    @Override
    public boolean isValid(Boolean value) {
        return value != null;
    }

    @Override
    public Boolean valueOf(String qname,
                           FailureReaction reaction) {
        final Boolean tmp;
        if (qname == null) {
            tmp = null;
        } else if ("true".equals(qname)) {
            tmp = Boolean.TRUE;
        } else if ("false".equals(qname)) {
            tmp = Boolean.FALSE;
        } else {
            tmp = null;
        }
        return NotFoundException.onResult(tmp,
                                          EnumType.unknownQName(qname),
                                          LOGGER,
                                          reaction,
                                          null);
    }

    @Override
    public boolean areEqual(Boolean left,
                            Boolean right) {
        return Operators.equals(left, right);
    }

    @Override
    public boolean isStrictlyOver(Boolean left,
                                  Boolean right) {
        return false;
    }

    @Override
    public boolean equals(Object other) {
        // Only one instance
        return this == other;
    }

    @Override
    public int hashCode() {
        return super.hashCode();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy