Проектирование модуля загрузки
Помимо DataFile должен еще присутствовать абстрактный класс загрузчика — FileLoader. Все загрузчики будут реализованы путем создания классов наследников FileLoader. У всех загрузчиком будет метод DetectFormat, который и будет проверять принадлежность файла к формату соответствующего загрузчика. Так как в данном методе проверяется конкретный файл, то путь к нему должен посылаться в этот метод… Читать ещё >
Проектирование модуля загрузки (реферат, курсовая, диплом, контрольная)
Определение формата файла.
Независимо от формата сценарий загрузки должен оставаться неизменным. Каждый формат уникален, поэтому невозможно создать единый подход для чтения всех возможных форматов представления данных. Следовательно, каждый формат необходимо реализовывать отдельно. Это крайне усложняет не только всю систему, но и возможность добавления новых форматов. Фактически в системе должны присутствовать несколько загрузчиков, каждый из которых предназначен для загрузки определенного формата в соответствии с его структурой данных.
Так как форматов очень много, то система должна сама определять к какому именно формату относится тот или иной файл. Пользователь в свою очередь будет должен только выбрать загружаемый файл. После чего начинает работу соответствующий загрузчик. Для определения формата в каждом загрузчике должен быть реализован метод проверки некоторого файла на принадлежность данному формату.
Возможны случаи, когда один и тот же файл может быть корректно прочитан несколькими загрузчиками. Иногда даже совпадает расширение файлов у различных форматов. В этом случае, нельзя однозначно сказать к какому формату относится файл, и каким загрузчиком следует воспользоваться. Если формат определен не однозначно, то пользователю предоставляется список возможных для загрузки форматов.
Также должна быть возможность выбора нескольких файлов для последующей их загрузки. При этом пользователю будет представлен список выбранных файлов для загрузки. Для каждого файла будет отображаться название формата и однозначность его определения.
Однозначность может быть представлена тремя способами:
- — Формат однозначно определен — подходит только один загрузчик;
- — Неоднозначно — подходят несколько загрузчиков;
- — Не определен — ни один из имеющихся в системе загрузчиков не подходит для чтения этого файла.
Абстрактный уровень.
Так как сценарий загрузки будет постоянным для всех форматов, и все загрузчики должны иметь некоторые обязательные составляющие (например, проверка файла на принадлежность формату), то можно спроектировать основную часть загрузки на абстрактном уровне.
В первую очередь абстрактно можно описать класс DataFile — класс файла данных, использующийся непосредственно для чтения файла и сохранения данных в некоторой внутренней структуре. Внутренняя структура данных должна отображать структуру в соответствующем формате.
Так как каждый экземпляр наследника класса DataFile должен быть прикреплен к некоторому файлу, то его инициализация должна происходить с привязкой к загружаемому файлу. Невозможно существование в системе экземпляра наследника класса DataFile, незнающего с каким файлом ему работать, так как это потенциально может вызывать ошибки.
Также необходим некоторый метод чтения данных, который будет запускать механизм заполнения внутренней структуры DataFile данными из файла. При чтении файла возможны незначительные ошибки, информация о которых впоследствии может быть предоставлена пользователю. Для такого случая DataFile должен позволять хранить список ошибок.
Помимо DataFile должен еще присутствовать абстрактный класс загрузчика — FileLoader. Все загрузчики будут реализованы путем создания классов наследников FileLoader. У всех загрузчиком будет метод DetectFormat, который и будет проверять принадлежность файла к формату соответствующего загрузчика. Так как в данном методе проверяется конкретный файл, то путь к нему должен посылаться в этот метод. Самым важным в классе FileLoader будет метод LoadData, так как он будет запускать загрузку данных из файла в приложение сжатия, и преобразовывать данные в тот вид, в котором они уже могут быть использованы далее.
Так как загрузка некоторых форматов может происходить пошагово, то каждый такой шаг будет отображен, как диалог. Работа с этими диалогами будет очень похожей, поэтому их тоже можно описать на более абстрактном уровне.
Пользователь должен иметь возможность выбора загружаемой информации, так как не все может быть нужно для интерпретации.
Выбор загружаемых каналов пользователем.
В файле может находиться разного рода информация, которая может структурирована в фале как угодно. Однако все фалы содержат каналы данных. Основная информация, которую нужно будет загружать из файла, это и есть те самые каналы.
Каждый канал, по сути, является набором значений некоторых физических величин на определенной глубине. Обычно информация приборами записывается с перерывом на различных глубинах. Расстояние, через которое записаны данные, называется шаг по глубине. У разных каналов шаг может быть разным. Каналы подразделяются на одномерные и многомерные. Одномерные каналы на каждой отметке глубины содержат одно значение, а многомерные соответственно некоторый массив значений.
Например, канал дынных волнового сигнала содержит на каждой отметке глубины набор значений. Каждое такое значение было зарегистрировано через определенный временной интервал. Фактически, волновой сигнал — это двумерный массив значений, который может быть отображен в координатных осях глубины и времени. Все каналы могут быть представлены в виде массива данных.
Каналов в одном файле может быть огромное количество. Некоторые форматы могут не иметь ограничений по количеству записанных в них каналов. Так как не все каналы могут быть нужны пользователю для последующей работы (например, для интерпретации), то у пользователя должна быть возможность фильтрации загружаемых из фала каналов.
Для этого нужно предоставить пользователю отображение хранящейся в файле информации в виде списка, имеющихся каналов. А также дать возможность выбора тех, которые будут далее загружены.
Каналы в файле могут быть сгруппированы, например, по шагу глубины. Следует отображать структуру группирования каналов максимально близко к тому, как они хранятся в файле. При этом у пользователя должна быть возможность просмотра описания для каждого канала.
Выбор пользователем загружаемых из файла дополнительных параметров.
Помимо каналов в файле может содержаться сопутствующая информация:
- — расположение месторождения;
- — номер скважины;
- — имя оператора, производившего регистрацию данных;
- — калибровочные параметры прибора, которые могут быть необходимы для последующего анализа;
- — комментарии, оставленные оператором;
- — расшифровки некоторых сокращений, используемых в данном файле;
- — название (тип) прибора, которым был создан файл;
- — информация об осях двумерных каналов (временной интервал через, который записан волновой сигнал), такая информация может храниться отдельно от самого канала;
- — список датчиков в приборе, а также их характеристики;
- — информация р производителе прибора;
- — дата регистрации данных.
В качестве дополнительной информации может быть все, что угодно. В зависимости от формата файла такая информация может разной. У некоторых более простых форматов представления данных вообще не подразумевается наличие какой-либо дополнительной информации.
Так или иначе, эта информация может присутствовать в загружаемом файле, и может потребоваться при последующей интерпретации, поэтому ее также необходимо загружать в приложение. Однако грузить все подряд не вариант, так как дополнительная информация может быть очень обширной и по большей части бесполезной.
Следовательно, нужно отображать ее пользователю во время загрузки. А также предоставить механизм выбора необходимой информации, то есть той, которая должна быть загружена. Если заранее (исходя из описания формата) можно сказать, что некоторые информационные блоки в файле, не будут востребованы пользователями, то нужно сразу ограничить пользователя возможностью выбора только в тех информационных блоках, в которых может располагаться необходимая для дальнейшей работы информация.
Любой информационный блок можно представить в виде таблицы. Таким образом, вся дополнительная информация в файле (не зависимо от формата) представляет из себя набор таблиц. Если эти таблицы каким-либо образом структурированы (сгруппированы) в файле, то при отображении их пользователю нужно максимально приближено передать эту структуру.
Учитывая многообразие возможной дополнительной информации, предполагается использование во время загрузки механизма для ее унификации, то есть приведения к единому стандартному виду.
В приложении вся дополнительная информация представлена в виде списка параметров. Каждый такой параметр обладает следующими полями:
- — название параметра;
- — значение;
- — единицы измерения;
- — описание.
Название параметра и его значение являются обязательными, в то время как единицы измерения и описание могут быть пустыми. На одном из этапов загрузки пользователю должна быть предоставлена возможность выбора загружаемых параметров, путем выбора строк в таблице.
Если, исходя из описания формата, нельзя сказать какие столбцы таблицы будут содержать значение, а какие название параметра, то пользователь должен иметь возможность самостоятельно указать из каких столбцов таблицы будут браться поля для выбираемых параметров.
Подобный механизм выбора параметров крайне сложный и трудоемкий для пользователя, поэтому необходим еще и автоматический выбор загружаемых параметров. Такой выбор должен осуществляться в соответствии с некоторым шаблоном, в котором указано какие параметры из каких таблиц стоит брать, а также как настроить эти самые таблицы. Пользователь должен иметь возможность настроить выбор параметров один раз для определенного типа прибора, и сохранить их в шаблон, чтобы в дальнейшем не повторять эту операцию.
Интерфейс загрузки должен состоять из следующих диалогов:
- — Выбор формата;
- — Выбор кодировки;
- — Шага загрузки, присущие конкретному формату;
- — Прогресс загрузки;
- — Результат загрузки.
Наличие выбора кодировки и количество шагов зависит от выбранного формата. Для одних форматов необходим выбор кодировки, для других нет. Каждый формат будет загружен по-своему, поэтому для каждого формата должны быть определены свои внутренние шаги загрузки. Существуют форматы, для которых не требуются шаги, то есть их количество равно нулю.
Одновременно для загрузки могут быть выбраны сразу несколько файлов, в том числе и разных форматов. Файлы загружаются последовательно, один за другим. «Выбор формата» и «Результат загрузки» отображаются один раз для всех загружаемых файлов.
Окно «Выбор формата».
В окне должны быть две навигационные кнопки:
- — Далее;
- — Отмена.
При нажатии «Далее» переходим к следующему этапу. При нажатии «Отмена» прекращаем загрузку и закрываем все окна.
Окно «Выбор кодировки».
В окне должны быть три навигационные кнопки:
- — Далее;
- — Пропустить загрузку файла;
- — Отмена.
При нажатии «Далее» переходим к следующему этапу. При нажатии «Пропустить загрузку файла» отменяем загрузку текущего файла и переходим к загрузке следующего. При нажатии кнопки «Отмена» прекращаем загрузку и закрываем все окна.
Окно «Шага загрузки».
На каждом шаге любого из возможных загрузчиков должно отображаться окно со следующими навигационными кнопками:
- — Далее;
- — Пропустить загрузку файла;
- — Отмена.
При нажатии «Далее» переходим к следующему шагу загрузчика. После последнего шага переходим непосредственно к самой загрузке. При нажатии «Пропустить загрузку файла» отменяем загрузку текущего файла и переходим к загрузке следующего. При нажатии кнопки «Отмена» прекращаем загрузку и закрываем все окна.
Окно «Прогресс загрузки».
Данное окно отображает, какой процент информации из файла уже загружен, и сколько осталось до конца загрузки файла. В окне должны быть две действующие навигационные кнопки:
- — Пропустить загрузку файла;
- — Отмена.
При нажатии «Пропустить загрузку файла» отменяем загрузку текущего файла и переходим к загрузке следующего. При нажатии кнопки «Отмена» прекращаем загрузку и закрываем все окна. По завершении загрузки файла происходит автоматический переход к началу загрузки следующего файла.
Окно «Результат загрузки».
Данное окно отображается после загрузки всех файлов, и показывает, какие из загружаемых файлов были корректно загружены. В окне присутствует только одна кнопка «Готово», предназначенная для завершения загрузки.
Окно «Список шаблонов».
В загружаемых файлах может присутствовать различная дополнительная информация, которую можно выбрать для загрузки в наблюдение в виде некоторых параметров. Для быстрого выбора необходимых параметров можно воспользоваться готовым шаблоном. Например, если часто приходиться выбирать одни и те же параметры, то лучше сохранить настройки выбора параметров в шаблон, и в дальнейшем пользоваться этим шаблоном. Интерфейс работы с шаблонами показан на рисунке 2.6.
Интерфейс на шаге выбора дополнительных параметров:
- — Применить — если шаблон для загружаемого файла уже существует, то его можно выбрать из списка и применить к текущему файлу. Параметры, указанные в шаблоне автоматически выбираются.
- — Сохранить — текущие настройки выбора параметров можно сохранить в выбранный шаблон. Если в поле шаблона введено имя не существующего шаблона, то создастся новый шаблон.
- — Шаблоны — открывает окно для просмотра и редактирования списка шаблонов.
Действия, производимые с шаблонами:
- — Добавление нового шаблона. По кнопке «Добавить». При этом в списке появляется новый пустой шаблон без указания формата файла, к которому он может быть применен. Добавленный шаблон автоматически переходит в режим редактирования имени.
- — Редактирование имени шаблона. Для переименования имени нужно дважды щелкнуть курсором мыши по имени шаблона. Или выделить шаблон и нажать на кнопку «Переименовать». Имя шаблона не может быть пустым и должно быть уникальным.
- — Копирование выделенного шаблона. Создает копию шаблона по кнопке «Копировать».
- — Удаление выделенного шаблона. По кнопке «Удалить» или клавишей
- — Загрузка шаблонов из внешнего файла по кнопке «Импорт». Нужно будет выбрать файл с расширением *Templates (файл должен быть создан с помощью программы через экспорт шаблонов) и затем выбрать добавляемые шаблоны для загрузки.
- — Экспорт набора шаблонов во внешний файл осуществляется по кнопке «Экспорт.». Набор шаблонов экспортируется в файл с расширением *.Templates.