コード例 #1
0
class QSRlib_Request_Message(object):
    def __init__(self, which_qsr="", input_data=None, qsrs_for=[], timestamp_request_made=None,
                 start=0, finish=-1, objects_names=[], include_missing_data=True, qsr_relations_and_values={},
                 future=False, config=None, dynamic_args=None):
        self.future = future
        self.which_qsr = which_qsr
        self.input_data = None
        self.set_input_data(input_data=input_data, start=start, finish=finish, objects_names=objects_names)
        self.qsrs_for = qsrs_for
        self.timestamp_request_made = datetime.now() if timestamp_request_made is None else timestamp_request_made
        self.include_missing_data = include_missing_data
        self.qsr_relations_and_values = qsr_relations_and_values # should be more dynamic
        self.config = config
        self.dynamic_args = dynamic_args

    def make(self, which_qsr, input_data, qsrs_for=[], timestamp_request_made=None, future=None, ini=None,
             dynamic_args=None):
        if future:
            self.future = future
        self.which_qsr = which_qsr
        self.input_data = self.set_input_data(input_data)
        self.qsrs_for = qsrs_for
        self.timestamp_request_made = datetime.now() if timestamp_request_made is None else timestamp_request_made
        self.ini = None
        self.dynamic_args = None

    def set_input_data(self, input_data, start=0, finish=-1, objects_names=[]):
        error = False
        if input_data is None:
            input_data = World_Trace()
        if isinstance(input_data, World_Trace):
            if len(input_data.trace) > 0:
                self.input_data = input_data
            else:
                if self.input_data is not None and len(self.input_data.trace) > 0:
                    print("Reusing previous input data")
                else:
                    print("Warning (QSRlib_Request_Message.set_input_data): It seems you are trying to reuse previous data, but previous data is empty")
                    self.input_data = World_Trace(description="error")
                    error = True
        else:
            print("ERROR (QSRLib_.set_input_data): input data has incorrect type, must be of type 'World_Trace'")
            self.input_data = World_Trace(description="error")
            error = True
        if not error:
            if finish >= 0:
                self.input_data = self.input_data.get_at_timestamp_range(start=start, finish=finish)
            if len(objects_names) > 0:
                self.input_data = self.input_data.get_for_objects(objects_names=objects_names)