package edu.stanford.peer.rbtm.engine; import java.util.*; import edu.stanford.peer.rbtm.credential.*; /** * A map which keeps track of how many partial solutions reach a proof node, * using a decrementing counter, which is initialized to k for each * intersection. */ public class PartialSolutionMap { /** table of decrementing counters, one per intersection */ HashMap counters = new HashMap(); /** get the count of outstanding partial solutions */ public int getPartialSolutionCount(Intersection inter) { return ((Integer)counters.get(inter)).intValue(); } /** * decrement the counter by 1 for the specified intersect, creating a * new counter, if necessary */ public boolean addPartialSolution(Intersection inter,EntityExpression expr) { int partialSolutionCount = -1; try { partialSolutionCount = getPartialSolutionCount(inter); } catch(NullPointerException nullEx) { partialSolutionCount = inter.getPartsCount(); } catch(Exception ex) { ex.printStackTrace(); } counters.put(inter, new Integer(--partialSolutionCount)); return (partialSolutionCount == 0)? true: false; } }