// Path: src/main/java/uk/ac/manchester/cs/diff/axiom/change/LogicalAddition.java
// public class LogicalAddition extends LogicalChange  {
// 	/**
// 	 * Constructor
// 	 * @param axiom	Axiom change
// 	 * @param isEffectual	true if change is logically effectual, false otherwise
// 	 */
// 	public LogicalAddition(OWLAxiom axiom, boolean isEffectual) {
// 		super(axiom, isEffectual);
// 	}
// }
// 
// Path: src/main/java/uk/ac/manchester/cs/diff/axiom/change/LogicalRemoval.java
// public class LogicalRemoval extends LogicalChange {
// 	/**
// 	 * Constructor
// 	 * @param axiom	Axiom change
// 	 * @param isEffectual	true if change is logically effectual, false otherwise
// 	 */
// 	public LogicalRemoval(OWLAxiom axiom, boolean isEffectual) {
// 		super(axiom, isEffectual);
// 	}
// }


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;
/*******************************************************************************
 * 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;




/**
 * @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
	 */
// Path: src/main/java/uk/ac/manchester/cs/diff/axiom/change/LogicalAddition.java
// public class LogicalAddition extends LogicalChange  {
// 	/**
// 	 * Constructor
// 	 * @param axiom	Axiom change
// 	 * @param isEffectual	true if change is logically effectual, false otherwise
// 	 */
// 	public LogicalAddition(OWLAxiom axiom, boolean isEffectual) {
// 		super(axiom, isEffectual);
// 	}
// }
// 
// Path: src/main/java/uk/ac/manchester/cs/diff/axiom/change/LogicalRemoval.java
// public class LogicalRemoval extends LogicalChange {
// 	/**
// 	 * Constructor
// 	 * @param axiom	Axiom change
// 	 * @param isEffectual	true if change is logically effectual, false otherwise
// 	 */
// 	public LogicalRemoval(OWLAxiom axiom, boolean isEffectual) {
// 		super(axiom, isEffectual);
// 	}
// }


// Path: src/main/java/uk/ac/manchester/cs/diff/axiom/changeset/LogicalChangeSet.java
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;

/*******************************************************************************
 * 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;




/**
 * @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() {