/*******************************************************************************
* This file is part of ecco.
*
* ecco is distributed under the terms of the GNU Lesser General Public License (LGPL), Version 3.0.
*
* Copyright 2011-2014, The University of Manchester
*
* ecco is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser
* General Public License as published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* ecco is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with ecco.
* If not, see http://www.gnu.org/licenses/.
******************************************************************************/
package uk.ac.manchester.cs.diff.axiom.changeset;
import java.util.HashSet;
import java.util.Set;
import org.semanticweb.owlapi.model.OWLAxiom;
import uk.ac.manchester.cs.diff.axiom.change.LogicalAddition;
import uk.ac.manchester.cs.diff.axiom.change.LogicalRemoval;
/**
* @author Rafael S. Goncalves <br>
* Information Management Group (IMG) <br>
* School of Computer Science <br>
* University of Manchester <br>
*/
public class LogicalChangeSet implements AxiomChangeSet {
private Set<OWLAxiom> effectualAdditions, ineffectualAdditions, effectualRemovals, ineffectualRemovals;
private StructuralChangeSet structuralChangeSet;
private double diffTime;
/**
* Constructor
* @param effectualAdditions Effectual additions
* @param ineffectualAdditions Ineffectual additions
* @param effectualRemovals Effectual removals
* @param ineffectualRemovals Ineffectual removals
* @param structuralChangeSet Structural change set
*/
public LogicalChangeSet(Set<OWLAxiom> effectualAdditions, Set<OWLAxiom> ineffectualAdditions,
Set<OWLAxiom> effectualRemovals, Set<OWLAxiom> ineffectualRemovals, StructuralChangeSet structuralChangeSet) {
this.effectualAdditions = effectualAdditions;
this.ineffectualAdditions = ineffectualAdditions;
this.effectualRemovals = effectualRemovals;
this.ineffectualRemovals = ineffectualRemovals;
this.structuralChangeSet = structuralChangeSet;
}
/**
* Get the structural change set between ontologies
* @return Structural change set
*/
public StructuralChangeSet getStructuralChangeSet() {
return structuralChangeSet;
}
/**
* Set diff time
* @param time Diff time
* @deprecated
*/
public void setDiffTime(double time) {
diffTime = time;
}
/**
* Get the CPU time (in seconds) spent in structural diff
* @return CPU time (in seconds) spent in structural diff
*/
public double getOperationTime() {
return diffTime;
}
/**
* Get the set of effectual and ineffectual additions
* @return Set of effectual and ineffectual additions
*/
public Set<LogicalAddition> getAdditions() {
Set<LogicalAddition> additionSet = new HashSet<LogicalAddition>();
for(OWLAxiom ax : effectualAdditions)
additionSet.add(new LogicalAddition(ax, true));
for(OWLAxiom ax : ineffectualAdditions)
additionSet.add(new LogicalAddition(ax, false));
return additionSet;
}
/**
* Get the set of effectual and ineffectual removals
* @return Set of effectual and ineffectual removals
*/
public Set<LogicalRemoval> getRemovals() {
Set<LogicalRemoval> removalSet = new HashSet<LogicalRemoval>();
for(OWLAxiom ax : effectualRemovals)
removalSet.add(new LogicalRemoval(ax, true));
for(OWLAxiom ax : ineffectualRemovals)
removalSet.add(new LogicalRemoval(ax, false));
return removalSet;
}
/**
* Get the set of effectual addition axioms
* @return Set of effectual addition axioms
*/
public Set<OWLAxiom> getEffectualAdditionAxioms() {
return effectualAdditions;
}
/**
* Get the set of effectual removal axioms
* @return Set of effectual removal axioms
*/
public Set<OWLAxiom> getEffectualRemovalAxioms() {
return effectualRemovals;
}
/**
* Get the set of ineffectual addition axioms
* @return Set of ineffectual addition axioms
*/
public Set<OWLAxiom> getIneffectualAdditionAxioms() {
return ineffectualAdditions;
}
/**
* Get the set of ineffectual removal axioms
* @return Set of ineffectual removal axioms
*/
public Set<OWLAxiom> getIneffectualRemovalAxioms() {
return ineffectualRemovals;
}
/**
* Check if change set contains no changes
* @return true if change set contains no changes, false otherwise
*/
public boolean isEmpty() {
if(effectualAdditions.isEmpty() && effectualRemovals.isEmpty()
&& ineffectualAdditions.isEmpty() && ineffectualAdditions.isEmpty())
return true;
else
return false;
}
}