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

edu.stanford.protege.webprotege.index.impl.AxiomChangeHandler Maven / Gradle / Ivy

The newest version!
package edu.stanford.protege.webprotege.index.impl;

import edu.stanford.protege.webprotege.change.*;

import javax.annotation.Nonnull;
import java.util.List;
import java.util.function.Consumer;

import static com.google.common.base.Preconditions.checkNotNull;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 2019-09-04
 */
public class AxiomChangeHandler {

    private final OntologyChangeVisitor visitor = new OntologyChangeVisitor() {
        @Override
        public void visit(@Nonnull AddAxiomChange addAxiomChange) {
            addAxiomChangeConsumer.accept(addAxiomChange);
            axiomChangeConsumer.accept(addAxiomChange);
        }

        @Override
        public void visit(@Nonnull RemoveAxiomChange removeAxiomChange) {
            removeAxiomChangeConsumer.accept(removeAxiomChange);
            axiomChangeConsumer.accept(removeAxiomChange);
        }
    };

    @Nonnull
    private Consumer addAxiomChangeConsumer = change -> {};

    @Nonnull
    private Consumer removeAxiomChangeConsumer = change -> {};

    @Nonnull
    private Consumer axiomChangeConsumer = axiomChange -> {};

    public AxiomChangeHandler() {
    }


    public void setAddAxiomChangeConsumer(@Nonnull Consumer addAxiomChangeConsumer) {
        this.addAxiomChangeConsumer = checkNotNull(addAxiomChangeConsumer);
    }

    public void setRemoveAxiomChangeConsumer(@Nonnull Consumer removeAxiomChangeConsumer) {
        this.removeAxiomChangeConsumer = checkNotNull(removeAxiomChangeConsumer);
    }

    public void setAxiomChangeConsumer(@Nonnull Consumer axiomChangeConsumer) {
        this.axiomChangeConsumer = checkNotNull(axiomChangeConsumer);
    }

    public void handleOntologyChanges(List changes) {
        changes.forEach(chg -> chg.accept(visitor));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy