ToDtoModelTransformer.java
/*
* Copyright © 2015 The Authors
*
* https://www.gnu.org/licenses/lgpl-3.0-standalone.html
*/
package org.interstellarocean.terraforming;
import static java.util.stream.Collectors.toList;
import java.util.Collection;
import java.util.List;
/**
* Unidirectional model transformer from Domain to DTO types.
*
* @param <DOMAIN> Domain type
* @param <DTO> DTO type
*
* @author Dariusz Wakuliński
*/
public interface ToDtoModelTransformer<DOMAIN, DTO> {
/**
* Transform instance of Domain type to DTO type.
*
* @param domain Instance to transform
* @return Transformed instance
*/
DTO toDto(DOMAIN domain);
/**
* Transform collection of instances of Domain type to {@link List} of DTO type.
* Default implementation uses {@link #toDto} method to transform the collection.
*
* @param domains Instances to transform
* @return Transformed instances
*/
default List<DTO> toDto(Collection<DOMAIN> domains) {
return domains.stream().map(domain -> toDto(domain)).collect(toList());
}
}