@Override public void handleChange(OWLModelManagerChangeEvent event) { // Get the active ontology OWLModelManager source = event.getSource(); OWLOntology activeOntology = source.getActiveOntology(); // Initialize the active OBDA model OBDAModel activeOBDAModel = null; // Perform a proper handling for each type of event final EventType eventType = event.getType(); switch (eventType) { case ABOUT_TO_CLASSIFY: log.debug("ABOUT TO CLASSIFY"); loadingData = true; break; case ENTITY_RENDERER_CHANGED: log.debug("RENDERER CHANGED"); break; case ONTOLOGY_CLASSIFIED: loadingData = false; break; case ACTIVE_ONTOLOGY_CHANGED: log.debug("ACTIVE ONTOLOGY CHANGED"); inititializing = true; // flag on // Setting up a new OBDA model and retrieve the object. setupNewOBDAModel(); activeOBDAModel = getActiveOBDAModel(); OWLModelManager mmgr = owlEditorKit.getOWLWorkspace().getOWLModelManager(); OWLOntology ontology = mmgr.getActiveOntology(); PrefixOWLOntologyFormat prefixManager = PrefixUtilities.getPrefixOWLOntologyFormat(ontology); String defaultPrefix = prefixManager.getDefaultPrefix(); if (defaultPrefix == null) { OWLOntologyID ontologyID = ontology.getOntologyID(); defaultPrefix = ontologyID.getOntologyIRI().toURI().toString(); } activeOBDAModel.getPrefixManager().addPrefix(PrefixManager.DEFAULT_PREFIX, defaultPrefix); ProtegeOWLReasonerInfo factory = owlEditorKit.getOWLModelManager().getOWLReasonerManager().getCurrentReasonerFactory(); if (factory instanceof ProtegeOBDAOWLReformulationPlatformFactory) { ProtegeOBDAOWLReformulationPlatformFactory questfactory = (ProtegeOBDAOWLReformulationPlatformFactory) factory; ProtegeReformulationPlatformPreferences reasonerPreference = (ProtegeReformulationPlatformPreferences) owlEditorKit.get(QuestPreferences.class.getName()); questfactory.setPreferences(reasonerPreference); questfactory.setOBDAModel(getActiveOBDAModel()); if (applyUserConstraints) questfactory.setImplicitDBConstraints(userConstraints); } fireActiveOBDAModelChange(); inititializing = false; // flag off break; case ENTITY_RENDERING_CHANGED: break; case ONTOLOGY_CREATED: log.debug("ONTOLOGY CREATED"); break; case ONTOLOGY_LOADED: case ONTOLOGY_RELOADED: log.debug("ONTOLOGY LOADED/RELOADED"); loadingData = true; // flag on try { // Get the active OBDA model activeOBDAModel = getActiveOBDAModel(); String owlDocumentIri = source.getOWLOntologyManager().getOntologyDocumentIRI(activeOntology).toString(); String obdaDocumentIri = owlDocumentIri.substring(0, owlDocumentIri.length() - 3) + OBDA_EXT; String queryDocumentIri = owlDocumentIri.substring(0, owlDocumentIri.length() - 3) + QUERY_EXT; String dbprefsDocumentIri = owlDocumentIri.substring(0, owlDocumentIri.length() - 3) + DBPREFS_EXT; File obdaFile = new File(URI.create(obdaDocumentIri)); File queryFile = new File(URI.create(queryDocumentIri)); File dbprefsFile = new File(URI.create(dbprefsDocumentIri)); IRI ontologyIRI = activeOntology.getOntologyID().getOntologyIRI(); activeOBDAModel .getPrefixManager() .addPrefix(PrefixManager.DEFAULT_PREFIX, ontologyIRI.toString()); if (obdaFile.exists()) { try { // Load the OBDA model ModelIOManager modelIO = new ModelIOManager(activeOBDAModel); modelIO.load(obdaFile); } catch (Exception ex) { activeOBDAModel.reset(); throw new Exception( "Exception occurred while loading OBDA document: " + obdaFile + "\n\n" + ex.getMessage()); } try { // Load the saved queries QueryIOManager queryIO = new QueryIOManager(queryController); queryIO.load(queryFile); } catch (Exception ex) { queryController.reset(); throw new Exception( "Exception occurred while loading Query document: " + queryFile + "\n\n" + ex.getMessage()); } applyUserConstraints = false; if (dbprefsFile.exists()) { try { // Load user-supplied constraints userConstraints = new ImplicitDBConstraints(dbprefsFile); applyUserConstraints = true; } catch (Exception ex) { throw new Exception( "Exception occurred while loading database preference file : " + dbprefsFile + "\n\n" + ex.getMessage()); } } } else { log.warn( "OBDA model couldn't be loaded because no .obda file exists in the same location as the .owl file"); } OBDAModelValidator refactorer = new OBDAModelValidator(activeOBDAModel, activeOntology); refactorer.run(); // adding type information to the mapping predicates. } catch (Exception e) { OBDAException ex = new OBDAException( "An exception has occurred when loading input file.\nMessage: " + e.getMessage()); DialogUtils.showQuickErrorDialog(null, ex, "Open file error"); log.error(e.getMessage()); } finally { loadingData = false; // flag off } break; case ONTOLOGY_SAVED: log.debug("ACTIVE ONTOLOGY SAVED"); try { // Get the active OBDA model activeOBDAModel = getActiveOBDAModel(); String owlDocumentIri = source.getOWLOntologyManager().getOntologyDocumentIRI(activeOntology).toString(); String obdaDocumentIri = owlDocumentIri.substring(0, owlDocumentIri.length() - 3) + OBDA_EXT; String queryDocumentIri = owlDocumentIri.substring(0, owlDocumentIri.length() - 3) + QUERY_EXT; // Save the OBDA model File obdaFile = new File(URI.create(obdaDocumentIri)); ModelIOManager ModelIO = new ModelIOManager(activeOBDAModel); ModelIO.save(obdaFile); // Save the queries File queryFile = new File(URI.create(queryDocumentIri)); QueryIOManager queryIO = new QueryIOManager(queryController); queryIO.save(queryFile); } catch (IOException e) { log.error(e.getMessage()); Exception newException = new Exception( "Error saving the OBDA file. Closing Protege now can result in losing changes in your data sources or mappings. Please resolve the issue that prevents saving in the current location, or do \"Save as..\" to save in an alternative location. \n\nThe error message was: \n" + e.getMessage()); DialogUtils.showQuickErrorDialog(null, newException, "Error saving OBDA file"); triggerOntologyChanged(); } break; case ONTOLOGY_VISIBILITY_CHANGED: log.debug("VISIBILITY CHANGED"); break; case REASONER_CHANGED: log.info("REASONER CHANGED"); // Get the active OBDA model activeOBDAModel = getActiveOBDAModel(); if ((!inititializing) && (obdamodels != null) && (owlEditorKit != null) && (getActiveOBDAModel() != null)) { ProtegeOWLReasonerInfo fac = owlEditorKit .getOWLModelManager() .getOWLReasonerManager() .getCurrentReasonerFactory(); if (fac instanceof ProtegeOBDAOWLReformulationPlatformFactory) { ProtegeOBDAOWLReformulationPlatformFactory questfactory = (ProtegeOBDAOWLReformulationPlatformFactory) fac; ProtegeReformulationPlatformPreferences reasonerPreference = (ProtegeReformulationPlatformPreferences) owlEditorKit.get(QuestPreferences.class.getName()); questfactory.setPreferences(reasonerPreference); questfactory.setOBDAModel(getActiveOBDAModel()); } break; } } }
private boolean isCacheMutatingEvent(OWLModelManagerChangeEvent event) { return event.isType(EventType.ACTIVE_ONTOLOGY_CHANGED) || event.isType(EventType.ENTITY_RENDERER_CHANGED) || event.isType(EventType.ENTITY_RENDERING_CHANGED); }