package senscript;
import device.SensorNode;
import wisen_simulation.SimLog;
//H
public class Command_ENDFOR extends Command {
protected boolean trueCondition = true ;
protected int index ;
public Command_ENDFOR(SensorNode sensor) {
this.sensor = sensor ;
}
@Override
public double execute() {
SimLog.add("S" + sensor.getId() + " END FOR.");
SenScript script = sensor.getScript();
String n = getCurrentFor().getRight();
String variable = getCurrentFor().getLeft();
Command_FOR commandFor = this.getCurrentFor();
String v1 = sensor.getScript().getVariableValue(variable);
String v2 = sensor.getScript().getVariableValue(""+commandFor.getStep());
double z = 0;
z = Double.valueOf(v1) + Double.valueOf(v2);
sensor.getScript().addVariable(variable.substring(1, variable.length()), ""+z);
//Command_PLUS cmd = new Command_PLUS(this.sensor, variable.substring(1, variable.length()), variable, ""+commandFor.getStep());
//cmd.execute();
SenScriptCondition condition = null;
if(commandFor.getStep()>=0)
condition = new SenScriptCondition_LESS(sensor, variable, n);
else
condition = new SenScriptCondition_GREATER(sensor, variable, n);
trueCondition = condition.evaluate();
if (trueCondition) {
script.setIndex(commandFor.getIndex()-1);
}
else {
commandFor.init();
}
return 0 ;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public boolean isTrueCondition() {
return trueCondition;
}
@Override
public String getArduinoForm() {
return "}";
}
@Override
public String toString() {
return "ENDFOR";
}
}