implement PR-19 api read dto separation and model mapping
This commit is contained in:
parent
59e1ad5ecf
commit
2d923455f5
@ -0,0 +1,28 @@
|
|||||||
|
package p.packer.assets;
|
||||||
|
|
||||||
|
import p.packer.diagnostics.PackerDiagnosticDTO;
|
||||||
|
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public record PackerAssetDetailsDTO(
|
||||||
|
PackerAssetSummaryDTO summary,
|
||||||
|
String outputFormat,
|
||||||
|
OutputCodecCatalog outputCodec,
|
||||||
|
List<OutputCodecCatalog> availableOutputCodecs,
|
||||||
|
Map<OutputCodecCatalog, List<PackerCodecConfigurationFieldDTO>> codecConfigurationFieldsByCodec,
|
||||||
|
Map<String, List<Path>> inputsByRole,
|
||||||
|
List<PackerDiagnosticDTO> diagnostics) {
|
||||||
|
|
||||||
|
public PackerAssetDetailsDTO {
|
||||||
|
Objects.requireNonNull(summary, "summary");
|
||||||
|
outputFormat = Objects.requireNonNullElse(outputFormat, "unknown").trim();
|
||||||
|
outputCodec = Objects.requireNonNullElse(outputCodec, OutputCodecCatalog.UNKNOWN);
|
||||||
|
availableOutputCodecs = List.copyOf(Objects.requireNonNull(availableOutputCodecs, "availableOutputCodecs"));
|
||||||
|
codecConfigurationFieldsByCodec = Map.copyOf(Objects.requireNonNull(codecConfigurationFieldsByCodec, "codecConfigurationFieldsByCodec"));
|
||||||
|
inputsByRole = Map.copyOf(Objects.requireNonNull(inputsByRole, "inputsByRole"));
|
||||||
|
diagnostics = List.copyOf(Objects.requireNonNull(diagnostics, "diagnostics"));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
package p.packer.assets;
|
||||||
|
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public record PackerAssetIdentityDTO(
|
||||||
|
Integer assetId,
|
||||||
|
String assetUuid,
|
||||||
|
String assetName,
|
||||||
|
Path assetRoot) {
|
||||||
|
|
||||||
|
public PackerAssetIdentityDTO {
|
||||||
|
assetUuid = assetUuid == null ? null : assetUuid.trim();
|
||||||
|
assetName = Objects.requireNonNull(assetName, "assetName").trim();
|
||||||
|
assetRoot = Objects.requireNonNull(assetRoot, "assetRoot").toAbsolutePath().normalize();
|
||||||
|
if (assetName.isBlank()) {
|
||||||
|
throw new IllegalArgumentException("assetName must not be blank");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
package p.packer.assets;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public record PackerAssetSummaryDTO(
|
||||||
|
AssetReference assetReference,
|
||||||
|
PackerAssetIdentityDTO identity,
|
||||||
|
PackerAssetState state,
|
||||||
|
PackerBuildParticipation buildParticipation,
|
||||||
|
AssetFamilyCatalog assetFamily,
|
||||||
|
boolean preloadEnabled,
|
||||||
|
boolean hasDiagnostics) {
|
||||||
|
|
||||||
|
public PackerAssetSummaryDTO {
|
||||||
|
Objects.requireNonNull(assetReference, "assetReference");
|
||||||
|
Objects.requireNonNull(identity, "identity");
|
||||||
|
Objects.requireNonNull(state, "state");
|
||||||
|
Objects.requireNonNull(buildParticipation, "buildParticipation");
|
||||||
|
assetFamily = Objects.requireNonNullElse(assetFamily, AssetFamilyCatalog.UNKNOWN);
|
||||||
|
if (state == PackerAssetState.REGISTERED && identity.assetId() == null) {
|
||||||
|
throw new IllegalArgumentException("registered asset must expose assetId");
|
||||||
|
}
|
||||||
|
if (state == PackerAssetState.UNREGISTERED && buildParticipation != PackerBuildParticipation.EXCLUDED) {
|
||||||
|
throw new IllegalArgumentException("unregistered asset must stay excluded from build participation");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
package p.packer.assets;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public record PackerCodecConfigurationFieldDTO(
|
||||||
|
String key,
|
||||||
|
String label,
|
||||||
|
PackerCodecConfigurationFieldType fieldType,
|
||||||
|
String value,
|
||||||
|
boolean required,
|
||||||
|
List<String> options) {
|
||||||
|
|
||||||
|
public PackerCodecConfigurationFieldDTO {
|
||||||
|
key = Objects.requireNonNull(key, "key").trim();
|
||||||
|
label = Objects.requireNonNull(label, "label").trim();
|
||||||
|
Objects.requireNonNull(fieldType, "fieldType");
|
||||||
|
value = Objects.requireNonNullElse(value, "").trim();
|
||||||
|
options = List.copyOf(Objects.requireNonNull(options, "options"));
|
||||||
|
if (key.isBlank() || label.isBlank()) {
|
||||||
|
throw new IllegalArgumentException("codec configuration field key and label must not be blank");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package p.packer.diagnostics;
|
||||||
|
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public record PackerDiagnosticDTO(
|
||||||
|
PackerDiagnosticSeverity severity,
|
||||||
|
PackerDiagnosticCategory category,
|
||||||
|
String message,
|
||||||
|
Path evidencePath,
|
||||||
|
boolean blocking) {
|
||||||
|
|
||||||
|
public PackerDiagnosticDTO {
|
||||||
|
Objects.requireNonNull(severity, "severity");
|
||||||
|
Objects.requireNonNull(category, "category");
|
||||||
|
message = Objects.requireNonNull(message, "message").trim();
|
||||||
|
evidencePath = evidencePath == null ? null : evidencePath.toAbsolutePath().normalize();
|
||||||
|
if (message.isBlank()) {
|
||||||
|
throw new IllegalArgumentException("message must not be blank");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,8 +1,8 @@
|
|||||||
package p.packer.messages;
|
package p.packer.messages;
|
||||||
|
|
||||||
import p.packer.PackerOperationStatus;
|
import p.packer.PackerOperationStatus;
|
||||||
import p.packer.assets.PackerAssetDetails;
|
import p.packer.assets.PackerAssetDetailsDTO;
|
||||||
import p.packer.diagnostics.PackerDiagnostic;
|
import p.packer.diagnostics.PackerDiagnosticDTO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -10,8 +10,8 @@ import java.util.Objects;
|
|||||||
public record GetAssetDetailsResult(
|
public record GetAssetDetailsResult(
|
||||||
PackerOperationStatus status,
|
PackerOperationStatus status,
|
||||||
String summary,
|
String summary,
|
||||||
PackerAssetDetails details,
|
PackerAssetDetailsDTO details,
|
||||||
List<PackerDiagnostic> diagnostics) {
|
List<PackerDiagnosticDTO> diagnostics) {
|
||||||
|
|
||||||
public GetAssetDetailsResult {
|
public GetAssetDetailsResult {
|
||||||
Objects.requireNonNull(status, "status");
|
Objects.requireNonNull(status, "status");
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package p.packer.messages;
|
package p.packer.messages;
|
||||||
|
|
||||||
import p.packer.PackerOperationStatus;
|
import p.packer.PackerOperationStatus;
|
||||||
import p.packer.diagnostics.PackerDiagnostic;
|
import p.packer.diagnostics.PackerDiagnosticDTO;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -11,7 +11,7 @@ public record InitWorkspaceResult(
|
|||||||
PackerOperationStatus status,
|
PackerOperationStatus status,
|
||||||
String summary,
|
String summary,
|
||||||
Path registryPath,
|
Path registryPath,
|
||||||
List<PackerDiagnostic> diagnostics) {
|
List<PackerDiagnosticDTO> diagnostics) {
|
||||||
|
|
||||||
public InitWorkspaceResult {
|
public InitWorkspaceResult {
|
||||||
Objects.requireNonNull(status, "status");
|
Objects.requireNonNull(status, "status");
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
package p.packer.messages;
|
package p.packer.messages;
|
||||||
|
|
||||||
import p.packer.PackerOperationStatus;
|
import p.packer.PackerOperationStatus;
|
||||||
import p.packer.assets.PackerAssetSummary;
|
import p.packer.assets.PackerAssetSummaryDTO;
|
||||||
import p.packer.diagnostics.PackerDiagnostic;
|
import p.packer.diagnostics.PackerDiagnosticDTO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -10,8 +10,8 @@ import java.util.Objects;
|
|||||||
public record ListAssetsResult(
|
public record ListAssetsResult(
|
||||||
PackerOperationStatus status,
|
PackerOperationStatus status,
|
||||||
String summary,
|
String summary,
|
||||||
List<PackerAssetSummary> assets,
|
List<PackerAssetSummaryDTO> assets,
|
||||||
List<PackerDiagnostic> diagnostics) {
|
List<PackerDiagnosticDTO> diagnostics) {
|
||||||
|
|
||||||
public ListAssetsResult {
|
public ListAssetsResult {
|
||||||
Objects.requireNonNull(status, "status");
|
Objects.requireNonNull(status, "status");
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
package p.packer.models;
|
package p.packer.models;
|
||||||
|
|
||||||
import p.packer.diagnostics.PackerDiagnostic;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package p.packer.assets;
|
package p.packer.models;
|
||||||
|
|
||||||
import p.packer.diagnostics.PackerDiagnostic;
|
import p.packer.assets.OutputCodecCatalog;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package p.packer.assets;
|
package p.packer.models;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -1,4 +1,9 @@
|
|||||||
package p.packer.assets;
|
package p.packer.models;
|
||||||
|
|
||||||
|
import p.packer.assets.AssetFamilyCatalog;
|
||||||
|
import p.packer.assets.AssetReference;
|
||||||
|
import p.packer.assets.PackerAssetState;
|
||||||
|
import p.packer.assets.PackerBuildParticipation;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -1,4 +1,6 @@
|
|||||||
package p.packer.assets;
|
package p.packer.models;
|
||||||
|
|
||||||
|
import p.packer.assets.PackerCodecConfigurationFieldType;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -1,4 +1,7 @@
|
|||||||
package p.packer.diagnostics;
|
package p.packer.models;
|
||||||
|
|
||||||
|
import p.packer.diagnostics.PackerDiagnosticCategory;
|
||||||
|
import p.packer.diagnostics.PackerDiagnosticSeverity;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -6,11 +6,8 @@ import p.packer.PackerProjectContext;
|
|||||||
import p.packer.assets.AssetFamilyCatalog;
|
import p.packer.assets.AssetFamilyCatalog;
|
||||||
import p.packer.assets.AssetReference;
|
import p.packer.assets.AssetReference;
|
||||||
import p.packer.assets.OutputFormatCatalog;
|
import p.packer.assets.OutputFormatCatalog;
|
||||||
import p.packer.assets.PackerAssetIdentity;
|
|
||||||
import p.packer.assets.PackerAssetState;
|
import p.packer.assets.PackerAssetState;
|
||||||
import p.packer.assets.PackerAssetSummary;
|
|
||||||
import p.packer.assets.PackerBuildParticipation;
|
import p.packer.assets.PackerBuildParticipation;
|
||||||
import p.packer.diagnostics.PackerDiagnostic;
|
|
||||||
import p.packer.diagnostics.PackerDiagnosticCategory;
|
import p.packer.diagnostics.PackerDiagnosticCategory;
|
||||||
import p.packer.diagnostics.PackerDiagnosticSeverity;
|
import p.packer.diagnostics.PackerDiagnosticSeverity;
|
||||||
import p.packer.events.PackerEventKind;
|
import p.packer.events.PackerEventKind;
|
||||||
@ -26,6 +23,9 @@ import p.packer.messages.ListAssetsRequest;
|
|||||||
import p.packer.messages.ListAssetsResult;
|
import p.packer.messages.ListAssetsResult;
|
||||||
import p.packer.PackerWorkspaceService;
|
import p.packer.PackerWorkspaceService;
|
||||||
import p.packer.models.PackerAssetDeclarationParseResult;
|
import p.packer.models.PackerAssetDeclarationParseResult;
|
||||||
|
import p.packer.models.PackerAssetIdentity;
|
||||||
|
import p.packer.models.PackerAssetSummary;
|
||||||
|
import p.packer.models.PackerDiagnostic;
|
||||||
import p.packer.models.PackerRegistryEntry;
|
import p.packer.models.PackerRegistryEntry;
|
||||||
import p.packer.models.PackerRegistryState;
|
import p.packer.models.PackerRegistryState;
|
||||||
import p.packer.models.PackerRuntimeAsset;
|
import p.packer.models.PackerRuntimeAsset;
|
||||||
@ -124,8 +124,8 @@ public final class FileSystemPackerWorkspaceService implements PackerWorkspaceSe
|
|||||||
return new ListAssetsResult(
|
return new ListAssetsResult(
|
||||||
status,
|
status,
|
||||||
"Packer asset snapshot ready.",
|
"Packer asset snapshot ready.",
|
||||||
assets,
|
PackerReadMessageMapper.toAssetSummaryDTOs(assets),
|
||||||
diagnostics);
|
PackerReadMessageMapper.toDiagnosticDTOs(diagnostics));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -4,11 +4,11 @@ import com.fasterxml.jackson.databind.JsonNode;
|
|||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import p.packer.assets.AssetFamilyCatalog;
|
import p.packer.assets.AssetFamilyCatalog;
|
||||||
import p.packer.assets.OutputCodecCatalog;
|
import p.packer.assets.OutputCodecCatalog;
|
||||||
import p.packer.diagnostics.PackerDiagnostic;
|
|
||||||
import p.packer.diagnostics.PackerDiagnosticCategory;
|
import p.packer.diagnostics.PackerDiagnosticCategory;
|
||||||
import p.packer.diagnostics.PackerDiagnosticSeverity;
|
import p.packer.diagnostics.PackerDiagnosticSeverity;
|
||||||
import p.packer.models.PackerAssetDeclaration;
|
import p.packer.models.PackerAssetDeclaration;
|
||||||
import p.packer.models.PackerAssetDeclarationParseResult;
|
import p.packer.models.PackerAssetDeclarationParseResult;
|
||||||
|
import p.packer.models.PackerDiagnostic;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
|||||||
@ -5,18 +5,18 @@ import p.packer.PackerProjectContext;
|
|||||||
import p.packer.assets.AssetFamilyCatalog;
|
import p.packer.assets.AssetFamilyCatalog;
|
||||||
import p.packer.assets.AssetReference;
|
import p.packer.assets.AssetReference;
|
||||||
import p.packer.assets.OutputCodecCatalog;
|
import p.packer.assets.OutputCodecCatalog;
|
||||||
import p.packer.assets.PackerAssetDetails;
|
|
||||||
import p.packer.assets.PackerAssetIdentity;
|
|
||||||
import p.packer.assets.PackerAssetState;
|
import p.packer.assets.PackerAssetState;
|
||||||
import p.packer.assets.PackerAssetSummary;
|
|
||||||
import p.packer.assets.PackerBuildParticipation;
|
import p.packer.assets.PackerBuildParticipation;
|
||||||
import p.packer.diagnostics.PackerDiagnostic;
|
|
||||||
import p.packer.diagnostics.PackerDiagnosticCategory;
|
import p.packer.diagnostics.PackerDiagnosticCategory;
|
||||||
import p.packer.diagnostics.PackerDiagnosticSeverity;
|
import p.packer.diagnostics.PackerDiagnosticSeverity;
|
||||||
import p.packer.messages.GetAssetDetailsRequest;
|
import p.packer.messages.GetAssetDetailsRequest;
|
||||||
import p.packer.messages.GetAssetDetailsResult;
|
import p.packer.messages.GetAssetDetailsResult;
|
||||||
import p.packer.models.PackerAssetDeclaration;
|
import p.packer.models.PackerAssetDeclaration;
|
||||||
import p.packer.models.PackerAssetDeclarationParseResult;
|
import p.packer.models.PackerAssetDeclarationParseResult;
|
||||||
|
import p.packer.models.PackerAssetDetails;
|
||||||
|
import p.packer.models.PackerAssetIdentity;
|
||||||
|
import p.packer.models.PackerAssetSummary;
|
||||||
|
import p.packer.models.PackerDiagnostic;
|
||||||
import p.packer.models.PackerRegistryEntry;
|
import p.packer.models.PackerRegistryEntry;
|
||||||
import p.packer.models.PackerRuntimeAsset;
|
import p.packer.models.PackerRuntimeAsset;
|
||||||
import p.packer.models.PackerRuntimeSnapshot;
|
import p.packer.models.PackerRuntimeSnapshot;
|
||||||
@ -93,8 +93,8 @@ public final class PackerAssetDetailsService {
|
|||||||
return new GetAssetDetailsResult(
|
return new GetAssetDetailsResult(
|
||||||
diagnostics.stream().anyMatch(PackerDiagnostic::blocking) ? PackerOperationStatus.PARTIAL : PackerOperationStatus.SUCCESS,
|
diagnostics.stream().anyMatch(PackerDiagnostic::blocking) ? PackerOperationStatus.PARTIAL : PackerOperationStatus.SUCCESS,
|
||||||
"Asset details resolved from runtime snapshot.",
|
"Asset details resolved from runtime snapshot.",
|
||||||
details,
|
PackerReadMessageMapper.toAssetDetailsDTO(details),
|
||||||
diagnostics);
|
PackerReadMessageMapper.toDiagnosticDTOs(diagnostics));
|
||||||
}
|
}
|
||||||
|
|
||||||
private GetAssetDetailsResult failureResult(
|
private GetAssetDetailsResult failureResult(
|
||||||
@ -130,8 +130,8 @@ public final class PackerAssetDetailsService {
|
|||||||
return new GetAssetDetailsResult(
|
return new GetAssetDetailsResult(
|
||||||
PackerOperationStatus.FAILED,
|
PackerOperationStatus.FAILED,
|
||||||
"Asset declaration is invalid or unreadable.",
|
"Asset declaration is invalid or unreadable.",
|
||||||
details,
|
PackerReadMessageMapper.toAssetDetailsDTO(details),
|
||||||
diagnostics);
|
PackerReadMessageMapper.toDiagnosticDTOs(diagnostics));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, List<Path>> resolveInputs(Path assetRoot, Map<String, List<String>> inputsByRole) {
|
private Map<String, List<Path>> resolveInputs(Path assetRoot, Map<String, List<String>> inputsByRole) {
|
||||||
|
|||||||
@ -2,13 +2,13 @@ package p.packer.services;
|
|||||||
|
|
||||||
import p.packer.assets.OutputCodecCatalog;
|
import p.packer.assets.OutputCodecCatalog;
|
||||||
import p.packer.assets.OutputFormatCatalog;
|
import p.packer.assets.OutputFormatCatalog;
|
||||||
|
import p.packer.models.PackerCodecConfigurationField;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import p.packer.assets.PackerCodecConfigurationField;
|
|
||||||
|
|
||||||
final class PackerOutputContractCatalog {
|
final class PackerOutputContractCatalog {
|
||||||
private PackerOutputContractCatalog() {
|
private PackerOutputContractCatalog() {
|
||||||
|
|||||||
@ -0,0 +1,87 @@
|
|||||||
|
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<PackerAssetSummaryDTO> toAssetSummaryDTOs(List<PackerAssetSummary> summaries) {
|
||||||
|
return summaries.stream().map(PackerReadMessageMapper::toAssetSummaryDTO).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<PackerDiagnosticDTO> toDiagnosticDTOs(List<PackerDiagnostic> 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<p.packer.assets.OutputCodecCatalog, List<PackerCodecConfigurationFieldDTO>> toCodecConfigurationFieldsByCodecDTO(
|
||||||
|
Map<p.packer.assets.OutputCodecCatalog, List<PackerCodecConfigurationField>> 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());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -7,7 +7,7 @@ import javafx.scene.layout.HBox;
|
|||||||
import javafx.scene.layout.Priority;
|
import javafx.scene.layout.Priority;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import p.packer.assets.AssetReference;
|
import p.packer.assets.AssetReference;
|
||||||
import p.packer.assets.PackerAssetDetails;
|
import p.packer.assets.PackerAssetDetailsDTO;
|
||||||
import p.packer.messages.GetAssetDetailsRequest;
|
import p.packer.messages.GetAssetDetailsRequest;
|
||||||
import p.studio.Container;
|
import p.studio.Container;
|
||||||
import p.studio.events.StudioWorkspaceEventBus;
|
import p.studio.events.StudioWorkspaceEventBus;
|
||||||
@ -244,7 +244,7 @@ public final class AssetDetailsControl extends VBox implements StudioEventAware
|
|||||||
workspaceSummaryLabel.setManaged(visible);
|
workspaceSummaryLabel.setManaged(visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
private AssetWorkspaceAssetDetails mapDetails(PackerAssetDetails details) {
|
private AssetWorkspaceAssetDetails mapDetails(PackerAssetDetailsDTO details) {
|
||||||
return new AssetWorkspaceAssetDetails(
|
return new AssetWorkspaceAssetDetails(
|
||||||
AssetListPackerMappings.mapSummary(details.summary()),
|
AssetListPackerMappings.mapSummary(details.summary()),
|
||||||
details.outputFormat(),
|
details.outputFormat(),
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package p.studio.workspaces.assets.details;
|
package p.studio.workspaces.assets.details;
|
||||||
|
|
||||||
import p.packer.assets.PackerAssetSummary;
|
import p.packer.assets.PackerAssetSummaryDTO;
|
||||||
import p.studio.workspaces.assets.messages.AssetWorkspaceAssetSummary;
|
import p.studio.workspaces.assets.messages.AssetWorkspaceAssetSummary;
|
||||||
import p.studio.workspaces.assets.messages.AssetWorkspaceAssetState;
|
import p.studio.workspaces.assets.messages.AssetWorkspaceAssetState;
|
||||||
import p.studio.workspaces.assets.messages.AssetWorkspaceBuildParticipation;
|
import p.studio.workspaces.assets.messages.AssetWorkspaceBuildParticipation;
|
||||||
@ -9,7 +9,7 @@ public final class AssetListPackerMappings {
|
|||||||
private AssetListPackerMappings() {
|
private AssetListPackerMappings() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AssetWorkspaceAssetSummary mapSummary(PackerAssetSummary summary) {
|
public static AssetWorkspaceAssetSummary mapSummary(PackerAssetSummaryDTO summary) {
|
||||||
final AssetWorkspaceAssetState state = switch (summary.state()) {
|
final AssetWorkspaceAssetState state = switch (summary.state()) {
|
||||||
case REGISTERED -> AssetWorkspaceAssetState.REGISTERED;
|
case REGISTERED -> AssetWorkspaceAssetState.REGISTERED;
|
||||||
case UNREGISTERED -> AssetWorkspaceAssetState.UNREGISTERED;
|
case UNREGISTERED -> AssetWorkspaceAssetState.UNREGISTERED;
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import javafx.scene.layout.HBox;
|
|||||||
import javafx.scene.layout.Priority;
|
import javafx.scene.layout.Priority;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import p.packer.assets.OutputCodecCatalog;
|
import p.packer.assets.OutputCodecCatalog;
|
||||||
import p.packer.assets.PackerCodecConfigurationField;
|
import p.packer.assets.PackerCodecConfigurationFieldDTO;
|
||||||
import p.studio.Container;
|
import p.studio.Container;
|
||||||
import p.studio.controls.forms.StudioFormActionBar;
|
import p.studio.controls.forms.StudioFormActionBar;
|
||||||
import p.studio.controls.forms.StudioFormMode;
|
import p.studio.controls.forms.StudioFormMode;
|
||||||
@ -211,7 +211,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon
|
|||||||
return createCodecMetadataPane(title, content);
|
return createCodecMetadataPane(title, content);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (PackerCodecConfigurationField field : fields) {
|
for (PackerCodecConfigurationFieldDTO field : fields) {
|
||||||
content.getChildren().add(createCodecFieldRow(field, draft, editing));
|
content.getChildren().add(createCodecFieldRow(field, draft, editing));
|
||||||
}
|
}
|
||||||
return createCodecMetadataPane(title, content);
|
return createCodecMetadataPane(title, content);
|
||||||
@ -230,7 +230,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Node createCodecFieldRow(
|
private Node createCodecFieldRow(
|
||||||
PackerCodecConfigurationField field,
|
PackerCodecConfigurationFieldDTO field,
|
||||||
AssetContractDraft draft,
|
AssetContractDraft draft,
|
||||||
boolean editing) {
|
boolean editing) {
|
||||||
final Node valueNode = switch (field.fieldType()) {
|
final Node valueNode = switch (field.fieldType()) {
|
||||||
@ -242,7 +242,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Node createBooleanField(
|
private Node createBooleanField(
|
||||||
PackerCodecConfigurationField field,
|
PackerCodecConfigurationFieldDTO field,
|
||||||
AssetContractDraft draft,
|
AssetContractDraft draft,
|
||||||
boolean editing) {
|
boolean editing) {
|
||||||
final CheckBox checkBox = new CheckBox();
|
final CheckBox checkBox = new CheckBox();
|
||||||
@ -265,7 +265,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Node createEnumField(
|
private Node createEnumField(
|
||||||
PackerCodecConfigurationField field,
|
PackerCodecConfigurationFieldDTO field,
|
||||||
AssetContractDraft draft,
|
AssetContractDraft draft,
|
||||||
boolean editing) {
|
boolean editing) {
|
||||||
final ComboBox<String> comboBox = new ComboBox<>(FXCollections.observableArrayList(field.options()));
|
final ComboBox<String> comboBox = new ComboBox<>(FXCollections.observableArrayList(field.options()));
|
||||||
@ -289,7 +289,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Node createTextField(
|
private Node createTextField(
|
||||||
PackerCodecConfigurationField field,
|
PackerCodecConfigurationFieldDTO field,
|
||||||
AssetContractDraft draft,
|
AssetContractDraft draft,
|
||||||
boolean editing) {
|
boolean editing) {
|
||||||
final TextField textField = new TextField(currentValue(field, draft));
|
final TextField textField = new TextField(currentValue(field, draft));
|
||||||
@ -313,7 +313,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon
|
|||||||
return textField;
|
return textField;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String currentValue(PackerCodecConfigurationField field, AssetContractDraft draft) {
|
private String currentValue(PackerCodecConfigurationFieldDTO field, AssetContractDraft draft) {
|
||||||
return draft.codecFieldValue(draft.selectedCodec(), field.key(), field.value());
|
return draft.codecFieldValue(draft.selectedCodec(), field.key(), field.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import javafx.scene.layout.FlowPane;
|
|||||||
import javafx.scene.layout.Priority;
|
import javafx.scene.layout.Priority;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import p.packer.assets.AssetReference;
|
import p.packer.assets.AssetReference;
|
||||||
import p.packer.assets.PackerAssetSummary;
|
import p.packer.assets.PackerAssetSummaryDTO;
|
||||||
import p.packer.messages.ListAssetsRequest;
|
import p.packer.messages.ListAssetsRequest;
|
||||||
import p.studio.Container;
|
import p.studio.Container;
|
||||||
import p.studio.events.StudioWorkspaceEventBus;
|
import p.studio.events.StudioWorkspaceEventBus;
|
||||||
@ -233,7 +233,7 @@ public final class AssetListControl extends VBox implements StudioEventAware {
|
|||||||
workspaceBus.publish(new StudioAssetsNavigatorViewStateChangedEvent(nextViewState));
|
workspaceBus.publish(new StudioAssetsNavigatorViewStateChangedEvent(nextViewState));
|
||||||
}
|
}
|
||||||
|
|
||||||
private AssetWorkspaceAssetSummary mapAsset(PackerAssetSummary summary) {
|
private AssetWorkspaceAssetSummary mapAsset(PackerAssetSummaryDTO summary) {
|
||||||
return AssetListPackerMappings.mapSummary(summary);
|
return AssetListPackerMappings.mapSummary(summary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package p.studio.workspaces.assets.messages;
|
package p.studio.workspaces.assets.messages;
|
||||||
|
|
||||||
import p.packer.assets.PackerCodecConfigurationField;
|
import p.packer.assets.PackerCodecConfigurationFieldDTO;
|
||||||
import p.packer.assets.OutputCodecCatalog;
|
import p.packer.assets.OutputCodecCatalog;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
@ -13,7 +13,7 @@ public record AssetWorkspaceAssetDetails(
|
|||||||
String outputFormat,
|
String outputFormat,
|
||||||
OutputCodecCatalog outputCodec,
|
OutputCodecCatalog outputCodec,
|
||||||
List<OutputCodecCatalog> availableOutputCodecs,
|
List<OutputCodecCatalog> availableOutputCodecs,
|
||||||
Map<OutputCodecCatalog, List<PackerCodecConfigurationField>> codecConfigurationFieldsByCodec,
|
Map<OutputCodecCatalog, List<PackerCodecConfigurationFieldDTO>> codecConfigurationFieldsByCodec,
|
||||||
Map<String, List<Path>> inputsByRole) {
|
Map<String, List<Path>> inputsByRole) {
|
||||||
|
|
||||||
public AssetWorkspaceAssetDetails {
|
public AssetWorkspaceAssetDetails {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user