OperationcodeCreatorAgent2:ソースコード:flow:FlowSelect.py

from flow.FlowBase import FlowBase
from flow.FlowSequentialBase import FlowSequentialBase
from flow.FlowCriterionAndBranching  import FlowCriterionAndBranching


class FlowSelect(FlowBase):
    def __init__(self, criterion):
        super().__init__()
        self.set_category("flow")
        self.set_type("select")
        self.branching_process_dict = {}
        self.criterion_and_branching = FlowCriterionAndBranching()  # 条件による判別のみを担当
        self.criterion_and_branching.set_criterion(criterion)

    def append_branching(self, branching):
        if branching not in self.branching_process_dict.keys():
            self.branching_process_dict[branching] = FlowSequentialBase()
            self.criterion_and_branching.append_branching(branching)

    def append_process(self, process, branching):
        # 各分岐の処理内容を追加する
        if branching not in self.branching_process_dict.keys():
            self.branching_process_dict[branching] = FlowSequentialBase()
            self.criterion_and_branching.append_branching(branching)
        self.branching_process_dict[branching].append_process(process)

    def set_criterion_and_branching(self, criterion, branching_list):
        # #判断条件と分岐の内容を設定
        self.criterion_and_branching.set_criterion(criterion)
        self.criterion_and_branching.set_branching(branching_list)
        for key in branching_list:
            if key not in self.branching_process_dict.keys():
                self.branching_process_dict[key] = FlowSequentialBase()

    def set_select_type(self, type):
        self.criterion_and_branching.set_select_type(type)

    def set_threshold(self, type):
        self.criterion_and_branching.set_threshold(type)

    def run(self, command=None, pre_respons=None, flow_data=None):
        if None is not self.criterion_and_branching:
            key = self.criterion_and_branching.check()
            if None is not key:
                result = ""
                if key in self.branching_process_dict.keys():

                    result, pre_respons =\
                        self.branching_process_dict[key].run(command,
                                                             pre_respons,
                                                             key)  # is_return, result
                    print("select.run.result", result)
                    if "break" == result:
                        return "break", pre_respons
                    if "continue" == result:
                        return "continue", pre_respons
                    if "return" == result:
                        return "return", pre_respons
                    return "", pre_respons
                else:
                    print("選択肢が見つかりませんでした。", key)

            else:
                print("条件で正常に選択できませんでした。")

            return "", None
        else:
            print("条件が設定されていません。self_criterion_and_branchingで設定してください。")
            return "", None