package p.packer.services; import p.packer.assets.PackerAssetDetailsDTO; import p.packer.assets.PackerAssetIdentityDTO; import p.packer.assets.PackerAssetSummaryDTO; import p.packer.assets.PackerCodecConfigurationFieldDTO; import p.packer.diagnostics.PackerDiagnosticDTO; import p.packer.models.PackerAssetDetails; import p.packer.models.PackerAssetIdentity; import p.packer.models.PackerAssetSummary; import p.packer.models.PackerCodecConfigurationField; import p.packer.models.PackerDiagnostic; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public final class PackerReadMessageMapper { private PackerReadMessageMapper() { } public static PackerAssetSummaryDTO toAssetSummaryDTO(PackerAssetSummary summary) { return new PackerAssetSummaryDTO( summary.assetReference(), toAssetIdentityDTO(summary.identity()), summary.state(), summary.buildParticipation(), summary.assetFamily(), summary.preloadEnabled(), summary.hasDiagnostics()); } public static PackerAssetDetailsDTO toAssetDetailsDTO(PackerAssetDetails details) { return new PackerAssetDetailsDTO( toAssetSummaryDTO(details.summary()), details.outputFormat(), details.outputCodec(), details.availableOutputCodecs(), toCodecConfigurationFieldsByCodecDTO(details.codecConfigurationFieldsByCodec()), details.inputsByRole(), toDiagnosticDTOs(details.diagnostics())); } public static List toAssetSummaryDTOs(List summaries) { return summaries.stream().map(PackerReadMessageMapper::toAssetSummaryDTO).toList(); } public static List toDiagnosticDTOs(List diagnostics) { return diagnostics.stream().map(PackerReadMessageMapper::toDiagnosticDTO).toList(); } private static PackerAssetIdentityDTO toAssetIdentityDTO(PackerAssetIdentity identity) { return new PackerAssetIdentityDTO( identity.assetId(), identity.assetUuid(), identity.assetName(), identity.assetRoot()); } private static Map> toCodecConfigurationFieldsByCodecDTO( Map> fieldsByCodec) { return fieldsByCodec.entrySet().stream().collect(Collectors.toMap( Map.Entry::getKey, entry -> entry.getValue().stream().map(PackerReadMessageMapper::toCodecConfigurationFieldDTO).toList(), (left, right) -> left, java.util.LinkedHashMap::new)); } private static PackerCodecConfigurationFieldDTO toCodecConfigurationFieldDTO(PackerCodecConfigurationField field) { return new PackerCodecConfigurationFieldDTO( field.key(), field.label(), field.fieldType(), field.value(), field.required(), field.options()); } private static PackerDiagnosticDTO toDiagnosticDTO(PackerDiagnostic diagnostic) { return new PackerDiagnosticDTO( diagnostic.severity(), diagnostic.category(), diagnostic.message(), diagnostic.evidencePath(), diagnostic.blocking()); } }