Пример #1
0
 /**
  * Posts a constraints in the problem. If it has ever been posted (but deactivated), it is only
  * reactivated and repropagated.
  *
  * @param constraint The constraint to post.
  */
 public void post(SConstraint constraint) {
   if (constraint instanceof PalmSConstraint) {
     PalmSConstraint pconstraint = (PalmSConstraint) constraint;
     PalmConstraintPlugin pi = (PalmConstraintPlugin) pconstraint.getPlugIn();
     if (!(pi.isEverConnected())) {
       int idx;
       constraints.staticAdd((Propagator) constraint);
       idx = this.constraints.size() - 1;
       pi.setConstraintIdx(idx);
       pconstraint.addListener(false);
       ConstraintEvent event = (ConstraintEvent) pconstraint.getEvent();
       propagationEngine.registerEvent(event);
       propagationEngine.postConstAwake(pconstraint, true);
     } else {
       logger.fine("The constraint " + constraint + " is reactivated.");
       this.propagationEngine.postConstAwake(pconstraint, true);
       pconstraint.setActive();
     }
     if (pi.isDepending()) pi.setDependance();
   } else {
     throw new Error("Impossible to post non-Palm constraints to a Palm problem");
   }
 }