Пример #1
0
 def read_project(self) -> None:
     properties = self._raw_properties
     self.__project_version = properties.get("version", None)
     if not self._raw_properties:
         self.__project_state = "missing"
     elif self.__project_version is not None and self.__project_version in (
             FileStorageSystem.PROJECT_VERSION, 2):
         for item_d in properties.get("data_items", list()):
             data_item = DataItem.DataItem()
             data_item.begin_reading()
             data_item.read_from_dict(item_d)
             data_item.finish_reading()
             if not self.get_item_by_uuid("data_items", data_item.uuid):
                 self.load_item("data_items", len(self.data_items),
                                data_item)
         for item_d in properties.get("display_items", list()):
             display_item = DisplayItem.DisplayItem()
             display_item.begin_reading()
             display_item.read_from_dict(item_d)
             display_item.finish_reading()
             if not self.get_item_by_uuid("display_items",
                                          display_item.uuid):
                 self.load_item("display_items", len(self.display_items),
                                display_item)
         for item_d in properties.get("data_structures", list()):
             data_structure = DataStructure.DataStructure()
             data_structure.begin_reading()
             data_structure.read_from_dict(item_d)
             data_structure.finish_reading()
             if not self.get_item_by_uuid("data_structures",
                                          data_structure.uuid):
                 self.load_item("data_structures",
                                len(self.data_structures), data_structure)
         for item_d in properties.get("computations", list()):
             computation = Symbolic.Computation()
             computation.begin_reading()
             computation.read_from_dict(item_d)
             computation.finish_reading()
             if not self.get_item_by_uuid("computations", computation.uuid):
                 self.load_item("computations", len(self.computations),
                                computation)
                 # TODO: handle update script and bind after reload in document model
                 computation.update_script(
                     self.container.container.container.
                     _processing_descriptions)
         for item_d in properties.get("connections", list()):
             connection = Connection.connection_factory(item_d.get)
             connection.begin_reading()
             connection.read_from_dict(item_d)
             connection.finish_reading()
             if not self.get_item_by_uuid("connections", connection.uuid):
                 self.load_item("connections", len(self.connections),
                                connection)
         self.__project_state = "loaded"
     elif self.__project_version is not None:
         self.__project_state = "needs_upgrade"
     else:
         self.__project_state = "missing"
Пример #2
0
def computation_factory(lookup_id):
    return Symbolic.Computation()
Пример #3
0
 def read_project(self) -> None:
     if callable(self.handle_start_read):
         self.handle_start_read()
     properties = self._raw_properties
     if properties:
         project_version = properties.get("version", None)
         if project_version is not None and project_version == FileStorageSystem.PROJECT_VERSION:
             for item_d in properties.get("data_items", list()):
                 data_item = DataItem.DataItem()
                 data_item.begin_reading()
                 data_item.read_from_dict(item_d)
                 data_item.finish_reading()
                 if not self.get_item_by_uuid("data_items", data_item.uuid):
                     self.load_item("data_items", len(self.data_items),
                                    data_item)
                 else:
                     data_item.close()
             for item_d in properties.get("display_items", list()):
                 display_item = DisplayItem.DisplayItem()
                 display_item.begin_reading()
                 display_item.read_from_dict(item_d)
                 display_item.finish_reading()
                 if not self.get_item_by_uuid("display_items",
                                              display_item.uuid):
                     self.load_item("display_items",
                                    len(self.display_items), display_item)
                 else:
                     display_item.close()
             for item_d in properties.get("data_structures", list()):
                 data_structure = DataStructure.DataStructure()
                 data_structure.begin_reading()
                 data_structure.read_from_dict(item_d)
                 data_structure.finish_reading()
                 if not self.get_item_by_uuid("data_structures",
                                              data_structure.uuid):
                     self.load_item("data_structures",
                                    len(self.data_structures),
                                    data_structure)
                 else:
                     data_structure.close()
             for item_d in properties.get("computations", list()):
                 computation = Symbolic.Computation()
                 computation.begin_reading()
                 computation.read_from_dict(item_d)
                 computation.finish_reading()
                 if not self.get_item_by_uuid("computations",
                                              computation.uuid):
                     self.load_item("computations", len(self.computations),
                                    computation)
                     # TODO: handle update script and bind after reload in document model
                     computation.update_script(
                         Project._processing_descriptions)
                     computation.reset()
                 else:
                     computation.close()
             for item_d in properties.get("connections", list()):
                 connection = Connection.connection_factory(item_d.get)
                 connection.begin_reading()
                 connection.read_from_dict(item_d)
                 connection.finish_reading()
                 if not self.get_item_by_uuid("connections",
                                              connection.uuid):
                     self.load_item("connections", len(self.connections),
                                    connection)
                 else:
                     connection.close()
             for item_d in properties.get("data_groups", list()):
                 data_group = DataGroup.data_group_factory(item_d.get)
                 data_group.begin_reading()
                 data_group.read_from_dict(item_d)
                 data_group.finish_reading()
                 if not self.get_item_by_uuid("data_groups",
                                              data_group.uuid):
                     self.load_item("data_groups", len(self.data_groups),
                                    data_group)
                 else:
                     data_group.close()
             for item_d in properties.get("workspaces", list()):
                 workspace = WorkspaceLayout.factory(item_d.get)
                 workspace.begin_reading()
                 workspace.read_from_dict(item_d)
                 workspace.finish_reading()
                 if not self.get_item_by_uuid("workspaces", workspace.uuid):
                     self.load_item("workspaces", len(self.workspaces),
                                    workspace)
                 else:
                     workspace.close()
             workspace_uuid_str = properties.get("workspace_uuid", None)
             if workspace_uuid_str:
                 self._set_persistent_property_value(
                     "workspace_uuid", uuid.UUID(workspace_uuid_str))
             self._set_persistent_property_value(
                 "data_item_references",
                 properties.get("data_item_references", dict()))
             self._set_persistent_property_value(
                 "mapped_items", properties.get("mapped_items", list()))
             self.__has_been_read = True
     if callable(self.handle_finish_read):
         self.handle_finish_read()
Пример #4
0
def computation_factory(
        lookup_id: typing.Callable[[str], str]) -> Symbolic.Computation:
    return Symbolic.Computation()