Ejemplo n.º 1
0
 public void modelSensorValue(String value, long timeNow) {
   synchronized (ans) {
     boolean makeNew = false;
     if (currentAct == null) {
       makeNew = true;
     } else if (currentAct != null) {
       // If it has not changed, do nothing - otherwise:
       if (this.hasChanged(value)) {
         // change value
         AllenIntervalConstraint deadline =
             new AllenIntervalConstraint(
                 AllenIntervalConstraint.Type.Deadline, new Bounds(timeNow, timeNow));
         deadline.setFrom(currentAct.getVariable());
         deadline.setTo(currentAct.getVariable());
         ans.removeConstraint(currentMeetsFuture);
         boolean ret = ans.addConstraint(deadline);
         if (!ret) throw new NetworkMaintenanceError(deadline);
         // if (!ret) throw new
         // NetworkMaintenanceError(future.getTemporalVariable().getEST(),timeNow);
         makeNew = true;
       }
     }
     // First reading or value changed --> make new activity
     if (makeNew) {
       Activity act = this.createNewActivity(value);
       AllenIntervalConstraint rel =
           new AllenIntervalConstraint(
               AllenIntervalConstraint.Type.Release, new Bounds(timeNow, timeNow));
       rel.setFrom(act.getVariable());
       rel.setTo(act.getVariable());
       AllenIntervalConstraint meetsFuture =
           new AllenIntervalConstraint(AllenIntervalConstraint.Type.Meets);
       meetsFuture.setFrom(act.getVariable());
       meetsFuture.setTo(future);
       currentAct = act;
       currentMeetsFuture = meetsFuture;
       boolean ret = ans.addConstraints(new Constraint[] {rel, meetsFuture});
       // if (!ret) throw new NetworkMaintenanceError(rel,meetsFuture);
       if (!ret) throw new NetworkMaintenanceError(future.getTemporalVariable().getEST(), timeNow);
       logger.info("" + currentAct);
     }
   }
 }