
edu.stanford.protege.webprotege.change.FindAndReplaceIRIPrefixChangeGenerator Maven / Gradle / Ivy
The newest version!
package edu.stanford.protege.webprotege.change;
import edu.stanford.protege.webprotege.common.ChangeRequestId;
import edu.stanford.protege.webprotege.entity.EntityRenamer;
import edu.stanford.protege.webprotege.index.ProjectSignatureIndex;
import edu.stanford.protege.webprotege.owlapi.RenameMap;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLEntity;
import javax.annotation.Nonnull;
import java.util.Collection;
import java.util.HashMap;
import static com.google.common.base.Preconditions.checkNotNull;
/**
* Author: Matthew Horridge
* Stanford University
* Bio-Medical Informatics Research Group
* Date: 11/09/2013
*/
public class FindAndReplaceIRIPrefixChangeGenerator implements ChangeListGenerator> {
@Nonnull
private final String fromPrefix;
@Nonnull
private final String toPrefix;
@Nonnull
private final ProjectSignatureIndex projectSignatureIndex;
@Nonnull
private final EntityRenamer entityRenamer;
@Nonnull
private final ChangeRequestId changeRequestId;
public FindAndReplaceIRIPrefixChangeGenerator(@Nonnull ChangeRequestId changeRequestId,
@Nonnull String fromPrefix,
@Nonnull String toPrefix,
@Nonnull ProjectSignatureIndex projectSignatureIndex,
@Nonnull EntityRenamer entityRenamer) {
this.changeRequestId = changeRequestId;
this.fromPrefix = checkNotNull(fromPrefix);
this.toPrefix = checkNotNull(toPrefix);
this.projectSignatureIndex = checkNotNull(projectSignatureIndex);
this.entityRenamer = checkNotNull(entityRenamer);
}
@Override
public ChangeRequestId getChangeRequestId() {
return changeRequestId;
}
@Override
public OntologyChangeList> generateChanges(ChangeGenerationContext context) {
var builder = OntologyChangeList.>builder();
var renameMap = new HashMap();
projectSignatureIndex.getSignature()
.filter(entity -> !entity.isBuiltIn())
.filter(this::beginsWithFromPrefix)
.forEach(entity -> {
var iri = entity.getIRI();
var toIri = IRI.create(toPrefix + iri.subSequence(fromPrefix.length(), iri.length()));
renameMap.put(entity, toIri);
});
var changeList = entityRenamer.generateChanges(renameMap);
builder.addAll(changeList);
return builder.build(renameMap.keySet());
}
private boolean beginsWithFromPrefix(OWLEntity entity) {
return entity.getIRI().toString().startsWith(fromPrefix);
}
@Override
public Collection getRenamedResult(Collection result, RenameMap renameMap) {
return result;
}
@Nonnull
@Override
public String getMessage(ChangeApplicationResult> result) {
return String.format("Replaced IRI prefix <%s> with <%s>", fromPrefix, toPrefix);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy