diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/FakeScanController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/FakeScanController.java index 15c2c4fd4..650d8a77c 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/FakeScanController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/FakeScanController.java @@ -58,10 +58,10 @@ public class FakeScanController { // Apply preset first if needed if (!request.isAdvancedEnabled()) { - switch (request.getQuality().toLowerCase()) { - case "high" -> request.applyHighQualityPreset(); - case "medium" -> request.applyMediumQualityPreset(); - case "low" -> request.applyLowQualityPreset(); + switch (request.getQuality()) { + case high -> request.applyHighQualityPreset(); + case medium -> request.applyMediumQualityPreset(); + case low -> request.applyLowQualityPreset(); } } @@ -75,7 +75,7 @@ public class FakeScanController { float noise = request.getNoise(); boolean yellowish = request.isYellowish(); int resolution = request.getResolution(); - String colorspace = request.getColorspace(); + FakeScanRequest.Colorspace colorspace = request.getColorspace(); try (PDDocument document = pdfDocumentFactory.load(file)) { PDDocument outputDocument = new PDDocument(); @@ -87,7 +87,7 @@ public class FakeScanController { // 1. Convert to grayscale or keep color BufferedImage processed; - if ("grayscale".equalsIgnoreCase(colorspace)) { + if (colorspace == FakeScanRequest.Colorspace.grayscale) { processed = new BufferedImage( image.getWidth(), diff --git a/src/main/java/stirling/software/SPDF/model/api/misc/FakeScanRequest.java b/src/main/java/stirling/software/SPDF/model/api/misc/FakeScanRequest.java index 12846520b..1237d2305 100644 --- a/src/main/java/stirling/software/SPDF/model/api/misc/FakeScanRequest.java +++ b/src/main/java/stirling/software/SPDF/model/api/misc/FakeScanRequest.java @@ -12,33 +12,42 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode public class FakeScanRequest { + public enum Quality { + low, + medium, + high + } + + public enum Rotation { + none, + slight, + moderate, + severe + } + + public enum Colorspace { + grayscale, + color + } + @Schema( description = "PDF file to process", - required = true, + requiredMode = Schema.RequiredMode.REQUIRED, type = "string", format = "binary") @NotNull(message = "File input is required") private MultipartFile fileInput; - @Schema( - description = "Scan quality preset", - example = "high", - allowableValues = {"low", "medium", "high"}) + @Schema(description = "Scan quality preset", example = "high") @NotNull(message = "Quality is required") - private String quality = "high"; + private Quality quality = Quality.high; - @Schema( - description = "Rotation preset", - example = "none", - allowableValues = {"none", "slight", "moderate", "severe"}) + @Schema(description = "Rotation preset", example = "none") @NotNull(message = "Rotation is required") - private String rotation = "slight"; + private Rotation rotation = Rotation.slight; - @Schema( - description = "Colorspace for output image", - example = "grayscale", - allowableValues = {"grayscale", "color"}) - private String colorspace = "grayscale"; + @Schema(description = "Colorspace for output image", example = "grayscale") + private Colorspace colorspace = Colorspace.grayscale; @Schema(description = "Border thickness in pixels", example = "20") private int border = 20; @@ -75,21 +84,19 @@ public class FakeScanRequest { } public int getQualityValue() { - return switch (quality.toLowerCase()) { - case "low" -> 30; - case "medium" -> 60; - case "high" -> 100; - default -> 100; + return switch (quality) { + case low -> 30; + case medium -> 60; + case high -> 100; }; } public int getRotationValue() { - return switch (rotation.toLowerCase()) { - case "none" -> 0; - case "slight" -> 2; - case "moderate" -> 5; - case "severe" -> 8; - default -> 0; + return switch (rotation) { + case none -> 0; + case slight -> 2; + case moderate -> 5; + case severe -> 8; }; }