@Override public void storeClosed(TopicMapStoreIF store) { // when store is closed, we need to deregister with source if (deref_on_close && source instanceof DefaultTopicMapSource) { // remove self from source ((DefaultTopicMapSource)source).removeReference(this); } // dereference store store.setReference(null); // dereference listeners ((AbstractTopicMapStore)store).setTopicListeners(null); }
protected TopicMapStoreIF createStore() { try { // create new empty store TopicMapStoreIF store = sfactory.createStore(); TopicMapIF merged = store.getTopicMap(); // merge in all referenced topic maps Iterator<String> iter = refkeys.iterator(); while (iter.hasNext()) { String refkey = iter.next(); TopicMapReferenceIF ref = repository.getReferenceByKey(refkey); TopicMapStoreIF s = ref.createStore(true); MergeUtils.mergeInto(merged, s.getTopicMap()); s.close(); } // register store store.setReference(this); return store; } catch (IOException e) { throw new OntopiaRuntimeException(e); } }
@Override public synchronized TopicMapStoreIF createStore(boolean readonly) throws IOException { if (!isOpen()) open(); if (reuse_store && store != null) return store; // load topic map store TopicMapStoreIF store = loadTopicMap(readonly).getStore(); // register store store.setReference(this); // register listeners ((AbstractTopicMapStore)store).setTopicListeners(getTopicListeners()); if (reuse_store) this.store = store; return store; }
@Override public synchronized TopicMapStoreIF createStore(boolean readonly) throws IOException { if (!isOpen()) open(); // create new store TopicMapStoreIF store; if (readonly) store = sfactory_ro.createStore(); else store = sfactory_rw.createStore(); // register store store.setReference(this); // register listeners ((AbstractTopicMapStore)store).setTopicListeners(getTopicListeners()); return store; }
@Override public synchronized void open() { // ignore if already open if (isOpen()) return; if (isDeleted()) throw new StoreDeletedException("Topic map has been deleted through this reference."); // make sure store is loaded if (reuse_store && store == null) { // load topic map store boolean readonly = false; // WARNING: store always read-write!!! TopicMapStoreIF store = null; try { store = loadTopicMap(readonly).getStore(); } catch (IOException e) { throw new OntopiaRuntimeException(e); } // register store store.setReference(this); // register listeners ((AbstractTopicMapStore)store).setTopicListeners(getTopicListeners()); this.store = store; } this.isopen = true; }