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

edu.stanford.protege.webprotege.viz.NegatedEdgeCriteria Maven / Gradle / Ivy

There is a newer version: 2.1.0
Show newest version
package edu.stanford.protege.webprotege.viz;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.google.auto.value.AutoValue;

import javax.annotation.Nonnull;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 2019-12-06
 */
@AutoValue

@JsonTypeName("NegationOf")
public abstract class NegatedEdgeCriteria implements EdgeCriteria {

    @JsonCreator
    public static NegatedEdgeCriteria get(@Nonnull @JsonProperty("negatedCriteria") EdgeCriteria negatedCriteria) {
        return new AutoValue_NegatedEdgeCriteria(negatedCriteria);
    }

    @Nonnull
    public abstract EdgeCriteria getNegatedCriteria();

    @Override
    public  R accept(@Nonnull EdgeCriteriaVisitor visitor) {
        return visitor.visit(this);
    }

    @Nonnull
    @Override
    public EdgeCriteria simplify() {
        EdgeCriteria negatedCriteria = getNegatedCriteria().simplify();
        if(negatedCriteria instanceof NoEdgeCriteria) {
            // Remove double negative
            return AnyEdgeCriteria.get();
        }
        else {
            return NegatedEdgeCriteria.get(negatedCriteria);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy