/** * Class to build inputs for the appmean interface * Maintains input history for calculating diffs between * pair sets */ import java.util.*; import edu.neu.ccs.satsolver.*; public class InputGen { Set oldPairs; PolynomialI oldPoly; /** Make an initial appmean input with current Pairs */ public OutputI initial(Set pairs) { oldPairs = pairs; OutputI result = SATSolverUtil.calculateBias(new InputInitial(pairs)); oldPoly = result.getPolynomial(); return result; } /** Make an update appmean input with current pairs and prev pairs */ public OutputI update(Set pairs) { // calculate diffs HashSet added = new HashSet(pairs); added.removeAll(oldPairs); HashSet removed = new HashSet(oldPairs); removed.removeAll(pairs); OutputI result = SATSolverUtil.updateBias(new InputUpdate(added, removed, oldPoly)); oldPoly = result.getPolynomial(); oldPairs.removeAll(removed); oldPairs.addAll(added); return result; } }