В моем приложении есть следующий Java-бин
public class Status{
private String statusType;
private String status;
private String statusCode;
//getters and setters
}
public class Associate{
private String name;
private String id;
private List<Status> statuses;
//getters & setters
}
И возможные значения для Status.statusTypes: {"O", "P", "R", "S", "A"}. Теперь мне нужно отобразить состояния как часть Associate mapper, но отображение должно возвращать только status и statusType, если statusType соответствует любому из {"O", "A", "P"}?
На данный момент я делаю пользовательский метод по умолчанию в маппере, как показано ниже
public AssociateMapper{
Predicate<Status> status = (sts) -> null != sts &&null!=sts.getStatusType
&& "O|A|P".contains(sts.getStatusType());
@Mappings({
//some mappings
@Mapping(target = "statuses", expression = "java(associate.getStatuses().stream().filter(status).collect(Collectors.toList()))" )
})
Associate mapAssociate(Associate associate);
}
Есть ли какой-нибудь элегантный способ использования самого конфига mapStruct?