package p.packer.building; import java.nio.file.Path; import java.util.List; import java.util.Objects; public record PackerPlannedAsset( int assetId, String assetUuid, String assetName, String assetFamily, String relativeRoot, String outputFormat, String outputCodec, boolean preload, List inputs, Path assetRoot) { public PackerPlannedAsset { assetUuid = Objects.requireNonNull(assetUuid, "assetUuid").trim(); assetName = Objects.requireNonNull(assetName, "assetName").trim(); assetFamily = Objects.requireNonNull(assetFamily, "assetFamily").trim(); relativeRoot = Objects.requireNonNull(relativeRoot, "relativeRoot").trim(); outputFormat = Objects.requireNonNull(outputFormat, "outputFormat").trim(); outputCodec = Objects.requireNonNull(outputCodec, "outputCodec").trim(); inputs = List.copyOf(Objects.requireNonNull(inputs, "inputs")); assetRoot = Objects.requireNonNull(assetRoot, "assetRoot").toAbsolutePath().normalize(); if (assetId <= 0 || assetUuid.isBlank() || assetName.isBlank() || relativeRoot.isBlank() || outputFormat.isBlank() || outputCodec.isBlank()) { throw new IllegalArgumentException("planned asset fields must be valid"); } } }