Exemplo n.º 1
0
 /**
  * Reads events from <tt>eventStream</tt> into a linked list. The predicates associated with each
  * event are counted and any which occur at least <tt>cutoff</tt> times are added to the
  * <tt>predicatesInOut</tt> map along with a unique integer index.
  *
  * @param eventStream an <code>EventStream</code> value
  * @param eventStore a writer to which the events are written to for later processing.
  * @param predicatesInOut a <code>TObjectIntHashMap</code> value
  * @param cutoff an <code>int</code> value
  */
 private int computeEventCounts(
     EventStream eventStream, Writer eventStore, TObjectIntHashMap predicatesInOut, int cutoff)
     throws IOException {
   TObjectIntHashMap counter = new TObjectIntHashMap();
   int predicateIndex = 0;
   int eventCount = 0;
   while (eventStream.hasNext()) {
     Event ev = eventStream.nextEvent();
     eventCount++;
     eventStore.write(FileEventStream.toLine(ev));
     String[] ec = ev.getContext();
     for (int j = 0; j < ec.length; j++) {
       if (!predicatesInOut.containsKey(ec[j])) {
         if (counter.increment(ec[j])) {
         } else {
           counter.put(ec[j], 1);
         }
         if (counter.get(ec[j]) >= cutoff) {
           predicatesInOut.put(ec[j], predicateIndex++);
           counter.remove(ec[j]);
         }
       }
     }
   }
   predicatesInOut.trimToSize();
   eventStore.close();
   return eventCount;
 }