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

edu.stanford.protege.webprotege.events.EntityDeprecatedChangedEventTranslator Maven / Gradle / Ivy

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

import edu.stanford.protege.webprotege.change.ChangeApplicationResult;
import edu.stanford.protege.webprotege.change.OntologyChange;
import edu.stanford.protege.webprotege.common.ChangeRequestId;
import edu.stanford.protege.webprotege.common.EventId;
import edu.stanford.protege.webprotege.event.EntityDeprecationStatusChangedEvent;
import edu.stanford.protege.webprotege.index.EntitiesInProjectSignatureByIriIndex;
import edu.stanford.protege.webprotege.mansyntax.render.DeprecatedEntityChecker;
import edu.stanford.protege.webprotege.common.ProjectId;
import edu.stanford.protege.webprotege.revision.Revision;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLAnnotationAssertionAxiom;

import javax.inject.Inject;
import java.util.List;

import static org.semanticweb.owlapi.model.AxiomType.ANNOTATION_ASSERTION;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 22/05/15
 */
public class EntityDeprecatedChangedEventTranslator implements EventTranslator {


    private final ProjectId projectId;

    private final DeprecatedEntityChecker deprecatedEntityChecker;

    private final EntitiesInProjectSignatureByIriIndex entitiesByIri;

    @Inject
    public EntityDeprecatedChangedEventTranslator(ProjectId projectId,
                                                  DeprecatedEntityChecker deprecatedEntityChecker,
                                                  EntitiesInProjectSignatureByIriIndex entitiesByIri) {
        this.projectId = projectId;
        this.deprecatedEntityChecker = deprecatedEntityChecker;
        this.entitiesByIri = entitiesByIri;
    }


    @Override
    public void prepareForOntologyChanges(List submittedChanges) {

    }

    @Override
    public void translateOntologyChanges(Revision revision,
                                         ChangeApplicationResult changes,
                                         List projectEventList,
                                         ChangeRequestId changeRequestId) {
        for(OntologyChange change : changes.getChangeList()) {
            if(change.isChangeFor(ANNOTATION_ASSERTION)) {
                var annotationAssertion = (OWLAnnotationAssertionAxiom) change.getAxiomOrThrow();
                if(annotationAssertion.getProperty()
                        .isDeprecated()) {
                    if(annotationAssertion.getSubject() instanceof IRI) {
                        IRI subject = (IRI) annotationAssertion.getSubject();
                        entitiesByIri.getEntitiesInSignature(subject)
                                     .map(entity -> {
                                         var deprecated = deprecatedEntityChecker.isDeprecated(entity);
                                         return new EntityDeprecationStatusChangedEvent(EventId.generate(), projectId, entity, deprecated);
                                     })
                                     .map(SimpleHighLevelProjectEventProxy::wrap)
                                     .forEach(projectEventList::add);
                    }
                }
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy