В приложении Java на основе базы данных Oracle SQL мне нужно решить следующую проблему:
Сущность DataDelivery
может состоять из любого числа Packet
. Packet
имеет PacketStatus
, а внешний ключ datadeliveryid
.
PacketStatus
- это Enum со значениями:
0, processed
1, processing
2, error
3, waiting
Числовое значение c сохраняется в столбце PacketStatus
в таблице PACKET.
На мой взгляд, я хочу отобразить DataDelivery
в виде строк таблицы, включая столбец, который отображает объединенное состояние всех соответствующих пакетов. Объединенный статус Пакетов должен быть определен согласно логике c ниже:
Если какой-либо один Пакет, относящийся к DataDelivery, имеет статус «ошибка»: столбец просмотра должен отображать « ошибка. Если все пакеты, относящиеся к DataDelivery, имеют статус «обработан»: столбец просмотра должен отображать «обработано».
Если все пакеты, относящиеся к DataDelivery, имеют статус «обработка»: столбец просмотра должен отображать «обработка».
Если все пакеты, относящиеся к DataDelivery, имеют статус «обработан» или «обработка»: в столбце просмотра должно отображаться «обработка».
Во всех остальных случаях в столбце просмотра должно отображаться: «ошибка».