public LeadsIntermediateIterator(String key, String prefix, InfinispanManager imanager, int i) { log = LoggerFactory.getLogger(LeadsIntermediateIterator.class); this.imanager = imanager; // initialize cache intermediateDataCache = (Cache) imanager.getPersisentCache(prefix + ".data"); indexSiteCache = (Cache) imanager.getPersisentCache(prefix + ".indexed"); baseIntermKey = new ComplexIntermediateKey(); baseIntermKey.setCounter(currentCounter); baseIntermKey.setKey(key); // read all the IndexComplexIntermediateKeys with attribute == keys this.list = new ArrayList<>(); try { CloseableIterable<Map.Entry<String, Object>> myIterable = ((Cache) indexSiteCache) .getAdvancedCache() .filterEntries(new IndexedComplexIntermKeyFilter(key)); for (Map.Entry<String, Object> entry : myIterable) { // System.err.println("ADDING TO LIST key: " + entry.getKey() + " value " + // entry.getValue().toString()); if (entry.getValue() instanceof IndexedComplexIntermediateKey) { ComplexIntermediateKey c = new ComplexIntermediateKey((IndexedComplexIntermediateKey) entry.getValue()); list.add((IndexedComplexIntermediateKey) entry.getValue()); } else { System.err.println("\n\nGET [B once again"); } } // check if the number of iterations is correct //this constructor is for debugging purposes if (i != list.size()) { System.err.println( "iterator size " + key + " " + list.size() + " correct number: " + i + " size of cache with IndexedComplexIntermediateKey " + indexSiteCache.size()); } } catch (Exception e) { System.err.println("Exception on LeadsIntermediateIterator " + e.getClass().toString()); System.err.println("Message: " + e.getMessage()); log.error("Exception on LeadsIntermediateIterator " + e.getClass().toString()); log.error("Message: " + e.getMessage()); } chunkIterator = list.iterator(); if (chunkIterator.hasNext()) { currentChunk = chunkIterator.next(); baseIntermKey = new ComplexIntermediateKey(currentChunk); } else { currentChunk = null; } }
@Override public String toString() { String result = "LeadsIntermediateIterator{" + "intermediateDataCache=" + intermediateDataCache.getName() + ", indexSiteCache=" + indexSiteCache.getName() + ", imanager=" + imanager.getCacheManager().getAddress().toString(); // System.err.println(result); String resultb = ", baseIntermKey=" + baseIntermKey.toString(); result += resultb; // System.err.println(resultb); String resultc = ", list=" + list.size() + ", currentCounter=" + currentCounter.toString() + '}'; // PrintUtilities.printList(list); result += resultc; // System.err.println(resultc); result += ", currentChunk=" + currentChunk; // System.err.println(result); return result; }
private Object nextInternal() { // if(!hasNext()){ // throw new NoSuchElementException("LeadsIntermediateIterator the iterator does not have // next"); // } // System.err.println("in next "); // log.error(baseIntermKey.toString()); if (baseIntermKey == null || chunkIterator == null) { throw new NoSuchElementException("LeadIntermediateIterator no more Elements"); // return null; } V returnValue = (V) intermediateDataCache.get(new ComplexIntermediateKey(baseIntermKey)); if (returnValue == null) { if (chunkIterator.hasNext()) { currentChunk = chunkIterator.next(); baseIntermKey = new ComplexIntermediateKey(currentChunk); return nextInternal(); } else { baseIntermKey = null; currentChunk = null; throw new NoSuchElementException("LeadIntermediateIterator no more Elements"); } // System.err.println("\n\n\nERROR NULL GET FROM intermediate data cache " + // baseIntermKey.toString() + "\n cache size = " + intermediateDataCache.size()); // throw new NoSuchElementException("LeadsIntermediateIterator read from cache returned // NULL"); } else { baseIntermKey.next(); } // baseIntermKey = baseIntermKey.next(); // Object o = intermediateDataCache.get(baseIntermKey); // if(o == null){ // // if(!intermediateDataCache.containsKey(new ComplexIntermediateKey(baseIntermKey))){ // if(chunkIterator.hasNext()) { // currentChunk = chunkIterator.next(); // baseIntermKey = new ComplexIntermediateKey(currentChunk); // } // else{ // baseIntermKey = null; // currentChunk = null; // } // // // } if (returnValue != null) { // System.err.println("out next "); return returnValue; } else { // if(chunkIterator.hasNext()) { // System.err.println("TbaseInterm Key is not contained and chunkIterator has NeXt"); // System.err.println(this.toString()); // } // currentChunk = null; throw new NoSuchElementException("LeadsIntermediateIterator return Value NULL at the end"); } }
public LeadsIntermediateIterator(String key, String prefix, InfinispanManager imanager) { log = LoggerFactory.getLogger(LeadsIntermediateIterator.class); this.imanager = imanager; intermediateDataCache = (Cache) imanager.getPersisentCache(prefix + ".data"); // intermediateDataCache = // intermediateDataCache.getAdvancedCache().withFlags(Flag.CACHE_MODE_LOCAL); // createIndexCache for getting all the nodes that contain values with the same key! in a mc indexSiteCache = (Cache) imanager.getPersisentCache(prefix + ".indexed"); // indexSiteCache = indexSiteCache.getAdvancedCache().withFlags(Flag.CACHE_MODE_LOCAL); baseIntermKey = new ComplexIntermediateKey(); baseIntermKey.setCounter(currentCounter); baseIntermKey.setKey(key); // log.error("INDEXED SITE = " + indexSiteCache.size()); // for(Object keys : indexSiteCache.keySet()){ // log.error("key: " + keys.toString() + indexSiteCache.get(keys).toString()); // } // create query // SearchManager sm = org.infinispan.query.Search.getSearchManager((Cache<?, ?>) // indexSiteCache); // QueryFactory qf = org.infinispan.query.Search.getQueryFactory((Cache<?, ?>) // indexSiteCache); //Search.getQueryFactory((RemoteCache) indexSiteCache); // org.infinispan.query.dsl.Query lucenequery = qf.from(IndexedComplexIntermediateKey.class) // .having("key").eq(key) // .toBuilder().build(); // ListIterator<Object> anIterator = lucenequery.list().listIterator(); ProfileEvent event = new ProfileEvent("ReadIndexedKeys", log); this.list = new ArrayList<>(); try { CloseableIterable<Map.Entry<Object, Object>> myIterable = ((Cache) indexSiteCache) .getAdvancedCache() .filterEntries(new IndexedComplexIntermKeyFilter(key)); for (Map.Entry<Object, Object> entry : myIterable) { // System.err.println("ADDING TO LIST key: " + entry.getKey() + " value " + // entry.getValue().toString()); // if(entry.getKey() instanceof IndexedComplexIntermediateKey) { // ComplexIntermediateKey c = new // ComplexIntermediateKey((IndexedComplexIntermediateKey) entry.getKey()); // if (intermediateDataCache.containsKey(c)){ list.add((IndexedComplexIntermediateKey) entry.getValue()); // } } // } } catch (Exception e) { System.err.println("Exception on LeadsIntermediateIterator " + e.getClass().toString()); System.err.println("Message: " + e.getMessage()); log.error("Exception on LeadsIntermediateIterator " + e.getClass().toString()); log.error("Message: " + e.getMessage()); } event.end(); chunkIterator = list.iterator(); if (chunkIterator.hasNext()) { currentChunk = chunkIterator.next(); baseIntermKey = new ComplexIntermediateKey(currentChunk); } else { currentChunk = null; } values = new LinkedList<>(); event.start("ReadAllValues"); while (true) { try { Object value = nextInternal(); if (value != null) { values.add(value); } } catch (Exception e) { if (e instanceof NoSuchElementException) { break; } } } event.end(); valuesIterator = values.iterator(); }