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

edu.stanford.protege.webprotege.hierarchy.GraphModelChange Maven / Gradle / Ivy

The newest version!
package edu.stanford.protege.webprotege.hierarchy;

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo;

import java.util.function.Consumer;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 2021-04-20
 */
@JsonSubTypes({
        @Type(EdgeChange.class),
        @Type(AddRootNode.class),
        @Type(UpdateUserObject.class),
        @Type(RemoveRootNode.class)
})
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
public abstract class GraphModelChange {

    public GraphModelChange() {
    }

    public abstract void accept(GraphModelChangeVisitor visitor);

    abstract void forEachGraphNode(Consumer> nodeConsumer);
}