# -*- coding: utf-8 -*- import os import subprocess from enum import Enum class STATUS(Enum): STOPED = 0 RUNNING = 1 FAILED = 2 CONF_ERROR = 3 class AbstractSolver(object): def __init__(self, name): super(AbstractSolver, self).__init__() self.current_process = None self.status = STATUS.STOPED # Informations self._type = "" self.name = name self.description = "" self.path_input = "" self.path_solver = "" self.path_output = "" self.cmd_input = "" self.cmd_solver = "" self.cmd_output = "" def __str__(self): return f"{self.name} : {self._type} : {self.description}" # Getter def get_status(self): return self.status def get_type(self): return self._type def __getitem__(self, name): ret = None if name == "name": ret = self.name elif name == "description": ret = self.description elif name == "type": ret = self._type return ret # Setter def set_status(self, status): self.status = status def set_name(self, name): self.name = name def set_description(self, description): self.description = description def set_input(self, path, cmd): self.path_input = path self.cmd_input = cmd def set_solver(self, path, cmd): self.path_solver = path self.cmd_solver = cmd def set_output(self, path, cmd): self.path_output = path self.cmd_output = cmd # Run def run_input_data_fomater(self): if self.cmd_input == "": return True return False def run_solver(self): if self.cmd_solver == "": return True return False def run_output_data_fomater(self, ): if self.cmd_output == "": return True return False def kill(self): return False def readline(self): return ""