Orika необязательное преобразование / отображение во время выполнения - PullRequest
1 голос
/ 31 марта 2019

Я использую Orika mapper, чтобы избежать шаблонных конвертеров и у меня есть интересная проблема. Чтобы упростить разработку, мне нужно создать аннотацию, которая будет определять, когда отображать значение, а когда оставить его как есть (не ноль или значение по умолчанию, просто как есть).

Представьте, что у нас есть 2 класса:

class Dto {
    public int id;
    public String name;
}

class Entity {
    public int id;
    public String name;
}

Dto приходит из Front-end, и мы хотим отобразить имя поля на сущность, только если оно начинается с чего-то вроде:

if {dto.name.startsWith("A")}
    entity.name = dto.name;

И во многих классах нам нужна похожая логика - меняется только начальная строка.

Итак, я хочу создать аннотацию @IfStartsWith(String startsWith) и сделать следующее:

class Entity{
    public int id;
    @IfStartsWith("A")
    public String name;
}

При запуске проекта я хочу настроить Orika mapper на чтение этой аннотации из необходимых классов и настроить динамическое отображение в зависимости от этого.

Здесь важно то, что я не могу использовать default (пустую или пустую строку), потому что мне нужно оставить целевое значение как есть, если проверка не удалась «Как есть» означает либо значение, которое находится в существующем целевом объекте, либо значение класса по умолчанию (установлено как public String name = "My name";)

Я знаю, как получать аннотации из полей, и теперь это работает, но вопросы:

Что я должен использовать : преобразователь уровня поля или настройка на уровне класса?

Есть ли способ избежать отражения в настройках значения поля внутри этих пользовательских преобразователей / картографов?

...