public void flush() throws IOException { lock.lock(); for (Map.Entry<BoolArray, FreqMap.Count> entry : labelMap.map.entrySet()) writer.write(entry.getKey().getAsBigInt().toString(32) + " " + entry.getValue() + "\n"); for (int i = 0; i < longLabelMap.keys.length; i++) if (longLabelMap.allocated[i]) writer.write(Long.toString(longLabelMap.keys[i], 32) + " " + longLabelMap.values[i] + "\n"); if (isVerbose()) System.out.printf("Flushed LabelMap to disk. Total %,d subgraphs.\n", size()); labelMap.clear(); longLabelMap.clear(); writer.flush(); lock.unlock(); }
public void add(Multiset<BoolArray> multiset) { lock.lock(); for (HashMultiset.Entry<BoolArray> entry : multiset.entrySet()) { BoolArray label = new SubGraphStructure(entry.getElement().getArray()).getOrderedForm().getAdjacencyArray(); labelMap.add(label, entry.getCount()); } if (isVerbose()) { System.out.printf( "Added %,d new signatures. LabelMap size:%,d\n", multiset.elementSet().size(), size()); } if (size() > capacity) try { flush(); } catch (IOException exp) { exp.printStackTrace(); System.exit(-1); } lock.unlock(); }
public int size() { return labelMap.size() + longLabelMap.size(); }