/******************************************************************************* * 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.output.csv; import uk.ac.manchester.cs.diff.axiom.changeset.AxiomChangeSet; import uk.ac.manchester.cs.diff.axiom.changeset.CategorisedChangeSet; import uk.ac.manchester.cs.diff.axiom.changeset.LogicalChangeSet; import uk.ac.manchester.cs.diff.axiom.changeset.StructuralChangeSet; /** * @author Rafael S. Goncalves <br> * Information Management Group (IMG) <br> * School of Computer Science <br> * University of Manchester <br> */ public class CSVAxiomDiffReport { private String header, row; /** * Constructor */ public CSVAxiomDiffReport() { header = "\n"; row = ""; } /** * Get a CSV-formatted change report * @param changeSet Change set * @return Change report as a CSV-formatted string */ public String getReport(AxiomChangeSet changeSet) { String report = null; if(changeSet instanceof StructuralChangeSet) report = getStructuralChangeSetReport((StructuralChangeSet)changeSet); else if(changeSet instanceof LogicalChangeSet) { LogicalChangeSet logicalChangeSet = (LogicalChangeSet)changeSet; getStructuralChangeSetReport(logicalChangeSet.getStructuralChangeSet()); report = getLogicalChangeSetReport(logicalChangeSet); } else if(changeSet instanceof CategorisedChangeSet) { CategorisedChangeSet categorisedChangeSet = (CategorisedChangeSet)changeSet; getStructuralChangeSetReport(categorisedChangeSet.getStructuralChangeSet()); getLogicalChangeSetReport(categorisedChangeSet.getLogicalChangeSet()); report = getCategorisedChangeSetReport(categorisedChangeSet); } return report; } /** * Get a CSV report of a structural change set * @param stChangeSet Structural change set * @return CSV structural change set report */ private String getStructuralChangeSetReport(StructuralChangeSet stChangeSet) { header += "Ontology 1,Ontology 2,Structurally Equivalent,Structural Additions,Structural Removals,Shared Axioms,Structural Diff Time"; row += stChangeSet.getOntology1FileName() + ","; row += stChangeSet.getOntology2FileName() + ","; row += (stChangeSet.isEmpty() ? "true" : "false") + ","; row += stChangeSet.getAddedAxioms().size() + ","; row += stChangeSet.getRemovedAxioms().size() + ","; row += stChangeSet.getShared().size() + ","; row += stChangeSet.getOperationTime(); return header + "\n" + row; } /** * Get a CSV report of a logical change set * @param logChangeSet Logical change set * @return CSV logical change set report */ private String getLogicalChangeSetReport(LogicalChangeSet logChangeSet) { header += ",Effectual Additions,Ineffectual Additions,Effectual Removals,Ineffectual Removals,Logical Diff Time"; row += "," + logChangeSet.getEffectualAdditionAxioms().size(); row += "," + logChangeSet.getIneffectualAdditionAxioms().size(); row += "," + logChangeSet.getEffectualRemovalAxioms().size(); row += "," + logChangeSet.getIneffectualRemovalAxioms().size(); row += "," + logChangeSet.getOperationTime(); return header + "\n" + row; } /** * Get a CSV report of a categorised change set * @param catChangeSet Categorised change set * @return CSV categorised change set report */ private String getCategorisedChangeSetReport(CategorisedChangeSet catChangeSet) { header += ",Strengthening,Strengthening NT,Extended Definition,Extended Definition NT,Pure Addition,Pure Addition NT,New Description,EAC Time," + "Added Rewrite,Added Standing Redundancy,Added Prospective Redundancy,Added Reshuffle,New,IAC Time,Just Find Time," + "Lac Just Time,Weakening,Weakening RT,Reduced Definition,Reduced Definition RT,Pure Removal,Pure Removal RT,Retired Description,ERC Time," + "Removed Rewrite,Removed Standing Redundancy,Removed Prospective Redundancy,Removed Reshuffle,New,IRC Time,Just Find Time," + "Lac Just Time,Total Time"; // Effectual additions row += "," + catChangeSet.getStrengthenings().size(); row += "," + catChangeSet.getStrengtheningsWithNewTerms().size(); row += "," + catChangeSet.getAddedModifiedDefinitions().size(); row += "," + catChangeSet.getAddedModifiedDefinitionsWithNewTerms().size(); row += "," + catChangeSet.getPureAdditions().size(); row += "," + catChangeSet.getPureAdditionsWithNewTerms().size(); row += "," + catChangeSet.getNewDescriptions().size(); row += "," + catChangeSet.getEffectualAdditionCategorisationTime(); // Ineffectual additions row += "," + catChangeSet.getAddedRewrites().size(); row += "," + catChangeSet.getAddedRedundancies().size(); row += "," + catChangeSet.getAddedProspectiveRedundancies().size(); row += "," + catChangeSet.getAddedReshuffleRedundancies().size(); row += "," + catChangeSet.getAddedProspectiveNewRedundancies().size(); // row += "," + catChangeSet.getAddedNovelRedundancies().size(); // row += "," + catChangeSet.getAddedPseudoNovelRedundancies().size(); row += "," + catChangeSet.getIneffectualAdditionCategorisationTime(); row += "," + catChangeSet.getIneffectualAdditionJustificationFindingTime(); row += "," + catChangeSet.getIneffectualAdditionLaconicJustificationFindingTime(); // Effectual removals row += "," + catChangeSet.getWeakenings().size(); row += "," + catChangeSet.getWeakeningsWithRetiredTerms().size(); row += "," + catChangeSet.getRemovedModifiedDefinitions().size(); row += "," + catChangeSet.getRemovedModifiedDefinitionsWithRetiredTerms().size(); row += "," + catChangeSet.getPureRemovals().size(); row += "," + catChangeSet.getPureRemovalsWithRetiredTerms().size(); row += "," + catChangeSet.getRetiredDescriptions().size(); row += "," + catChangeSet.getEffectualRemovalCategorisationTime(); // Ineffectual removals row += "," + catChangeSet.getRemovedRewrites().size(); row += "," + catChangeSet.getRemovedRedundancies().size(); row += "," + catChangeSet.getRemovedProspectiveRedundancies().size(); row += "," + catChangeSet.getRemovedReshuffleRedundancies().size(); row += "," + catChangeSet.getRemovedProspectiveNewRedundancies().size(); // row += "," + catChangeSet.getRemovedNovelRedundancies().size(); // row += "," + catChangeSet.getRemovedPseudoNovelRedundancies().size(); row += "," + catChangeSet.getIneffectualRemovalCategorisationTime(); row += "," + catChangeSet.getIneffectualRemovalJustificationFindingTime(); row += "," + catChangeSet.getIneffectualRemovalLaconicJustificationFindingTime(); row += "," + catChangeSet.getOperationTime(); return header + "\n" + row; } }