Workspace

class axioma.gui.Workspace

Представление рабочего пространства во внутреннем формате. Используется как промежуточный контейнер при записи или чтении рабочего пространства в формат MWS.

clear()

Очистка всего внутреннего содержания

loadFile(filename)

Чтение из внешнего файла WMS во внутренний формат представления информации

Параметры

filename (str) – Наименование файла в файловой системе

saveFile(filename)

Запись внутреннего представления рабочего пространства во внешний файл формата WMS

Параметры

filename (str) – Наименование файла в файловой системе

Чтение

Для чтения рабочего набора из внешнего файла необходимо последовательно произвести следующие действия:

  • Создать объект внутреннего представления рабочего пространства Workspace.

  • В него загрузить содержимое из внешнего файла посредством loadFile.

  • Создать объект-загрузчик рабочего пространства из внутреннего представления в данные для менеджеров.

  • Произвести непосредственное чтение посредством метода WorkspaceLoader load.

Пример чтения из файла:

# Чтение рабочего пространства из файла
from axioma.core.dp import *
from axioma.gui import *

try:
        # Создаем контейнеры, куда мы будем в конечном счете загружать данные из рабочего набора
        catalog = DataCatalog() # Каталог с источниками данных
        # Читаем рабочее пространство из файла
        workspaceIn = Workspace() # внутреннее представление рабочего пространства
        fileName = 'sampleWorkspace.mws' # Имя файла для чтения
        workspaceIn.loadFile(fileName)
        # Контекст для чтения. Устанавливаем куда мы будем сохранять прочитанное состояние
        context = WorkspaceLoadContext(gui, catalog)
        loader = WorkspaceLoader(fileName, context)
        # Читаем из внутреннего представления
        loader.load(workspaceIn)
        # Контролируем зачитанную информацию из рабочего пространства
        wm = axioma.app.gui.widgetManager
        print('tables={}, maps={}, reports={}, browsers={}'.format(len(catalog.allDataObjects()),
            wm.count(MapView.staticMetaObject), wm.count(ReportView.staticMetaObject), wm.count(TableWindow.staticMetaObject)))
except Exception as ex:
        print(ex)

Запись

Для записи рабочего набора во внешний файл необходимо выполнить следующие действия:

  • Предварительно должны существовать каталог с данными (DataCatalogInterface).

  • Создаем контекст для записи WorkspaceSaveContext.

  • Создать объект преобразования данных контекста во внутреннюю структуру WorkspaceSaver и произвести в него запись посредством save, получив как результат Workspace.

  • Произвести запись состояния Workspace в файл посредством saveFile.

Пример записи в файл:

# Сохранение рабочего пространства в файл
from axioma.core.dp import *
from axioma.gui import *

try:
        # Создаем контейнеры
        catalog = DataCatalog() # Каталог с источниками данных
        # каким-то образом заполняем контейнеры либо изменяем загруженные ранее из рабочего пространства данные
        fileNameOut = "sampleWorkspace.mws" # Имя файла для записи
        # Создаем контекст для сохранения
        contextSave = WorkspaceSaveContext(gui, catalog)
        # Создаем объект преобразования данных контекста во внутреннюю структуру
        saver = WorkspaceSaver(fileNameOut, contextSave)
        # Сохраняем во внутренний формат
        workspaceOut = saver.save()
        # Сохраняем в файл
        workspaceOut.saveFile(fileNameOut)
except Exception as ex:
        print(ex)