|
|
|
Использование статик данных из БД
|
|||
|---|---|---|---|
|
#18+
Задача в следующем: в сетевой папке с определенной частотой выкладываются файлы с данными. Эти файлы парсятся по таймеру и данные сохраняются в базу данных. Каждая строчка в файле представляет информацию о заказе и содержит следующий список полей Код: plaintext 1. 2. 3. 4. Тип заказа может быть: обычный, срочный и т.д. (может быть расширен в процессе жизни) Дата доставки вычисляется на основе сроков доставки списка материалов и их сборки, т.е. это макс дата одного из материалов + срок сборки. Но при этом необходимо рассчитать дату сборки по рабочему календарю. Важное условие, что эти справочные данные изменяются сторонним приложением. Сразу оговорюсь, я новичок в java. Прошу Вашего совета в следующих проблемах: 1. Для типов заказа хочу использовать класс, в котором будет описана map-а. Не представляю, как синхронизировать доступы получения id типа, обновления списка типов в map-е и т.п. Думаю, для таких целей у многих уже есть наработки, поделитесь пож-ла материалами или статьями по этой теме (в поисковиках не могу найти, не соображу по каким тегам искать). 2. Рабочий день определяется по одному из правил А или В плюс этот же день может быть использован несколько раз при расчетах. Правила не меняются часто, но могут быть изменены (так же сторонним приложением). Поэтому хочу создать мар-у, которая будет содержать все эти дни и заполнятся она будет по требованию. Для этого хочу создать два класса Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. и использовать везде CashTimetable для получения рабочего интервала. Но возникают проблемы: необходимо проверять обновились ли правила, если да, то необходимо перестроить календарь, а если уже часть расчета даты доставки рассчитана и происходит перерасчет календаря плюс синхронный доступ к календарю. Не знаю, в каком направлении искать информацию. Помогите, пожалуйста, советом, идей, ссылками на статьи, которые помогут решить мою проблему Заранее благодарю за помощь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 12:50 |
|
||
|
Использование статик данных из БД
|
|||
|---|---|---|---|
|
#18+
ZahcСразу оговорюсь, я новичок в java. Прошу Вашего совета в следующих проблемах: 1. Для типов заказа хочу использовать класс, в котором будет описана map-а. Не представляю, как синхронизировать доступы получения id типа, обновления списка типов в map-е и т.п. Думаю, для таких целей у многих уже есть наработки, поделитесь пож-ла материалами или статьями по этой теме (в поисковиках не могу найти, не соображу по каким тегам искать). Hibernate, JPA - не?! Zahc 2. Рабочий день определяется по одному из правил А или В плюс этот же день может быть использован несколько раз при расчетах. Правила не меняются часто, но могут быть изменены (так же сторонним приложением). Поэтому хочу создать мар-у, которая будет содержать все эти дни и заполнятся она будет по требованию. Для этого хочу создать два класса По рабочем дням. Если есть возможность, то протолкните идею: Календарь рабочих и праздничных дней на год. Т.е. "таблица" приблизительно такого вида: datetime fromWork datetiem toWrok Соответственно ее можно будет редактировать. Т.к. Могут быть не только праздничные дни, но и сокращенные. Переносы праздничных дней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 09:40 |
|
||
|
Использование статик данных из БД
|
|||
|---|---|---|---|
|
#18+
mad_nazgul... Hibernate, JPA - не?! ORM в моем случае не подходит: требование задачи и у меня в них опыта нет mad_nazgul... По рабочем дням. Если есть возможность, то протолкните идею: Календарь рабочих и праздничных дней на год. Т.е. "таблица" приблизительно такого вида: datetime fromWork datetiem toWrok Соответственно ее можно будет редактировать. Т.к. Могут быть не только праздничные дни, но и сокращенные. Переносы праздничных дней. Немного не туда. Я не могу влиять на структуру таблиц, они уже рабочие. Таблицы вида: Таблица правил №1 (содержит информацию о графике работы для каждого дня недели, кроме сб и вс): DateFrom – дата, с которой действует данное правило DateTill – дата, до которой действует данное правило, всегда пустое для последнего правила TimeStart1 - время начала первой смены Duration1 - продолжительность работы первой смены TimeStart2 - время начала работы второй смены Duration2 - ... Далее описывать поля не буду, так как логика похожа Таблица правил №2 (содержит график работы для определенного дня - своего рода исключения): Date TimeStart1 Duration1 TimeStart2 Duration2 Таблица перерывов: DateFrom DateTill TimeStart Duration В результате день формируется по следующей логике: 1. Запрашиваемый день пытаемся найти в правилах №2, если есть, строим на его основе 2. Нет в таблице с правилами №2 -> проверяем не является ли запрашиваемый день сб или вс, если это сб или вс формируем пустой день 3. Если не выполняется п. 1 или 2, значит формируем день на основе данных таблицы правил №1 4. Далее добавляем в рабочие периоды информацию о перерывах В общих словах список рабочих дней должен строится по такой схеме. Я хочу сохранять сформированный день в мапу, что бы повторно не переформировывать его, так как этот день снова понадобиться и держать в мапе всегда примерно один месяц вперед, так как он постоянно будет востребован. Попробую с другой стороны объяснить проблему: Из выше описанного думаю архитектура должна быть следующей CachRule - содержит списки правил, по которым будет формировать рабочий день, а также следит сам за синхронизацией данных Timetable CachRule.getDay(Date dt) - возвращает график рабочих периодов, которые формируются по выше описанной логике. Если день выходной, праздничный или сб/вс возвращает null ProductionCalendar - класс, через который будет происходить запрос рабочих дней. Класс содержит мапу ProductionDay ProductionCalendar.getDay(Date dt) - возвращает объект, который описывает рабочий день. Т.е. в нем происходит проверка наличия dt в мапе и если ее нет, выполняется запрос рабочих периодов из CachRule.getDay(Date dt) и создается ProductionDay, который добавляется в мапу и возвращается 1. Логика обслуживания CachRule похожа на мою проблема с типами заказов 2. Если в CachRule происходит обновление правил, то мапа в ProductionCalendar должна быть пересчитана для всех существующих дней. Как это сделать примерно понимаю) 3. Если в процессе расчета, пока выполняется расчет от даты А до В, происходит изменение календаря, который затронул уже рассчитанные дни, как сообщить методу, что календарь перерассчитан и необходимо перезапустить процесс расчета даты доставки? Как в таких случаях поступают, как организовывают работу классов, что бы поддержать такую ситуацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 12:17 |
|
||
|
Использование статик данных из БД
|
|||
|---|---|---|---|
|
#18+
Zahcmad_nazgul... Hibernate, JPA - не?! ORM в моем случае не подходит: требование задачи и у меня в них опыта нет Тады ой. Zahc1. Логика обслуживания CachRule похожа на мою проблема с типами заказов 2. Если в CachRule происходит обновление правил, то мапа в ProductionCalendar должна быть пересчитана для всех существующих дней. Как это сделать примерно понимаю) 3. Если в процессе расчета, пока выполняется расчет от даты А до В, происходит изменение календаря, который затронул уже рассчитанные дни, как сообщить методу, что календарь перерассчитан и необходимо перезапустить процесс расчета даты доставки? Как в таких случаях поступают, как организовывают работу классов, что бы поддержать такую ситуацию? В общем все плохо. Ну пожелаю вам удачи. Т.к. с данными типами что-то сделать довольно трудно, но можно, но долго и с ошибками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 13:58 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38684766&tid=2126965]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
184ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 499ms |

| 0 / 0 |
