EnrichedEntityMapper.java
package com.wilzwert.myjobs.infrastructure.mapper;
import com.wilzwert.myjobs.core.domain.shared.pagination.DomainPage;
import com.wilzwert.myjobs.infrastructure.api.rest.dto.RestPage;
import java.util.List;
/**
* @author Wilhelm Zwertvaegher
X for the enriched domain class
*/
public interface EnrichedEntityMapper<D, E, R, C, A, U, S, X> extends EntityMapper<D, E, R, C, A, U, S> {
default S toEnrichedResponse(X extended) {
throw new MapperMissingImplementation("enriched entity mapping must be implemented in actual mapper before use");
}
default List<S> toEnrichedResponse(List<X> extended) {
return extended.stream().map(this::toEnrichedResponse).toList();
}
default RestPage<S> toEnrichedResponse(DomainPage<X> domain) {
return new RestPage<>(
toEnrichedResponse(domain.getContent()),
domain.getCurrentPage(),
domain.getPageSize(),
domain.getTotalElementsCount(),
domain.getPageCount()
);
}
}