package org.sharegov.cirm; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.semanticweb.owlapi.model.OWLOntologyChange; import org.sharegov.cirm.utils.OntologyCommit; public class OntologyChangesRepo { private static OntologyChangesRepo instance; private Map<String, Map<Integer, OntologyCommit>> ontoChangesMap; /** * private to defeat multiple instantiation * */ private OntologyChangesRepo() { ontoChangesMap = new ConcurrentHashMap<String, Map<Integer, OntologyCommit>>(); } /** * Singleton instance getter. Synchronized to defeat multiple instantiation when instance == null * * @return the same unique instance of the class */ public synchronized static OntologyChangesRepo getInstance(){ if (instance == null){ instance = new OntologyChangesRepo (); } return instance; } /** * Getter for the changes map * * @return */ public Map<Integer, OntologyCommit> getAllRevisionChangesForOnto (String onto){ return ontoChangesMap.get(onto); } public OntologyCommit getOntoRevisionChanges(String onto, int revision) { if (ontoChangesMap.get(onto) == null){ return null; } else if (ontoChangesMap.get(onto).get(revision) == null){ return null; } else return ontoChangesMap.get(onto).get(revision); } public void setOntoRevisionChanges(String onto, int revision, String userName, String comment, List <OWLOntologyChange> changes, long timeStamp) { if (ontoChangesMap.get(onto) == null){ ontoChangesMap.put(onto, new ConcurrentHashMap<Integer, OntologyCommit>()); } ontoChangesMap.get(onto).put(revision, new OntologyCommit(userName, comment, changes, timeStamp)); } public void setOntoRevisionChanges(String onto, int revision, OntologyCommit commit) { if (ontoChangesMap.get(onto) == null){ ontoChangesMap.put(onto, new ConcurrentHashMap<Integer, OntologyCommit>()); } ontoChangesMap.get(onto).put(revision, commit); } public void deleteOntoRevisionChanges(String onto, int revision){ if (ontoChangesMap.get(onto) == null) return; ontoChangesMap.get(onto).remove(revision); } public void clearAll (){ ontoChangesMap.clear(); } }