Разработка программного модуля для загрузки каротажных данных


Реализация класса файла данных



бет12/30
Дата15.08.2023
өлшемі7,73 Mb.
#105308
түріАнализ
1   ...   8   9   10   11   12   13   14   15   ...   30
Реализация класса файла данных.
Для реализации класса файла данных необходимо описать наследника базового класса DataFile. Класс файла данных используется непосредственно для чтения файла и сохранения данных во внутренних структурах. Файл данных может быть связан с любым количеством файлов на диске.
Для реализации необходимо:

  • Создать конструктор, принимающий имя файла данных. При необходимости установить кодировку по умолчанию в поле Encoding

  • Переопределить абстрактный метод Init – чтение данных из файла(файлов) на диске и сохранение их в своей внутренней структуре. Все данные можно не загружать во внутреннюю структуру, а использовать в дальнейшем методы для доступа к этим данным в файле.

  • При необходимости освобождения ресурсов следует переопределить virtual метод Dispose(disposing).

  • При необходимости переопределить виртуальный метод GetPreviewFileContent, в котором заполняется буфер текстовой информацией для определения кодировки файла. При этом не вызывать метод базового класса.

  • Для добавления сообщений, предупреждений и ошибок в лог-файл загрузки, используйте свойство Logger.

Реализация класса загрузчика файла данных.
Загрузчик является оболочкой для одного или более файлов данных и предназначен для преобразования данных из внутреннего представления файлов данных в данные проекта. Для реализации загрузчика должен быть написан класс – наследник базового класса FileLoader.
Для реализации необходимо:

  • создать при необходимости public конструктор по умолчанию;

  • если необходим выбор кодировки, то установить в конструкторе свойство NeedEncoding = true (по умолчанию false);

  • реализовать абстрактный метод OnAddDataFile для добавления нового файла данных в список загрузки этого загрузчика. Данный метод должен возвращать либо вновь созданный объект класса DataFile, либо уже существующий объект в списке, либо null, если файл невозможно добавить в список загрузки;

  • реализовать абстрактный метод DetectFormat(fileName) для определения является ли заданный файл данного формата. Может возвращать одно из трех значений:

  • Impossible – файл точно не может быть данного формата;

  • Possible – файл может быть данного формата, но неоднозначно;

  • Sure – Файл скорее всего содержит данные этого формата.

Желательно реализовать данный метод так, чтобы он работал как можно быстрее. Например, если у файла есть заголовок, по которому можно определить формат, то читать только его. Если такого заголовка нет, то по расширению файла. Кроме того, желательно, чтобы данный метод автоматически определялся и по «вторичным» файлам. Например, данные формата Kedr содержаться в файле geo, с которым связан файл acu. Формат должен определяться по любому из них;

  • реализовать абстрактное свойствово Description – название формата, отображаемое пользователю;

  • при необходимости переопределить виртуальный метод Extensions, который возвращает возможные расширения файлов данного формата. Данные расширения используются для формирования фильтра диалога выбора файлов;

  • реализовать метод LoadData для загрузки объекта. В этом методе необходимо создать наблюдение(я) загрузить туда каналы, шкалу глубин и добавить созданные наблюдения в список Observations. Глубины каналов и шкала глубин наблюдения должны быть монотонными;

  • для загрузки значений каналов следует использовать промежуточный класс CanalValues. После завершения загрузки преобразовать CanalValues в HugeArray и создать Canal в наблюдении, подставив для CanalValueSet созданный HugeArray;

  • для установки хода загрузки в методе LoadData необходимо использовать методы:

  • SetMaxProcessValue – устанавливает максимальное значение шагов загрузки;

  • SetCurrentOperation – устанавливеат текущую операцию;

  • IncrementProcessStatus – увеличивает ход загрузки на заданное число шагов;

  • IsProcessCanceled – проверка прерван процесс загрузки пользователем или нет;

  • для добавления сообщений, предупреждений и ошибок в лог-файл загрузки, используйте методы: AddError, AddWarning, AddContent.



Достарыңызбен бөлісу:
1   ...   8   9   10   11   12   13   14   15   ...   30




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет