LINUX.ORG.RU

Вопрос к старшим коллегам по поводу аннотаций

 ,


0

1

У меня в приложении есть SomeDtoView (GWT'шный MVP), который отображает часть основной информации о SomeDtoEntity.

Фишка в том, что сейчас я создал две View для процедуры создания новой Dto (меньшее количество полей) и для редактирования существующей (большее количество полей).

Классы на 75% пересекаются по функциональности.

Есть ли возможность с помощью аннотаций пометить некоторые поля класса как добавляемые в случае «создания», а другие - как добавляемые в случае «редактирования» и объединить 2 вьюшки? Либо делать класс с общей функциональностью, а потом наследованием сделать «уточнённые» вьюшки?

Просто поддержка 2 вьюшек немного напряжна (в действительности, там чуть больше уровней «компактности» представления) и хочется переиспользовать большую часть кода.

Аналогичная проблема для соотвествующих Presenter'ов.

Deleted

Т.е. пусть у нас будет

public class DtoView {
    private final TextField name;
    private final TextField comment;

    private final TextField someDate;
}

public class CreateDtoView {
    private final TextField name;
    private final TextField comment;
}

Фактически, someDate мне нужен только при редактировании, а не при создании. Как бы его пометить, чтобы уменьшить количество кода? То есть отображать опционально.

Ну и сохранять в SomeDtoEntity тоже опционально (только если отображается).

Deleted
()

Я бы сделал так.

public class DtoView {
    private final TextField name;
    private final TextField comment;
}

public class DtoViewDetail extends DtoView {
    private final TextField someDate;
}

hippi90 ★★★★★
()
Ответ на: комментарий от hippi90

Hibernate + Dozer. Правда, я занимаюсь только клиентским кодом, сервисами и сервером занимается коллега.

Deleted
()
Ответ на: комментарий от hippi90

Фактически вынести CommonView а остальные с помощью наследования реализовать?

Хм, хорошо, пусть будет так.

Теперь надо придумать, как реализовать interface Display, но это я уже сам попробую.

Deleted
()
Последнее исправление: merhalak (всего исправлений: 1)
Ответ на: комментарий от Deleted

Hibernate умеет в наследование для Entity, можно замапить на одну таблицу два класса: базовый и производный. Это сделает работу с данными более простой и прозрачной.

hippi90 ★★★★★
()
Ответ на: комментарий от hippi90

Про это знаю. Меня больше волнуют преобразования Entity -> DtoEntity -> [Presenter] -> View.

То что на серваке - не моя область, мне там делать нечего, иначе конфликты возникать будут.

Скажем так, меня даже преобразование Entity -> DtoEntity мало касается, главное чтоб не рекурсивно мапили всё, да данных хватало для отображения.

Deleted
()
Последнее исправление: merhalak (всего исправлений: 1)
Ответ на: комментарий от Deleted

отображать опционально
сохранять тоже опционально

ну есть Optional например. Можно сделать AtomicReference, можно вообще извратиться и сделать singletonList().

upcFrost ★★★★★
()
Ответ на: комментарий от upcFrost

Optional в GWT?

Кстати да, у меня версия 2.6.1, так что фич Java 8 - нет.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.