// Path: src/main/java/uk/ac/manchester/cs/diff/axiom/change/StructuralAddition.java
// public class StructuralAddition extends StructuralChange {
// 	/**
// 	 * Constructor
// 	 * @param axiom	Added axiom
// 	 */
// 	public StructuralAddition(OWLAxiom axiom) {
// 		super(axiom);
// 	}
// }
// 
// Path: src/main/java/uk/ac/manchester/cs/diff/axiom/change/StructuralRemoval.java
// public class StructuralRemoval extends StructuralChange {
// 	/**
// 	 * Constructor
// 	 * @param axiom	Removed axiom
// 	 */
// 	public StructuralRemoval(OWLAxiom axiom) {
// 		super(axiom); 
// 	}
// }


import java.util.HashSet;
import java.util.Set;
import org.semanticweb.owlapi.model.OWLAxiom;
import uk.ac.manchester.cs.diff.axiom.change.StructuralAddition;
import uk.ac.manchester.cs.diff.axiom.change.StructuralRemoval;
/*******************************************************************************
 * 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 StructuralChangeSet implements AxiomChangeSet {
	private Set<OWLAxiom> additions, removals, shared;
	private String ont1name, ont2name;
	private double diffTime;
	
	/**
	 * Constructor
	 * @param additions	Set of added axioms
	 * @param removals	Set of removed axioms
	 * @param shared	Set of shared axioms
	 */
	public StructuralChangeSet(Set<OWLAxiom> additions, Set<OWLAxiom> removals, Set<OWLAxiom> shared) {
		this.additions = additions;
		this.removals = removals;
		this.shared = shared;
	}
	
	
	/**
	 * Set file name of specified ontology (1 or 2)
	 * @param ontNr	Ontology number
	 * @param name	Ontology file name
	 * @deprecated
	 */
	public void setOntologyName(int ontNr, String name) {
		if(ontNr == 1) ont1name = name;
		else if(ontNr == 2) ont2name = name;
	}
	
	
	/**
	 * 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 file name of ontology 1
	 * @return File name of ontology 1
	 */
	public String getOntology1FileName() {
		return ont1name;
	}
	
	
	/**
	 * Get file name of ontology 2
	 * @return File name of ontology 2
	 */
	public String getOntology2FileName() {
		return ont2name;
	}
	
	
	/**
	 * Get the set of structural additions
	 * @return Set of structural additions
	 */
// Path: src/main/java/uk/ac/manchester/cs/diff/axiom/change/StructuralAddition.java
// public class StructuralAddition extends StructuralChange {
// 	/**
// 	 * Constructor
// 	 * @param axiom	Added axiom
// 	 */
// 	public StructuralAddition(OWLAxiom axiom) {
// 		super(axiom);
// 	}
// }
// 
// Path: src/main/java/uk/ac/manchester/cs/diff/axiom/change/StructuralRemoval.java
// public class StructuralRemoval extends StructuralChange {
// 	/**
// 	 * Constructor
// 	 * @param axiom	Removed axiom
// 	 */
// 	public StructuralRemoval(OWLAxiom axiom) {
// 		super(axiom); 
// 	}
// }


// Path: src/main/java/uk/ac/manchester/cs/diff/axiom/changeset/StructuralChangeSet.java
import java.util.HashSet;
import java.util.Set;
import org.semanticweb.owlapi.model.OWLAxiom;
import uk.ac.manchester.cs.diff.axiom.change.StructuralAddition;
import uk.ac.manchester.cs.diff.axiom.change.StructuralRemoval;

/*******************************************************************************
 * 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 StructuralChangeSet implements AxiomChangeSet {
	private Set<OWLAxiom> additions, removals, shared;
	private String ont1name, ont2name;
	private double diffTime;
	
	/**
	 * Constructor
	 * @param additions	Set of added axioms
	 * @param removals	Set of removed axioms
	 * @param shared	Set of shared axioms
	 */
	public StructuralChangeSet(Set<OWLAxiom> additions, Set<OWLAxiom> removals, Set<OWLAxiom> shared) {
		this.additions = additions;
		this.removals = removals;
		this.shared = shared;
	}
	
	
	/**
	 * Set file name of specified ontology (1 or 2)
	 * @param ontNr	Ontology number
	 * @param name	Ontology file name
	 * @deprecated
	 */
	public void setOntologyName(int ontNr, String name) {
		if(ontNr == 1) ont1name = name;
		else if(ontNr == 2) ont2name = name;
	}
	
	
	/**
	 * 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 file name of ontology 1
	 * @return File name of ontology 1
	 */
	public String getOntology1FileName() {
		return ont1name;
	}
	
	
	/**
	 * Get file name of ontology 2
	 * @return File name of ontology 2
	 */
	public String getOntology2FileName() {
		return ont2name;
	}
	
	
	/**
	 * Get the set of structural additions
	 * @return Set of structural additions
	 */
	public Set<StructuralAddition> getAdditions() {