PlaylistAssembler.java
/**
* @file PlaylistAssembler.java
* @brief Provides conversion methods between Playlist and PlaylistDTO.
*/
package com.deusto.deuspotify.assembler;
import com.deusto.deuspotify.model.Playlist;
import com.deusto.deuspotify.model.Song;
import com.deusto.deuspotify.DTO.PlaylistDTO;
import com.deusto.deuspotify.DTO.SongDTO;
import java.util.List;
import java.util.stream.Collectors;
/**
* @class PlaylistAssembler
* @brief Utility class to convert between Playlist entities and PlaylistDTOs.
*/
public class PlaylistAssembler {
/**
* @brief Converts a Playlist entity to a PlaylistDTO.
* @param playlist The Playlist entity to convert.
* @return The resulting PlaylistDTO, or null if the input is null.
*/
public static PlaylistDTO toDTO(Playlist playlist) {
if (playlist == null) return null;
List<SongDTO> songDTOs = SongAssembler.toDTOList(playlist.getSongs());
return new PlaylistDTO(
playlist.getId(),
playlist.getName(),
playlist.getOwners(),
playlist.isPublic(),
songDTOs,
playlist.getNumberOfSongs(),
playlist.getOrder()
);
}
/**
* @brief Converts a PlaylistDTO to a Playlist entity.
* @param dto The PlaylistDTO to convert.
* @return The resulting Playlist entity, or null if the input is null.
*/
public static Playlist toEntity(PlaylistDTO dto) {
if (dto == null) return null;
List<Song> songs = SongAssembler.toEntityList(dto.getSongs());
Playlist playlist = new Playlist();
playlist.setId(dto.getId());
playlist.setName(dto.getName());
playlist.setOwners(dto.getOwners());
playlist.setPublic(dto.isPublic());
playlist.setSongs(songs);
playlist.setOrder(dto.getOrder());
return playlist;
}
/**
* @brief Converts a list of Playlist entities to a list of PlaylistDTOs.
* @param playlists List of Playlist entities.
* @return List of PlaylistDTOs, or null if input is null.
*/
public static List<PlaylistDTO> toDTOList(List<Playlist> playlists) {
if (playlists == null) return null;
return playlists.stream()
.map(PlaylistAssembler::toDTO)
.collect(Collectors.toList());
}
/**
* @brief Converts a list of PlaylistDTOs to a list of Playlist entities.
* @param dtos List of PlaylistDTOs.
* @return List of Playlist entities, or null if input is null.
*/
public static List<Playlist> toEntityList(List<PlaylistDTO> dtos) {
if (dtos == null) return null;
return dtos.stream()
.map(PlaylistAssembler::toEntity)
.collect(Collectors.toList());
}
}