|
|
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
Нужен шаблон для реализации следующей задачи: Есть железяка, для нас - черный ящик, которая генерирует раз в сутки 3 файла, файлы разбиты на блоки равной длины, структура блока следующая: Код: plaintext 1. 2. 3. 4. Для строк в первых двух файлах определен заголовок (для каждого файла свой формат и длина заголовка). Из заголовка можно узнать название формата (определяет структуру и длину) следующей за заголовком части строки. За этой частью идет "пустой байт" и еще определенная структура. С третьим файлом немного сложнее, там в начале строки есть структура типа заголовка, из которой можно узнать название формата следующей за заголовком части строки. За этой частью идет структура неизвестно какого формата, т.е. там может быть все что угодно. За ней "пустой байт" и еще определенная структура. Т.е. как Вы понимаете структура строк в блоках не одинакова, даже в пределах одного файла, т.е. в одном блоке одна структура, в другом другая, в третьем как в первом и т.д. Структуры строк описаны в определенных файлах расположеных в черном ящике. Я могу попросить черный ящик сгенерировать мне java-классы для разбора строки. Т.е. например: 1. черный ящик сгенерил мне класс заголовка, которому я могу передать всю строку (байтовый массив) и вызывая методы этого класса я получу информацию относящуюся к заголовку, т.е. этот класс знает все смещения и длины полей заголовка 2. из заголовка я узнал формат следующей части, по названию формата выбрал нужный мне класс сгенерированный черным ящиком и передал ему туже строку, с помощью методов выбранного класса я получаю нужную информацию и т.д. Смещения и длины полей в строках время от времени изменяются, но сгенерировав с помощью черного ящика новые классы можно снова без проблем получать корректную информацию из строк. Задача: нужен шаблон проектирования для работы с этими файлами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 13:44:10 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
1. генерить классы - откровенный бред 2. State Machine 3. сколько$ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 15:00:05 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
expp1. генерить классы - откровенный бред 2. State Machine 3. сколько$ ? 1. бред не бред, но мне это больше нравится, чем самому парсить строки, т.е. самому нужно узнать все смещения и длины полей, когда смещение или длина поля изменятся, то лезть в код и изменять их вручную, а также придется поправить все смещения и длины с учетом измененных - это точно бред 2. State Machine - это вопрос, комментарий или что? что-то я не въехал 3. несколько десятков ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 15:13:31 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
Фабричный метод. Классика жанра - считывание изображений. википедия Главное выделить общий контракт по обработке сообщений. Например, я его использую для формирования кода посылки сообщений. Есть некая сущность в виде списка сообщений и мне нужно создать скрипт, который эти сообщения шлет. Соответственно контракт базового класса сообщений есть TMessage.getSendCode() (пишу на Дельфи). Есть потомки TBaseMessage, TTimerMessage и т.д. Каждое сообщение имеет свой формат (первые пять полей как правило совпадают). Есть TMessageCreator, который принимает на вход поток данных (аналог DataInput в Java) и разбирается, какое сообщение нужно создать. Соотвественно, создает сообщение нужно класса и возвращает его результатом. В итоге, код обработки выглядит примерно так: Чтение: Код: plaintext 1. 2. 3. 4. Запись: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 15:38:44 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
можно задачу сформулировать ещё разок и лаконичнее (может с примерами)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 16:06:23 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
BesZPпопросить черный ящик сгенерировать мне java-классы очень понравилось :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 16:18:26 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
zalexaka BesZPпопросить черный ящик сгенерировать мне java-классы очень понравилось :) Та да, сам ору :) аааааааааааааааааааааааааааааааа А по делу написать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 16:26:07 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
BesZPА по делу написать? Leonidv вам уже написал или вам это не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 16:28:46 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
мэн, понятно с трудом чего тебе надо от жабы пока понятно: 1. тебе нужна конфигуряемая читалка (вместо генерения классов), т.е. она сначала конфигуряется читая файло формата, потом читает файлы этого формата 2. подобные читалки (builder, factory) обычно делают из нескольких под-читалок (на каждое поле), которые активизируются главное читалкой в нужной последовательности (state machine). patterns: builder, factory, state machine ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 16:42:21 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
exppмэн, понятно с трудом чего тебе надо от жабы пока понятно: 1. тебе нужна конфигуряемая читалка (вместо генерения классов), т.е. она сначала конфигуряется читая файло формата, потом читает файлы этого формата 2. подобные читалки (builder, factory) обычно делают из нескольких под-читалок (на каждое поле), которые активизируются главное читалкой в нужной последовательности (state machine). patterns: builder, factory, state machine Не, читать файл формата я не собираюсь, т.к. 1. он для меня недоступен; 2. он сам записан в хрен знает каком формате и чтобы его прочитать, надо еще чегото прочитать :) - опа замутили ) Мне нужен такой шаблон, чтобы я без проблем мог использовать сгенерированные классы для распарсивания строк. Т.е. если бы эти классы генерировались всего один раз, то и обычная фэктори бы подошла, а тут получается сегодня я работаю с одним набором сгенерированных классов, а завтра пропатчилось ПО в черном ящике, смещения и длины полей стали другими - надо снова генерить очередной набор классов. Нужен шаблон который бы без особых затруднений позволял мне подключать новый набор сгенерированных классов. Пока я себе это вижу как фэктори->subфэктори. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 17:16:03 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
путь тебе твой ящщег выдаёт удобоваримый конфиг, генерация/загрузка классов тут не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 17:31:04 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
Ключевой момент - что вы с ними (сообщениями, данными) дальше будете делать. Пока этого не решите, будут у вас проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 17:38:22 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
exppпуть тебе твой ящщег выдаёт удобоваримый конфиг, генерация/загрузка классов тут не нужны. не может он выдать такой конфиг, т.к. разработчики (hp) не заложили такой возможности :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 17:51:52 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
LeonidvКлючевой момент - что вы с ними (сообщениями, данными) дальше будете делать. Пока этого не решите, будут у вас проблемы. все распарсенные данные будут заливаться в БД, что еще влечет за собой кучу ручной работы :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 17:55:47 |
|
||
|
Нужен шаблон
|
|||
|---|---|---|---|
|
#18+
Ну тогда все очень просто. Базовый класс должен содержать только один метод - что типа writeToDB или getSQL(). Можно легко сделать так, как я описал. Если не понимаете что я написал - читайте книги по паттернам. Если сложность в динамическом подключение файлов, можно написать собственный загрузчик классов. Тогда для каждого типа сообщений написать свой построитель, который определяет подходит ли он или нет. В построителе (в моем случае, TMessageCreator) нужно регистрировать построители конкретных классов. То есть код считывания очередного сообщения в TMessageCreator будет чем-то вроде. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2007, 13:00:38 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34614281&tid=2145333]: |
0ms |
get settings: |
17ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
67ms |
get topic data: |
18ms |
get forum data: |
5ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
| others: | 292ms |
| total: | 507ms |

| 0 / 0 |
