ToDomainModelTransformer.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 DTO to Domain types.
*
* @param <DTO> DTO type
* @param <DOMAIN> Domain type
*
* @author Dariusz Wakuliński
*/
public interface ToDomainModelTransformer<DTO, DOMAIN> {
/**
* Transform instance of DTO type to Domain type.
*
* @param dto Instance to transform
* @return Transformed instance
*/
DOMAIN toDomain(DTO dto);
/**
* Transform collection of instances of DTO type to {@link List} of Domain type.
* Default implementation uses {@link #toDomain} method to transform the collection.
*
* @param dtos Instances to transform
* @return Transformed instances
*/
default List<DOMAIN> toDomain(Collection<DTO> dtos) {
return dtos.stream().map(dto -> toDomain(dto)).collect(toList());
}
}