ASolver.py 2 KB
Newer Older
# -*- 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 ""