Skip to content
Snippets Groups Projects
FaultTreePanelTranslator.java 54.9 KiB
Newer Older
                toEndGuard = AvatarGuard.addGuard(toEndGuard, new AvatarSimpleGuardDuo(aa, AvatarConstant.TRUE, "=="), "&&");

            // From Main
            avatartranslator.AvatarSignal sigAtt = _main.getAvatarSignalWithName("accept__" + att.getName());
            AvatarActionOnSignal acceptFault = new AvatarActionOnSignal("AcceptFault", sigAtt, _ref1);
            asm.addElement(acceptFault);
            AvatarTransition at = new AvatarTransition(_ab, "at_toInputFault", _ref);
            asm.addElement(at);
            mainState.addNext(at);
            at.addNext(acceptFault);
            at.setGuard(new AvatarBinaryGuard(
                    new AvatarSimpleGuardDuo(aa, AvatarConstant.FALSE, "=="),
                    new AvatarSimpleGuardDuo(oneDone, AvatarConstant.FALSE, "=="),
                    "&&"));
            at = new AvatarTransition(_ab, "at_fromInputFault", _ref);
            at.addAction(new AvatarActionAssignment(aa, AvatarConstant.TRUE));
            at.addAction(new AvatarActionAssignment(oneDone, AvatarConstant.TRUE));
            asm.addElement(at);
            acceptFault.addNext(at);
            at.addNext(mainState);

            // Link from stoppingAll
            //           if (att.isLeaf()) {
            // Leaf Fault -> must make a stop
            sigAtt = _main.getAvatarSignalWithName("acceptStop__" + att.getName());
            acceptFault = new AvatarActionOnSignal("StopFault", sigAtt, _ref1);
            asm.addElement(acceptFault);
            at = new AvatarTransition(_ab, "at_toInputFault_leaf", _ref);
            asm.addElement(at);
            stoppingAll.addNext(at);
            at.addNext(acceptFault);
            at.setGuard(new AvatarSimpleGuardDuo(aa, AvatarConstant.FALSE, "=="));
            at = new AvatarTransition(_ab, "at_fromInputFault", _ref);
            at.addAction(new AvatarActionAssignment(aa, AvatarConstant.TRUE));
            at.setHidden(true);
            asm.addElement(at);
            acceptFault.addNext(at);
            at.addNext(stoppingAll);
            //           } else {
            // Generated Fault-> must set performed to true.
            /*          at = new AvatarTransition("at_toInputFault", _ref);
                        stoppingAll.addNext(at);
                        asm.addElement(at);
                        at.addNext(stoppingAll);
                        at.setGuard("["+att.getName() + "__performed == false]");
                        at.addAction(att.getName() + "__performed = true");
                        at.setHidden(true);*/
            //          }

        }

        // Adding link to stopping all
        AvatarTransition at = new AvatarTransition(_ab, "at_toStoppingAll", _ref);
        asm.addElement(at);
        mainState.addNext(at);
        at.addNext(stoppingAll);
        at.setGuard(finalGuard);


        // Adding resulting Fault
        at = new AvatarTransition(_ab, "at_toEnd", _ref);
        asm.addElement(at);
        stoppingAll.addNext(at);
        at.addNext(endState);
        at.setGuard(toEndGuard);

        Fault resulting = _node.getResultingFault();
        avatartranslator.AvatarSignal sigFault = _main.getAvatarSignalWithName("nodeDone__" + resulting.getName());
        AvatarActionOnSignal resultingFault = new AvatarActionOnSignal("ResultingFault", sigFault, _ref1);
        asm.addElement(resultingFault);
        at = new AvatarTransition(_ab, "at_toResultingFault", _ref);
        asm.addElement(at);
        endState.addNext(at);
        at.addNext(resultingFault);
        at = new AvatarTransition(_ab, "at_Overall", _ref);
        asm.addElement(at);
        resultingFault.addNext(at);
        at.addNext(overallState);

    }


    private void makeSequenceNode(AvatarSpecification _as, AvatarBlock _main, AvatarBlock _ab, SequenceNode _node, Object _ref) {
        Object _ref1 = _ref;
        _ref = null;
        AvatarStateMachine asm = _ab.getStateMachine();
        _node.orderFaults();

        // Basic machine
        AvatarStartState start = new AvatarStartState("start", _ref);
        AvatarState mainState = new AvatarState("main", _ref, false, false);
        AvatarState endState = new AvatarState("end", _ref, false, false);
        AvatarState overallState = new AvatarState("overall", _ref, false, false);
        asm.addElement(start);
        asm.setStartState(start);
        asm.addElement(mainState);
        asm.addElement(endState);
        asm.addElement(overallState);


        AvatarTransition at = new AvatarTransition(_ab, "at", _ref);
        asm.addElement(at);
        start.addNext(at);
        at.addNext(mainState);

        AvatarState previousState = mainState;

        // Chaining accept Faults
        for (Fault att : _node.getInputFaults()) {
            AvatarState state = new AvatarState("state__" + att.getName(), _ref);
            asm.addElement(state);
            avatartranslator.AvatarSignal sigAtt = _main.getAvatarSignalWithName("accept__" + att.getName());
            AvatarActionOnSignal acceptFault = new AvatarActionOnSignal("AcceptFault", sigAtt, _ref1);
            asm.addElement(acceptFault);

            at = new AvatarTransition(_ab, "at", _ref);
            asm.addElement(at);
            previousState.addNext(at);
            at.addNext(acceptFault);
            at = new AvatarTransition(_ab, "at", _ref);
            asm.addElement(at);
            acceptFault.addNext(at);
            at.addNext(state);
            previousState = state;
        }

        at = new AvatarTransition(_ab, "at", _ref);
        asm.addElement(at);
        previousState.addNext(at);
        at.addNext(endState);


        // Performing resulting Fault
        Fault resulting = _node.getResultingFault();
        avatartranslator.AvatarSignal sigFault = _main.getAvatarSignalWithName("nodeDone__" + resulting.getName());
        AvatarActionOnSignal resultingFault = new AvatarActionOnSignal("ResultingFault", sigFault, _ref1);
        asm.addElement(resultingFault);
        at = new AvatarTransition(_ab, "at_toResultingFault", _ref);
        asm.addElement(at);
        endState.addNext(at);
        at.addNext(resultingFault);
        at = new AvatarTransition(_ab, "at_Overall", _ref);
        asm.addElement(at);
        resultingFault.addNext(at);
        at.addNext(overallState);
    }

    private void makeAfterNode(AvatarSpecification _as, AvatarBlock _main, AvatarBlock _ab, AfterNode _node, Object _ref) {
        Object _ref1 = _ref;
        _ref = null;
        AvatarStateMachine asm = _ab.getStateMachine();
        _node.orderFaults();

        // Basic machine
        AvatarStartState start = new AvatarStartState("start", _ref);
        AvatarState mainState = new AvatarState("main", _ref, false, false);
        AvatarState endState = new AvatarState("end", _ref, false, false);
        AvatarState overallState = new AvatarState("overall", _ref, false, false);
        asm.addElement(start);
        asm.setStartState(start);
        asm.addElement(mainState);
        asm.addElement(endState);
        asm.addElement(overallState);


        AvatarTransition at = new AvatarTransition(_ab, "at", _ref);
        asm.addElement(at);
        start.addNext(at);
        at.addNext(mainState);

        AvatarState previousState = mainState;

        // Chaining accept Faults
        int cpt = 0;
        for (Fault att : _node.getInputFaults()) {
            AvatarState state = new AvatarState("state__" + att.getName(), _ref);
            asm.addElement(state);
            avatartranslator.AvatarSignal sigAtt = _main.getAvatarSignalWithName("accept__" + att.getName());
            AvatarActionOnSignal acceptFault = new AvatarActionOnSignal("AcceptFault", sigAtt, _ref1);
            asm.addElement(acceptFault);

            at = new AvatarTransition(_ab, "at", _ref);
            asm.addElement(at);
            previousState.addNext(at);
            at.addNext(acceptFault);
            if (cpt > 0) {
                at.setDelays("" + _node.getTime(), "" + _node.getTime());
            }
            at = new AvatarTransition(_ab, "at", _ref);
            asm.addElement(at);
            acceptFault.addNext(at);
            at.addNext(state);
            previousState = state;
        }

        at = new AvatarTransition(_ab, "at", _ref);
        asm.addElement(at);
        previousState.addNext(at);
        at.addNext(endState);


        // Performing resulting Fault
        Fault resulting = _node.getResultingFault();
        avatartranslator.AvatarSignal sigFault = _main.getAvatarSignalWithName("nodeDone__" + resulting.getName());
        AvatarActionOnSignal resultingFault = new AvatarActionOnSignal("ResultingFault", sigFault, _ref1);
        asm.addElement(resultingFault);
        at = new AvatarTransition(_ab, "at_toResultingFault", _ref);
        asm.addElement(at);
        endState.addNext(at);
        at.addNext(resultingFault);
        at = new AvatarTransition(_ab, "at_Overall", _ref);
        asm.addElement(at);
        resultingFault.addNext(at);
        at.addNext(overallState);
    }

    private void makeBeforeNode(AvatarSpecification _as, AvatarBlock _main, AvatarBlock _ab, BeforeNode _node, Object _ref) {
        Object _ref1 = _ref;
        _ref = null;
        AvatarStateMachine asm = _ab.getStateMachine();
        _node.orderFaults();

        // Basic machine
        AvatarStartState start = new AvatarStartState("start", _ref);
        AvatarState mainState = new AvatarState("main", _ref, false, false);
        AvatarState endState = new AvatarState("end", _ref, false, false);
        AvatarState overallState = new AvatarState("overall", _ref, false, false);
        AvatarState timeout = new AvatarState("timeout", _ref, false, false);
        asm.addElement(start);
        asm.setStartState(start);
        asm.addElement(mainState);
        asm.addElement(endState);
        asm.addElement(overallState);
        asm.addElement(timeout);


        AvatarTransition at = new AvatarTransition(_ab, "at", _ref);
        asm.addElement(at);
        start.addNext(at);
        at.addNext(mainState);

        AvatarState previousState = mainState;

        // Chaining accept Faults
        int cpt = 0;
        for (Fault att : _node.getInputFaults()) {
            AvatarState state = new AvatarState("state__" + att.getName(), _ref);
            asm.addElement(state);
            avatartranslator.AvatarSignal sigAtt = _main.getAvatarSignalWithName("accept__" + att.getName());
            AvatarActionOnSignal acceptFault = new AvatarActionOnSignal("AcceptFault", sigAtt, _ref1);
            asm.addElement(acceptFault);

            at = new AvatarTransition(_ab, "at", _ref);
            asm.addElement(at);
            previousState.addNext(at);
            at.addNext(acceptFault);
            if (cpt > 0) {
                at = new AvatarTransition(_ab, "at_totimeout", _ref);
                asm.addElement(at);
                previousState.addNext(at);
                at.addNext(timeout);
                at.setDelays("" + _node.getTime(), "" + _node.getTime());
            }
            at = new AvatarTransition(_ab, "at", _ref);
            asm.addElement(at);
            acceptFault.addNext(at);
            at.addNext(state);
            previousState = state;
        }

        at = new AvatarTransition(_ab, "at", _ref);
        asm.addElement(at);
        previousState.addNext(at);
        at.addNext(endState);


        // Performing resulting Fault
        Fault resulting = _node.getResultingFault();
        avatartranslator.AvatarSignal sigFault = _main.getAvatarSignalWithName("nodeDone__" + resulting.getName());
        AvatarActionOnSignal resultingFault = new AvatarActionOnSignal("ResultingFault", sigFault, _ref1);
        asm.addElement(resultingFault);
        at = new AvatarTransition(_ab, "at_toResultingFault", _ref);
        asm.addElement(at);
        endState.addNext(at);
        at.addNext(resultingFault);
        at = new AvatarTransition(_ab, "at_Overall", _ref);
        asm.addElement(at);
        resultingFault.addNext(at);
        at.addNext(overallState);
    }

    private void addCheckingError(CheckingError ce) {
        if (checkingErrors == null) {
            checkingErrors = new LinkedList<CheckingError>();
    }
//
//    private void addWarning(CheckingError ce) {
//        if (warnings == null) {
//            warnings = new LinkedList<CheckingError> ();
//        }
//        warnings.add (ce);
//    }
}