Проинструктируйте orika, когда следует отображать

Есть ли способ конкретно сказать Орике, когда отображать данный элемент? Например, я хочу, чтобы Orika отображала мои элементы, только если A.getLastModifiedTime() > B.getLastModifiedTime. Есть ли способ настроить это как-то?


person Petar Tahchiev    schedule 28.08.2015    source источник


Ответы (2)


Это должно помочь:

mapperFactory.classMap(A.class, B.class)
        .customize(new CustomMapper<A,B>() { 
                if(A.getLastModifiedTime() > B.getLastModifiedTime()){
                        A.getLastModifiedTime() == B.getLastModifiedTime();
                }
         }).register();
person Vilius    schedule 16.01.2016

Вы можете использовать фильтры Orika, чтобы отображать или не отображать поле в зависимости от условий выполнения. Самый простой способ — расширить NullFilter Orika.

class MyFilter<A,B> extends NullFilter<A,B> {

    private myCondition(S source, D dest) {
      ...
    }

    public <S extends A, D extends B> boolean shouldMap(final Type<S> sourceType, final String sourceName, final S source, final Type<D> destType, final String destName,
                                                        final MappingContext mappingContext) {
        if (destName.equals("lastModifiedTime") && myCondition(source, dest)) {
          return false;
        } 

        return true;    
    }
}
person Manolo Santos    schedule 10.02.2016