2012-05-10 1 views
0

Я использую бульдозер для сопоставления между моими объектами модели и моими DTO. Теперь я сталкиваюсь с проблемой, что мне нужно сопоставить некоторые свойства classA.classC с различными свойствами classB, но сначала мне нужно проверить на несогласованность, потому что, если я не classC будет вызывать исключения и отображение не будет работать.Мне нужно проверить достоверность данных до глубокого картографирования с помощью бульдозера, не так ли?

Так предположит, что у меня есть:

class ClassA { 

    private String name; 
    private ClassC c; 


    public ClassC getC() throws ValidityException; 
} 

class ClassB { 

    private String code; 
    private Integer value; 

} 

class ClassC { 

    private String name; 
    private Integer value; 

    // Getters & Setters below 
} 

Так что теперь я хочу, чтобы отобразить так:

<mapping> 
    <class-a>ClassA</class-a> 
    <class-b>ClassB</class-b> 
    <field> 
     <a>c.name</a> 
     <b>code</b> 
    </field> 
    <field> 
     <a>c.value</a> 
     <b>value</b> 
    </field> 
</mapping> 

, если доступ к экземпляру ClassC от экземпляра CLASSA бросает исключение, мне нужно будет карта нуля для обоих свойств b. Из того, что я читал, я предполагаю, что я должен использовать CustomConverter, чтобы получить доступ к экземпляру ClassC, чтобы исключить и отобразить null в этом случае, но не знаю, как я могу реализовать такой конвертер.

Любой может дать мне несколько идей о том, как это можно реализовать с помощью Dozer?

ответ

0

Вы уверены, что создали правильное отображение? Потому что,

<field> 
    <a>c.name</a> 
    <b>name</b> 

В приведенном фрагменте, Вы писали имя ClassB. На самом деле это должен быть код.

+0

Да, я исправлю это, спасибо, к несчастью, это не изменит многие понятия в проблеме. –

+0

По умолчанию dozer имеет map-null = "true". Поэтому, даже если атрибуты sorce равны нулю, они будут отображаться. Поправьте меня, если я что-то пропустил. –