public TopicMapIF transformRequest(String transformId, InputStream xmlstream, LocatorIF base) throws Exception { InputStream xsltstream = StreamUtils.getInputStream("classpath:" + transformId + ".xsl"); if (xsltstream == null) throw new ServletException("Could not find style sheet '" + transformId + ".xsl'"); // set up source and target streams // Source xmlSource = new StreamSource(xmlstream); Source xmlSource = new StreamSource(xmlstream); Source xsltSource = new StreamSource(xsltstream); // the factory pattern supports different XSLT processors TransformerFactory transFact = TransformerFactory.newInstance(); Transformer trans = transFact.newTransformer(xsltSource); CharArrayWriter cw = new CharArrayWriter(); trans.transform(xmlSource, new StreamResult(cw)); CharArrayReader cr = new CharArrayReader(cw.toCharArray()); TopicMapStoreIF store = new InMemoryTopicMapStore(); TopicMapIF topicmap = store.getTopicMap(); store.setBaseAddress(base); XTMTopicMapReader xr = new XTMTopicMapReader(cr, base); xr.setValidation(false); xr.importInto(topicmap); return topicmap; }
public void loadQuery(TopicMapIF topicmap, String query) throws IOException { // assemble get-tolog request query = URLEncoder.encode(query); TopicMapIF tmptm = new InMemoryTopicMapStore().getTopicMap(); tmptm.getStore().setBaseAddress(topicmap.getStore().getBaseAddress()); String params = "syntax=application/x-xtm&tolog=" + query; if (tmid != null) params = "topicmap=" + tmid + "&" + params; params += "&compress=true"; // send request loadXTM("get-tolog", params, true, tmptm); // collect newly loaded topics Collection<TopicIF> loaded = new ArrayList<TopicIF>(); Iterator<TopicIF> it = tmptm.getTopics().iterator(); while (it.hasNext()) { TopicIF topic = it.next(); if (!(topic.getTypes().isEmpty() && topic.getTopicNames().isEmpty() && topic.getOccurrences().isEmpty() && topic.getRoles().isEmpty())) loaded.add(topic); } // mark as loaded and transfer transferLoadedTopics(loaded, topicmap); }
public void loadQuery(TopicMapIF topicmap, String query) throws IOException { // assemble get-tolog request query = URLEncoder.encode(query); TopicMapIF tmptm = new InMemoryTopicMapStore().getTopicMap(); tmptm.getStore().setBaseAddress(topicmap.getStore().getBaseAddress()); String params = "syntax=application/x-xtm&tolog=" + query; if (tmid != null) params = "topicmap=" + tmid + "&" + params; params += "&compress=true"; // send request loadXTM("get-tolog", params, true, tmptm); // collect newly loaded topics Collection<TopicIF> loaded = new ArrayList<TopicIF>(); Iterator<TopicIF> it = tmptm.getTopics().iterator(); while (it.hasNext()) { TopicIF topic = it.next(); if (!(topic.getTypes().isEmpty() && topic.getTopicNames().isEmpty() && topic.getOccurrences().isEmpty() && topic.getRoles().isEmpty())) loaded.add(topic); } // mark as loaded and transfer transferLoadedTopics(loaded, topicmap); }
sourceTopicMap.getStore().setBaseAddress(targetTopicMap.getStore().getBaseAddress());
sourceTopicMap.getStore().setBaseAddress(targetTopicMap.getStore().getBaseAddress());
public Collection<TopicIF> getTopics(Collection<LocatorIF> indicators, Collection<LocatorIF> sources, Collection<LocatorIF> subjects) { if (indicators.isEmpty() && sources.isEmpty() && subjects.isEmpty()) return Collections.emptySet(); // lookup or create target topic TopicMapIF targetTopicMap = storefactory.createStore().getTopicMap(); TopicIF targetTopic = createTopic(targetTopicMap, indicators, sources, subjects); // make sure topic knows it's being loaded setLoaded(targetTopic); TopicMapIF sourceTopicMap = new InMemoryTopicMapStore().getTopicMap(); sourceTopicMap.getStore().setBaseAddress(targetTopicMap.getStore().getBaseAddress()); // send get-topic request try { String params = encodeIdentityParameters(indicators, sources, subjects); if (tmid != null) params = "topicmap=" + tmid + "&" + params; loadXTM("get-topic", params, false, sourceTopicMap); } catch (IOException e) { throw new OntopiaRuntimeException(e); } TopicIF sourceTopic = findTopic(sourceTopicMap, indicators, sources, subjects); TopicMapSynchronizer.update(targetTopicMap, sourceTopic); targetTopic = findTopic(targetTopicMap, indicators, sources, subjects); return (targetTopic == null ? null : Collections.singleton(targetTopic)); }
sourceTopicMap.getStore().setBaseAddress(targetTopicMap.getStore().getBaseAddress());
@Override public TopicMapImpl createTopicMap(Locator loc) throws TopicMapExistsException { TopicMapImpl tm = getTopicMap(loc); if (tm != null) { tm.close(); throw new TopicMapExistsException("Topic map with base locator " + loc + " already exists."); } TopicMapStoreIF store = storeFactory.createStore(); store.setBaseAddress(((LocatorImpl) loc).getWrapped()); store.commit(); // refresh the source source.refresh(); tm = new TopicMapImpl(this, store); return tm; }