package dk.silverbullet.telemed.deleteme;
import dk.silverbullet.telemed.questionnaire.Questionnaire;
import dk.silverbullet.telemed.questionnaire.QuestionnaireFragment;
import dk.silverbullet.telemed.questionnaire.element.ButtonElement;
import dk.silverbullet.telemed.questionnaire.element.EditTextElement;
import dk.silverbullet.telemed.questionnaire.element.TextViewElement;
import dk.silverbullet.telemed.questionnaire.element.TwoButtonElement;
import dk.silverbullet.telemed.questionnaire.expression.AddExpression;
import dk.silverbullet.telemed.questionnaire.expression.Constant;
import dk.silverbullet.telemed.questionnaire.expression.Expression;
import dk.silverbullet.telemed.questionnaire.expression.LessThan;
import dk.silverbullet.telemed.questionnaire.expression.Variable;
import dk.silverbullet.telemed.questionnaire.expression.VariableLinkFailedException;
import dk.silverbullet.telemed.questionnaire.node.AssignmentNode;
import dk.silverbullet.telemed.questionnaire.node.DecisionNode;
import dk.silverbullet.telemed.questionnaire.node.EndNode;
import dk.silverbullet.telemed.questionnaire.node.IONode;
import dk.silverbullet.telemed.questionnaire.node.Node;
import dk.silverbullet.telemed.questionnaire.node.UnknownNodeException;
import dk.silverbullet.telemed.questionnaire.output.OutputSkema;
import dk.silverbullet.telemed.questionnaire.skema.Skema;
import dk.silverbullet.telemed.utils.Json;
import dk.silverbullet.telemed.utils.Util;
public class TestPiratos implements TestSkema {
public static final String TAG = Util.getTag(TestPiratos.class);
public Skema getSkemaFromJSON(Questionnaire questionnaire) throws UnknownNodeException, VariableLinkFailedException {
Skema skema = getSkema();
skema.link();
skema.setQuestionnaire(questionnaire);
for (Variable<?> output : skema.getOutput())
questionnaire.addSkemaVariable(output);
for (Node node : skema.getNodes()) {
node.linkVariables(questionnaire.getSkemaValuePool());
}
questionnaire.setStartNode(skema.getStartNodeNode());
return skema;
}
public Skema getSkema(Questionnaire questionnaire) throws UnknownNodeException {
// ////////////////////////////////////////////////////////////////////////////////
//
// ////////////////////////////////////////////////////////////////////////////////
// Variable
OutputSkema outputSkema = new OutputSkema();
Variable<Integer> outputAlder = new Variable<Integer>("alder", Integer.class);
Variable<Integer> outputBlodtryk = new Variable<Integer>("blodtryk", Integer.class);
outputSkema.addVariable(outputAlder);
outputSkema.addVariable(outputBlodtryk);
Variable<Integer> alder = new Variable<Integer>("alder", 18);
Variable<Integer> blodtryk = new Variable<Integer>("blodtryk", 17);
// ////////////////////////////////////////////////////////////////////////////////
//
// ////////////////////////////////////////////////////////////////////////////////
EndNode end = new EndNode(questionnaire, "slut");
// ////////////////////////////////////////////////////////////////////////////////
//
// ////////////////////////////////////////////////////////////////////////////////
IONode ikkeForBoern = new IONode(questionnaire, "IkkeForBørn");
TextViewElement tve2 = new TextViewElement(ikkeForBoern);
tve2.setText("Ikke for børn. Kom tilbage når du er blevet voksen!");
ikkeForBoern.addElement(tve2);
ButtonElement be2 = new ButtonElement(ikkeForBoern);
be2.setText("Farvel");
be2.setGravity(ButtonElement.GRAVITY_CENTER);
be2.setNext(end.getNodeName());
ikkeForBoern.addElement(be2);
// ////////////////////////////////////////////////////////////////////////////////
//
// ////////////////////////////////////////////////////////////////////////////////
IONode sundOgRask = new IONode(questionnaire, "sundOgRask");
TextViewElement tve3 = new TextViewElement(sundOgRask);
tve3.setText("Til lykke, du er jo sund og rask!");
sundOgRask.addElement(tve3);
ButtonElement be3 = new ButtonElement(sundOgRask);
be3.setText("Farvel");
be3.setGravity(ButtonElement.GRAVITY_CENTER);
be3.setNext(end.getNodeName());
sundOgRask.addElement(be3);
// ////////////////////////////////////////////////////////////////////////////////
//
// ////////////////////////////////////////////////////////////////////////////////
IONode spisPiratos = new IONode(questionnaire, "spisPiratos");
TextViewElement tve4 = new TextViewElement(spisPiratos);
tve4.setText("Du skulle nnu spise nogle piratos!");
tve4.setText("Du skulle nok spise et par poser piratos!");
spisPiratos.addElement(tve4);
ButtonElement be4 = new ButtonElement(spisPiratos);
be4.setText("Farvel");
be4.setGravity(ButtonElement.GRAVITY_CENTER);
be4.setNext(end.getNodeName());
spisPiratos.addElement(be4);
// ////////////////////////////////////////////////////////////////////////////////
//
// ////////////////////////////////////////////////////////////////////////////////
Expression<Boolean> e1 = new LessThan<Integer>(blodtryk, new AddExpression<Integer>(alder,
new Constant<Integer>(90)));
DecisionNode blodtrykForLavt = new DecisionNode(questionnaire, "blodtrykForLavt", e1);
blodtrykForLavt.setNext(spisPiratos.getNodeName());
blodtrykForLavt.setNextFalse(sundOgRask.getNodeName());
// ////////////////////////////////////////////////////////////////////////////////
//
// ////////////////////////////////////////////////////////////////////////////////
IONode indtastBlodtryk = new IONode(questionnaire, "indtastBlodtryk");
TextViewElement tve5 = new TextViewElement(indtastBlodtryk);
tve5.setText("Indtast dit blodtryk:");
indtastBlodtryk.addElement(tve5);
EditTextElement e2 = new EditTextElement(indtastBlodtryk);
e2.setOutputVariable(outputBlodtryk);
indtastBlodtryk.addElement(e2);
ButtonElement be5 = new ButtonElement(indtastBlodtryk);
be5.setText("Næste");
be5.setGravity(ButtonElement.GRAVITY_CENTER);
be5.setNext(blodtrykForLavt.getNodeName());
indtastBlodtryk.addElement(be5);
// ////////////////////////////////////////////////////////////////////////////////
//
// ////////////////////////////////////////////////////////////////////////////////
AssignmentNode<Integer> a1 = new AssignmentNode<Integer>(questionnaire, "sætAlderTil18", alder,
new Constant<Integer>(18));
a1.setNext(indtastBlodtryk.getNodeName());
// ////////////////////////////////////////////////////////////////////////////////
//
// ////////////////////////////////////////////////////////////////////////////////
IONode aeldreEnd18 = new IONode(questionnaire, "ældreEnd18");
TextViewElement tv5 = new TextViewElement(aeldreEnd18);
tv5.setText("Er du over 18 år gammel?");
aeldreEnd18.addElement(tv5);
TwoButtonElement tbe1 = new TwoButtonElement(aeldreEnd18);
tbe1.setLeftText("Nej");
tbe1.setLeftNext(ikkeForBoern.getNodeName());
tbe1.setRightText("Ja");
tbe1.setRightNext(a1.getNodeName());
aeldreEnd18.addElement(tbe1);
// ////////////////////////////////////////////////////////////////////////////////
//
// ////////////////////////////////////////////////////////////////////////////////
Skema skema = new Skema();
skema.setStartNode(aeldreEnd18.getNodeName());
skema.setEndNode(end.getNodeName());
skema.setName("skema-navn");
skema.setVersion("1.0");
for (Variable<?> output : outputSkema.getOutput()) {
questionnaire.addSkemaVariable(output);
skema.addVariable(output);
}
skema.addNode(end);
skema.addNode(ikkeForBoern);
skema.addNode(aeldreEnd18);
skema.addNode(a1);
skema.addNode(indtastBlodtryk);
skema.addNode(blodtrykForLavt);
skema.addNode(spisPiratos);
skema.addNode(sundOgRask);
skema.link();
// ////////////////////////////////////////////////////////////////////////////////
//
// ////////////////////////////////////////////////////////////////////////////////
return skema;
}
@Override
public Skema getSkema() {
Questionnaire q = new Questionnaire(new QuestionnaireFragment());
try {
String json = Json.print(getSkema(q));
return Json.parse(json, Skema.class);
} catch (UnknownNodeException e) {
e.printStackTrace();
}
return null;
}
}