package dk.silverbullet.telemed.questionnaire.skema;
import dk.silverbullet.telemed.questionnaire.Questionnaire;
import dk.silverbullet.telemed.questionnaire.R;
import dk.silverbullet.telemed.questionnaire.element.TextViewElement;
import dk.silverbullet.telemed.questionnaire.element.TwoButtonElement;
import dk.silverbullet.telemed.questionnaire.expression.Variable;
import dk.silverbullet.telemed.questionnaire.node.DebugListPoolNode;
import dk.silverbullet.telemed.questionnaire.node.EndNode;
import dk.silverbullet.telemed.questionnaire.node.IONode;
import dk.silverbullet.telemed.questionnaire.node.IOSkemaMenuNode;
import dk.silverbullet.telemed.questionnaire.node.RunQuestionnaireNode;
import dk.silverbullet.telemed.questionnaire.node.UploadNode;
import dk.silverbullet.telemed.questionnaire.output.OutputSkema;
import dk.silverbullet.telemed.utils.Util;
public class RunSkema implements SkemaDef {
@Override
public Skema getSkema(Questionnaire questionnaire) {
// Variable
OutputSkema outputSkema = new OutputSkema();
Variable<String> skemaName = new Variable<String>("getSkema", String.class);
outputSkema.addVariable(skemaName);
// ////////////////////////////////////////////////////////////////////////////////
EndNode end = new EndNode(questionnaire, "END");
// ////////////////////////////////////////////////////////////////////////////////
UploadNode uploadNode = new UploadNode(questionnaire, "UPLOAD");
uploadNode.setNextNode(end);
uploadNode.setHideTopPanel(true);
// ////////////////////////////////////////////////////////////////////////////////
DebugListPoolNode debugNode = new DebugListPoolNode(questionnaire, "MAIN");
debugNode.setNextNode(uploadNode);
// ////////////////////////////////////////////////////////////////////////////////
IONode uploadValg = new IONode(questionnaire, "uploadValg");
TextViewElement twe = new TextViewElement(uploadValg);
twe.setText(Util.getString(R.string.run_skema_do_you_want_to_send_data, questionnaire));
uploadValg.addElement(twe);
TwoButtonElement tbe = new TwoButtonElement(uploadValg);
tbe.setLeftText(Util.getString(R.string.default_no, questionnaire));
tbe.setLeftNextNode(end);
tbe.setRightText(Util.getString(R.string.default_yes, questionnaire));
uploadValg.addElement(tbe);
@SuppressWarnings("unchecked")
Variable<Boolean> showUploadDebugNode = (Variable<Boolean>) questionnaire.getValuePool().get(
Util.VARIABLE_SHOW_UPLOAD_DEBUG);
if (showUploadDebugNode.getExpressionValue().getValue()) {
tbe.setRightNextNode(debugNode);
} else {
tbe.setRightNextNode(uploadNode);
}
// ////////////////////////////////////////////////////////////////////////////////
RunQuestionnaireNode run = new RunQuestionnaireNode(questionnaire, "RUN");
run.setSkemaName(skemaName);
run.setNextNode(uploadValg);
// ////////////////////////////////////////////////////////////////////////////////
IOSkemaMenuNode ioSkemaMenuNode = new IOSkemaMenuNode(questionnaire, "SKEMA-MENU");
ioSkemaMenuNode.setNextNode(run);
ioSkemaMenuNode.setSkemaName(skemaName);
Skema skema = new Skema();
skema.setEndNode(end.getNodeName());
skema.setName("RUN-SKEMA");
skema.setStartNode(ioSkemaMenuNode.getNodeName());
skema.setVersion("1.0");
skema.addNode(end);
skema.addNode(uploadNode);
skema.addNode(debugNode);
skema.addNode(run);
skema.addNode(ioSkemaMenuNode);
for (Variable<?> output : outputSkema.getOutput()) {
questionnaire.addVariable(output);
skema.addVariable(output);
}
return skema;
}
}