From 413cd0c6976b2ef42553212665f31bab8c86b9dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Sz=C3=BCcs?= <127139797+balazs-szucs@users.noreply.github.com> Date: Sun, 28 Sep 2025 22:40:23 +0200 Subject: [PATCH] refactor: replace switch statements with modern switch expressions for better readability (#4095) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> --- .../common/util/ImageProcessingUtils.java | 21 +++-- .../software/common/util/PdfUtils.java | 29 +++---- .../api/RearrangePagesPDFController.java | 37 ++++----- .../api/filters/FilterController.java | 78 ++++++------------- .../api/security/WatermarkController.java | 29 ++----- .../controller/web/GeneralWebController.java | 23 +++--- 6 files changed, 80 insertions(+), 137 deletions(-) diff --git a/app/common/src/main/java/stirling/software/common/util/ImageProcessingUtils.java b/app/common/src/main/java/stirling/software/common/util/ImageProcessingUtils.java index 7140b3cc2..c1b694515 100644 --- a/app/common/src/main/java/stirling/software/common/util/ImageProcessingUtils.java +++ b/app/common/src/main/java/stirling/software/common/util/ImageProcessingUtils.java @@ -85,19 +85,16 @@ public class ImageProcessingUtils { return 0; } int orientationTag = directory.getInt(ExifSubIFDDirectory.TAG_ORIENTATION); - switch (orientationTag) { - case 1: - return 0; - case 6: - return 90; - case 3: - return 180; - case 8: - return 270; - default: + return switch (orientationTag) { + case 1 -> 0; + case 6 -> 90; + case 3 -> 180; + case 8 -> 270; + default -> { log.warn("Unknown orientation tag: {}", orientationTag); - return 0; - } + yield 0; + } + }; } catch (ImageProcessingException | MetadataException e) { return 0; } diff --git a/app/common/src/main/java/stirling/software/common/util/PdfUtils.java b/app/common/src/main/java/stirling/software/common/util/PdfUtils.java index 82759007e..65cb27432 100644 --- a/app/common/src/main/java/stirling/software/common/util/PdfUtils.java +++ b/app/common/src/main/java/stirling/software/common/util/PdfUtils.java @@ -631,16 +631,13 @@ public class PdfUtils { int actualPageCount = pdfDocument.getNumberOfPages(); pdfDocument.close(); - switch (comparator.toLowerCase()) { - case "greater": - return actualPageCount > pageCount; - case "equal": - return actualPageCount == pageCount; - case "less": - return actualPageCount < pageCount; - default: + return switch (comparator.toLowerCase()) { + case "greater" -> actualPageCount > pageCount; + case "equal" -> actualPageCount == pageCount; + case "less" -> actualPageCount < pageCount; + default -> throw ExceptionUtils.createInvalidArgumentException("comparator", comparator); - } + }; } public boolean pageSize(PDDocument pdfDocument, String expectedPageSize) throws IOException { @@ -662,9 +659,15 @@ public class PdfUtils { return actualPageWidth == expectedPageWidth && actualPageHeight == expectedPageHeight; } - /** Key for storing the dimensions of a rendered image in a map. */ - private record PdfRenderSettingsKey(float mediaBoxWidth, float mediaBoxHeight, int rotation) {} + /** + * Key for storing the dimensions of a rendered image in a map. + */ + private record PdfRenderSettingsKey(float mediaBoxWidth, float mediaBoxHeight, int rotation) { + } - /** Value for storing the dimensions of a rendered image in a map. */ - private record PdfImageDimensionValue(int width, int height) {} + /** + * Value for storing the dimensions of a rendered image in a map. + */ + private record PdfImageDimensionValue(int width, int height) { + } } diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java index 6c6d9c81f..9a7a3c85d 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java @@ -205,30 +205,19 @@ public class RearrangePagesPDFController { private List processSortTypes(String sortTypes, int totalPages, String pageOrder) { try { SortTypes mode = SortTypes.valueOf(sortTypes.toUpperCase()); - switch (mode) { - case REVERSE_ORDER: - return reverseOrder(totalPages); - case DUPLEX_SORT: - return duplexSort(totalPages); - case BOOKLET_SORT: - return bookletSort(totalPages); - case SIDE_STITCH_BOOKLET_SORT: - return sideStitchBooklet(totalPages); - case ODD_EVEN_SPLIT: - return oddEvenSplit(totalPages); - case ODD_EVEN_MERGE: - return oddEvenMerge(totalPages); - case REMOVE_FIRST: - return removeFirst(totalPages); - case REMOVE_LAST: - return removeLast(totalPages); - case REMOVE_FIRST_AND_LAST: - return removeFirstAndLast(totalPages); - case DUPLICATE: - return duplicate(totalPages, pageOrder); - default: - throw new IllegalArgumentException("Unsupported custom mode"); - } + return switch (mode) { + case REVERSE_ORDER -> reverseOrder(totalPages); + case DUPLEX_SORT -> duplexSort(totalPages); + case BOOKLET_SORT -> bookletSort(totalPages); + case SIDE_STITCH_BOOKLET_SORT -> sideStitchBooklet(totalPages); + case ODD_EVEN_SPLIT -> oddEvenSplit(totalPages); + case ODD_EVEN_MERGE -> oddEvenMerge(totalPages); + case REMOVE_FIRST -> removeFirst(totalPages); + case REMOVE_LAST -> removeLast(totalPages); + case REMOVE_FIRST_AND_LAST -> removeFirstAndLast(totalPages); + case DUPLICATE -> duplicate(totalPages, pageOrder); + default -> throw new IllegalArgumentException("Unsupported custom mode"); + }; } catch (IllegalArgumentException e) { log.error("Unsupported custom mode", e); return null; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java index d3d83a930..1eee5ff40 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java @@ -86,22 +86,14 @@ public class FilterController { // Load the PDF PDDocument document = pdfDocumentFactory.load(inputFile); int actualPageCount = document.getNumberOfPages(); - - boolean valid; // Perform the comparison - switch (comparator) { - case "Greater": - valid = actualPageCount > pageCount; - break; - case "Equal": - valid = actualPageCount == pageCount; - break; - case "Less": - valid = actualPageCount < pageCount; - break; - default: + boolean valid = switch (comparator) { + case "Greater" -> actualPageCount > pageCount; + case "Equal" -> actualPageCount == pageCount; + case "Less" -> actualPageCount < pageCount; + default -> throw ExceptionUtils.createInvalidArgumentException("comparator", comparator); - } + }; if (valid) return WebResponseUtils.multiPartFileToWebResponse(inputFile); return null; @@ -130,21 +122,14 @@ public class FilterController { PDRectangle standardSize = PdfUtils.textToPageSize(standardPageSize); float standardArea = standardSize.getWidth() * standardSize.getHeight(); - boolean valid; // Perform the comparison - switch (comparator) { - case "Greater": - valid = actualArea > standardArea; - break; - case "Equal": - valid = actualArea == standardArea; - break; - case "Less": - valid = actualArea < standardArea; - break; - default: + boolean valid = switch (comparator) { + case "Greater" -> actualArea > standardArea; + case "Equal" -> actualArea == standardArea; + case "Less" -> actualArea < standardArea; + default -> throw ExceptionUtils.createInvalidArgumentException("comparator", comparator); - } + }; if (valid) return WebResponseUtils.multiPartFileToWebResponse(inputFile); return null; @@ -163,21 +148,14 @@ public class FilterController { // Get the file size long actualFileSize = inputFile.getSize(); - boolean valid; // Perform the comparison - switch (comparator) { - case "Greater": - valid = actualFileSize > fileSize; - break; - case "Equal": - valid = actualFileSize == fileSize; - break; - case "Less": - valid = actualFileSize < fileSize; - break; - default: + boolean valid = switch (comparator) { + case "Greater" -> actualFileSize > fileSize; + case "Equal" -> actualFileSize == fileSize; + case "Less" -> actualFileSize < fileSize; + default -> throw ExceptionUtils.createInvalidArgumentException("comparator", comparator); - } + }; if (valid) return WebResponseUtils.multiPartFileToWebResponse(inputFile); return null; @@ -199,21 +177,15 @@ public class FilterController { // Get the rotation of the first page PDPage firstPage = document.getPage(0); int actualRotation = firstPage.getRotation(); - boolean valid; + // Perform the comparison - switch (comparator) { - case "Greater": - valid = actualRotation > rotation; - break; - case "Equal": - valid = actualRotation == rotation; - break; - case "Less": - valid = actualRotation < rotation; - break; - default: + boolean valid = switch (comparator) { + case "Greater" -> actualRotation > rotation; + case "Equal" -> actualRotation == rotation; + case "Less" -> actualRotation < rotation; + default -> throw ExceptionUtils.createInvalidArgumentException("comparator", comparator); - } + }; if (valid) return WebResponseUtils.multiPartFileToWebResponse(inputFile); return null; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java index 9a8013ca8..00cf6bd9b 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java @@ -170,27 +170,14 @@ public class WatermarkController { throws IOException { String resourceDir = ""; PDFont font = new PDType1Font(Standard14Fonts.FontName.HELVETICA); - switch (alphabet) { - case "arabic": - resourceDir = "static/fonts/NotoSansArabic-Regular.ttf"; - break; - case "japanese": - resourceDir = "static/fonts/Meiryo.ttf"; - break; - case "korean": - resourceDir = "static/fonts/malgun.ttf"; - break; - case "chinese": - resourceDir = "static/fonts/SimSun.ttf"; - break; - case "thai": - resourceDir = "static/fonts/NotoSansThai-Regular.ttf"; - break; - case "roman": - default: - resourceDir = "static/fonts/NotoSans-Regular.ttf"; - break; - } + resourceDir = switch (alphabet) { + case "arabic" -> "static/fonts/NotoSansArabic-Regular.ttf"; + case "japanese" -> "static/fonts/Meiryo.ttf"; + case "korean" -> "static/fonts/malgun.ttf"; + case "chinese" -> "static/fonts/SimSun.ttf"; + case "thai" -> "static/fonts/NotoSansThai-Regular.ttf"; + default -> "static/fonts/NotoSans-Regular.ttf"; + }; ClassPathResource classPathResource = new ClassPathResource(resourceDir); String fileExtension = resourceDir.substring(resourceDir.lastIndexOf(".")); diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java b/app/core/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java index 1860754c3..d0c895599 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java @@ -281,21 +281,16 @@ public class GeneralWebController { } public String getFormatFromExtension(String extension) { - switch (extension) { - case "ttf": - return "truetype"; - case "woff": - return "woff"; - case "woff2": - return "woff2"; - case "eot": - return "embedded-opentype"; - case "svg": - return "svg"; - default: + return switch (extension) { + case "ttf" -> "truetype"; + case "woff" -> "woff"; + case "woff2" -> "woff2"; + case "eot" -> "embedded-opentype"; + case "svg" -> "svg"; + default -> // or throw an exception if an unexpected extension is encountered - return ""; - } + ""; + }; } @GetMapping("/crop")