2016-05-24 2 views
0

Я пишу картографию для отображения полей двух разных POJO в java. Я использовал Dozer mapper для простого сопоставления, но в этом случае у меня есть немного сложная стратегия, когда нужно установить значение целевому объекту. Геттер прост, но вместо этого он устанавливает его напрямую, я хочу сделать некоторую обработку по значению.Mapper для POJO в Java

Мой вопрос: могу ли я использовать преобразователь бульдозера для моей причины? В случае, если это невозможно, хорошо ли (с точки зрения производительности) использовать отражение для реализации моего собственного картографа (это связано с тем, что я определил отображение в XML-файле и не хочу его жестко кодировать в классе mapper) ?

<mapping> 
    <field> 
    <!-- source --> 
    <field-a name="cat"> 
    <!-- destination --> 
    <field-b" name="dog"> 
    </field> 
</mapping> 

Относится к этому XML, я хочу следующее:

Source c; 
Destination d; 
d.setDog(someProcessing(c.getPsMessage())); 

Примечание вниз дополнительной обработки (someProcessing) после получения значения и перед установкой его в объект назначения.

+1

пожалуйста, вы можете положить пример namings? –

+2

Трудно понять, что вы хотите, включить некоторые соответствующие фрагменты кода –

+0

Я добавил фрагмент кода, чтобы быть более понятным в достижении того, чего я пытаюсь достичь. Также немного обновите вопрос. –

ответ

3

Вы можете установить own getters-setters methods with Dozer. Вы можете даже карта атрибутов с различным типом и именем !:

Пример:

<field> 
    <a>yourField</a> 
    <b set-method="nameOfYourFieldSetter(java.lang.String)"> 
     nameOfYourFieldInOtherClass 
    </b> 
</field> 

Примечание вниз дополнительную обработку (someProcessing) после получения значения и перед установкой его в объект назначения ,

Вы усложнять вещи, использовать принцип целования

Source c; 
Destination d; 
// String, Integer or what someProcessing returns! 
String name = someProcessing(c.getPsMessage()); 
d.setDog(name); 
+0

Извините, я немного изменил свой вопрос. Мне нужно сделать некоторую обработку, прежде чем я могу назначить поле целевому объекту. –

+0

@ObaidMaroof, пожалуйста, проверьте мое редактирование, я думаю, вы можете упростить свой код и использовать его как это ...;) –

Смежные вопросы