This is an automated email from the ASF dual-hosted git repository.

pjfanning pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/poi.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 789cc69ec6 refactor more switch stmts (#1143)
789cc69ec6 is described below

commit 789cc69ec64b34656b528b90f80249aa78828773
Author: PJ Fanning <[email protected]>
AuthorDate: Fri Jun 12 22:56:57 2026 +0100

    refactor more switch stmts (#1143)
    
    * refactor more switch stmts
    
    * Update XSLFTableStyle.java
---
 .../org/apache/poi/openxml4j/opc/ContentTypes.java |  26 ++--
 .../apache/poi/poifs/crypt/dsig/SignatureInfo.java |  10 +-
 .../crypt/dsig/facets/XAdESSignatureFacet.java     |  14 +-
 .../crypt/dsig/services/TSPTimeStampService.java   |  15 +-
 .../apache/poi/xddf/usermodel/chart/XDDFChart.java |  48 +++----
 .../org/apache/poi/xslf/draw/geom/XSLFPath.java    |   2 +-
 .../apache/poi/xslf/usermodel/XSLFTableCell.java   |  19 +--
 .../apache/poi/xslf/usermodel/XSLFTableStyle.java  |  46 +++---
 .../java/org/apache/poi/xslf/util/PPTX2PNG.java    |   2 +-
 .../org/apache/poi/xssf/usermodel/XSSFSheet.java   |  82 ++++-------
 .../org/apache/poi/xwpf/usermodel/XWPFRun.java     |  17 +--
 .../org/apache/poi/xwpf/usermodel/XWPFTable.java   |  17 +--
 .../org/apache/poi/xwpf/usermodel/XWPFTheme.java   |  43 ++----
 .../apache/poi/common/usermodel/PictureType.java   |  33 ++---
 .../poi/common/usermodel/fonts/FontHeader.java     |  44 +++---
 .../apache/poi/hssf/model/InternalWorkbook.java    |  48 +++----
 .../org/apache/poi/hssf/model/RecordOrderer.java   |  26 +---
 .../org/apache/poi/hssf/record/FilePassRecord.java |  16 +--
 .../poi/hssf/record/FormulaSpecialCachedValue.java |  69 ++++-----
 .../apache/poi/hssf/record/InterfaceEndRecord.java |  12 +-
 .../org/apache/poi/hssf/record/NameRecord.java     |  34 +++--
 .../org/apache/poi/hssf/record/UnknownRecord.java  |  75 ++--------
 .../hssf/record/aggregates/PageSettingsBlock.java  |  73 +++++-----
 .../aggregates/WorksheetProtectionBlock.java       |  12 +-
 .../hssf/record/crypto/Biff8DecryptingStream.java  |  28 ++--
 .../org/apache/poi/hssf/usermodel/HSSFCell.java    |  93 ++++++-------
 .../apache/poi/hssf/usermodel/HSSFPictureData.java |  84 ++++-------
 .../org/apache/poi/hssf/usermodel/HSSFRow.java     |  18 ++-
 .../org/apache/poi/hssf/usermodel/HSSFSheet.java   |  35 ++---
 .../org/apache/poi/sl/draw/geom/BuiltInGuide.java  | 155 ++++++++++-----------
 .../java/org/apache/poi/sl/draw/geom/GuideIf.java  |  75 +++++-----
 .../org/apache/poi/sl/draw/geom/PresetParser.java  |  23 ++-
 32 files changed, 499 insertions(+), 795 deletions(-)

diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ContentTypes.java 
b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ContentTypes.java
index 12dcdb1b12..561b59070a 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ContentTypes.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ContentTypes.java
@@ -111,22 +111,14 @@ public final class ContentTypes {
     public static String getContentTypeFromFileExtension(String filename) {
         String extension = filename.substring(filename.lastIndexOf('.') + 1)
                 .toLowerCase(Locale.ROOT);
-        switch (extension) {
-            case EXTENSION_JPG_1:
-            case EXTENSION_JPG_2:
-                return IMAGE_JPEG;
-            case EXTENSION_GIF:
-                return IMAGE_GIF;
-            case EXTENSION_PICT:
-                return IMAGE_PICT;
-            case EXTENSION_PNG:
-                return IMAGE_PNG;
-            case EXTENSION_TIFF:
-                return IMAGE_TIFF;
-            case EXTENSION_XML:
-                return XML;
-            default:
-                return null;
-        }
+        return switch (extension) {
+            case EXTENSION_JPG_1, EXTENSION_JPG_2 -> IMAGE_JPEG;
+            case EXTENSION_GIF -> IMAGE_GIF;
+            case EXTENSION_PICT -> IMAGE_PICT;
+            case EXTENSION_PNG -> IMAGE_PNG;
+            case EXTENSION_TIFF -> IMAGE_TIFF;
+            case EXTENSION_XML -> XML;
+            default -> null;
+        };
     }
 }
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java 
b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
index 2e6f7aa99f..9990a88d8b 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
@@ -282,12 +282,10 @@ public class SignatureInfo {
     }
 
     private static DigestOutputStream getDigestStream(final HashAlgorithm 
algo, final PrivateKey key) {
-        switch (algo) {
-            case md2: case md5: case sha1: case sha256: case sha384: case 
sha512:
-                return new SignatureOutputStream(algo, key);
-            default:
-                return new DigestOutputStream(algo, key);
-        }
+        return switch (algo) {
+            case md2, md5, sha1, sha256, sha384, sha512 -> new 
SignatureOutputStream(algo, key);
+            default -> new DigestOutputStream(algo, key);
+        };
     }
 
     /**
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java
 
b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java
index 79fb4fc096..803be5411d 100644
--- 
a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java
+++ 
b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java
@@ -370,13 +370,6 @@ public class XAdESSignatureFacet implements SignatureFacet 
{
             while (cur.hasNextToken()) {
                 TokenType nextToken = cur.toNextToken();
                 switch (nextToken.intValue()) {
-                    default:
-                    case TokenType.INT_NONE:
-                    case TokenType.INT_STARTDOC:
-                    case TokenType.INT_ENDDOC:
-                    case TokenType.INT_PROCINST:
-                        // ignore
-                        break;
                     case TokenType.INT_START: {
                         QName name = cur.getName();
                         Element el = 
document.createElementNS(name.getNamespaceURI(), name.getLocalPart());
@@ -411,6 +404,13 @@ public class XAdESSignatureFacet implements SignatureFacet 
{
                         
lastNode.appendChild(document.createComment(cur.getTextValue()));
                         break;
                     }
+                    case TokenType.INT_NONE:
+                    case TokenType.INT_STARTDOC:
+                    case TokenType.INT_ENDDOC:
+                    case TokenType.INT_PROCINST:
+                    default:
+                        // ignore
+                        break;
                 }
             }
             return lastNode;
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/services/TSPTimeStampService.java
 
b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/services/TSPTimeStampService.java
index 3e23a4985e..3ce40dd752 100644
--- 
a/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/services/TSPTimeStampService.java
+++ 
b/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/services/TSPTimeStampService.java
@@ -92,14 +92,13 @@ public class TSPTimeStampService implements 
TimeStampService {
      * Maps the digest algorithm to corresponding OID value.
      */
     public ASN1ObjectIdentifier mapDigestAlgoToOID(HashAlgorithm digestAlgo) {
-        switch (digestAlgo) {
-        case sha1:   return X509ObjectIdentifiers.id_SHA1;
-        case sha256: return NISTObjectIdentifiers.id_sha256;
-        case sha384: return NISTObjectIdentifiers.id_sha384;
-        case sha512: return NISTObjectIdentifiers.id_sha512;
-        default:
-            throw new IllegalArgumentException("unsupported digest algo: " + 
digestAlgo);
-        }
+        return switch (digestAlgo) {
+            case sha1 -> X509ObjectIdentifiers.id_SHA1;
+            case sha256 -> NISTObjectIdentifiers.id_sha256;
+            case sha384 -> NISTObjectIdentifiers.id_sha384;
+            case sha512 -> NISTObjectIdentifiers.id_sha512;
+            default -> throw new IllegalArgumentException("unsupported digest 
algo: " + digestAlgo);
+        };
     }
 
     @Override
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java 
b/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java
index fba0620a07..7ed67b90a0 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java
@@ -651,37 +651,23 @@ public abstract class XDDFChart extends 
POIXMLDocumentPart implements TextContai
         }
 
         final CTPlotArea plotArea = getCTPlotArea();
-        switch (type) {
-        case AREA:
-            return new XDDFAreaChartData(this, plotArea.addNewAreaChart(), 
categories, mapValues);
-        case AREA3D:
-            return new XDDFArea3DChartData(this, plotArea.addNewArea3DChart(), 
categories, mapValues);
-        case BAR:
-            return new XDDFBarChartData(this, plotArea.addNewBarChart(), 
categories, mapValues);
-        case BAR3D:
-            return new XDDFBar3DChartData(this, plotArea.addNewBar3DChart(), 
categories, mapValues);
-        case DOUGHNUT:
-            return new XDDFDoughnutChartData(this, 
plotArea.addNewDoughnutChart());
-        case LINE:
-            return new XDDFLineChartData(this, plotArea.addNewLineChart(), 
categories, mapValues);
-        case LINE3D:
-            return new XDDFLine3DChartData(this, plotArea.addNewLine3DChart(), 
categories, mapValues);
-        case PIE:
-            return new XDDFPieChartData(this, plotArea.addNewPieChart());
-        case PIE3D:
-            return new XDDFPie3DChartData(this, plotArea.addNewPie3DChart());
-        case RADAR:
-            return new XDDFRadarChartData(this, plotArea.addNewRadarChart(), 
categories, mapValues);
-        case SCATTER:
-            return new XDDFScatterChartData(this, 
plotArea.addNewScatterChart(), categories, mapValues);
-        case SURFACE:
-            return new XDDFSurfaceChartData(this, 
plotArea.addNewSurfaceChart(), categories, mapValues);
-        case SURFACE3D:
-            return new XDDFSurface3DChartData(this, 
plotArea.addNewSurface3DChart(), categories, mapValues);
-        // TODO repeat above code for missing charts: Bubble, OfPie and Stock
-        default:
-            return null;
-        }
+        return switch (type) {
+            case AREA -> new XDDFAreaChartData(this, 
plotArea.addNewAreaChart(), categories, mapValues);
+            case AREA3D -> new XDDFArea3DChartData(this, 
plotArea.addNewArea3DChart(), categories, mapValues);
+            case BAR -> new XDDFBarChartData(this, plotArea.addNewBarChart(), 
categories, mapValues);
+            case BAR3D -> new XDDFBar3DChartData(this, 
plotArea.addNewBar3DChart(), categories, mapValues);
+            case DOUGHNUT -> new XDDFDoughnutChartData(this, 
plotArea.addNewDoughnutChart());
+            case LINE -> new XDDFLineChartData(this, 
plotArea.addNewLineChart(), categories, mapValues);
+            case LINE3D -> new XDDFLine3DChartData(this, 
plotArea.addNewLine3DChart(), categories, mapValues);
+            case PIE -> new XDDFPieChartData(this, plotArea.addNewPieChart());
+            case PIE3D -> new XDDFPie3DChartData(this, 
plotArea.addNewPie3DChart());
+            case RADAR -> new XDDFRadarChartData(this, 
plotArea.addNewRadarChart(), categories, mapValues);
+            case SCATTER -> new XDDFScatterChartData(this, 
plotArea.addNewScatterChart(), categories, mapValues);
+            case SURFACE -> new XDDFSurfaceChartData(this, 
plotArea.addNewSurfaceChart(), categories, mapValues);
+            case SURFACE3D -> new XDDFSurface3DChartData(this, 
plotArea.addNewSurface3DChart(), categories, mapValues);
+            // TODO repeat above code for missing charts: Bubble, OfPie and 
Stock
+            default -> null;
+        };
     }
 
     public List<? extends XDDFChartAxis> getAxes() {
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xslf/draw/geom/XSLFPath.java 
b/poi-ooxml/src/main/java/org/apache/poi/xslf/draw/geom/XSLFPath.java
index 87b0e1904b..f91e5d8a81 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/draw/geom/XSLFPath.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/draw/geom/XSLFPath.java
@@ -111,12 +111,12 @@ public class XSLFPath implements PathIf {
     @Override
     public void setFill(PaintStyle.PaintModifier fill) {
         STPathFillMode.Enum f = switch (fill) {
-            default -> STPathFillMode.NONE;
             case NORM -> STPathFillMode.NORM;
             case LIGHTEN -> STPathFillMode.LIGHTEN;
             case LIGHTEN_LESS -> STPathFillMode.LIGHTEN_LESS;
             case DARKEN -> STPathFillMode.DARKEN;
             case DARKEN_LESS -> STPathFillMode.DARKEN_LESS;
+            default -> STPathFillMode.NONE;
         };
         pathXml.setFill(f);
     }
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableCell.java 
b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableCell.java
index 47f94c79ac..52522ef34d 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableCell.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableCell.java
@@ -126,18 +126,13 @@ public class XSLFTableCell extends XSLFTextShape 
implements TableCell<XSLFShape,
             return null;
         }
 
-        switch (edge) {
-        case bottom:
-            return (pr.isSetLnB()) ? pr.getLnB() : (create ? pr.addNewLnB() : 
null);
-        case left:
-            return (pr.isSetLnL()) ? pr.getLnL() : (create ? pr.addNewLnL() : 
null);
-        case top:
-            return (pr.isSetLnT()) ? pr.getLnT() : (create ? pr.addNewLnT() : 
null);
-        case right:
-            return (pr.isSetLnR()) ? pr.getLnR() : (create ? pr.addNewLnR() : 
null);
-        default:
-            return null;
-        }
+        return switch (edge) {
+            case bottom -> (pr.isSetLnB()) ? pr.getLnB() : (create ? 
pr.addNewLnB() : null);
+            case left -> (pr.isSetLnL()) ? pr.getLnL() : (create ? 
pr.addNewLnL() : null);
+            case top -> (pr.isSetLnT()) ? pr.getLnT() : (create ? 
pr.addNewLnT() : null);
+            case right -> (pr.isSetLnR()) ? pr.getLnR() : (create ? 
pr.addNewLnR() : null);
+            default -> null;
+        };
     }
 
     public XDDFLineProperties getBorderProperties(BorderEdge edge) {
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableStyle.java 
b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableStyle.java
index 81ad1a6a9e..8e5e5314f8 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableStyle.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableStyle.java
@@ -52,34 +52,20 @@ public class XSLFTableStyle {
      * @since 3.15-beta2
      */
     protected CTTablePartStyle getTablePartStyle(TablePartStyle tps) {
-        switch (tps) {
-        default:
-        case wholeTbl:
-            return _tblStyle.getWholeTbl();
-        case band1H:
-            return _tblStyle.getBand1H();
-        case band2H:
-            return _tblStyle.getBand2H();
-        case band1V:
-            return _tblStyle.getBand1V();
-        case band2V:
-            return _tblStyle.getBand2V();
-        case firstCol:
-            return _tblStyle.getFirstCol();
-        case lastCol:
-            return _tblStyle.getLastCol();
-        case firstRow:
-            return _tblStyle.getFirstRow();
-        case lastRow:
-            return _tblStyle.getLastRow();
-        case seCell:
-            return _tblStyle.getSeCell();
-        case swCell:
-            return _tblStyle.getSwCell();
-        case neCell:
-            return _tblStyle.getNeCell();
-        case nwCell:
-            return _tblStyle.getNwCell();
-        }
+        return switch (tps) {
+            case band1H -> _tblStyle.getBand1H();
+            case band2H -> _tblStyle.getBand2H();
+            case band1V -> _tblStyle.getBand1V();
+            case band2V -> _tblStyle.getBand2V();
+            case firstCol -> _tblStyle.getFirstCol();
+            case lastCol -> _tblStyle.getLastCol();
+            case firstRow -> _tblStyle.getFirstRow();
+            case lastRow -> _tblStyle.getLastRow();
+            case seCell -> _tblStyle.getSeCell();
+            case swCell -> _tblStyle.getSwCell();
+            case neCell -> _tblStyle.getNeCell();
+            case nwCell -> _tblStyle.getNwCell();
+            default -> _tblStyle.getWholeTbl();
+        };
     }
-}
\ No newline at end of file
+}
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/util/PPTX2PNG.java 
b/poi-ooxml/src/main/java/org/apache/poi/xslf/util/PPTX2PNG.java
index c5553b05e7..914624e889 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/util/PPTX2PNG.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/util/PPTX2PNG.java
@@ -378,11 +378,11 @@ public final class PPTX2PNG {
         final Dimension2D pgsize = proxy.getSize();
 
         final double lenSide = switch (fixSide) {
-            default -> 1;
             case "long" -> Math.max(pgsize.getWidth(), pgsize.getHeight());
             case "short" -> Math.min(pgsize.getWidth(), pgsize.getHeight());
             case "width" -> pgsize.getWidth();
             case "height" -> pgsize.getHeight();
+            default -> 1;
         };
 
         dim.setSize(pgsize.getWidth() * scale / lenSide, pgsize.getHeight() * 
scale / lenSide);
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java 
b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
index 1ed7115df2..36e4ae917d 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
@@ -548,8 +548,7 @@ public class XSSFSheet extends POIXMLDocumentPart 
implements Sheet, OoxmlSheetEx
             // Search the referenced drawing in the list of the sheet's 
relations
             for (RelationPart rp : getRelationParts()){
                 POIXMLDocumentPart p = rp.getDocumentPart();
-                if (p instanceof XSSFDrawing) {
-                    XSSFDrawing dr = (XSSFDrawing)p;
+                if (p instanceof XSSFDrawing dr) {
                     String drId = rp.getRelationship().getId();
                     if (drId.equals(ctDrawing.getId())){
                         return dr;
@@ -619,8 +618,7 @@ public class XSSFSheet extends POIXMLDocumentPart 
implements Sheet, OoxmlSheetEx
                 final String id = ctDrawing.getId();
                 for (RelationPart rp : getRelationParts()){
                     POIXMLDocumentPart p = rp.getDocumentPart();
-                    if(p instanceof XSSFVMLDrawing) {
-                        XSSFVMLDrawing dr = (XSSFVMLDrawing)p;
+                    if(p instanceof XSSFVMLDrawing dr) {
                         String drId = rp.getRelationship().getId();
                         if (drId.equals(id)) {
                             drawing = dr;
@@ -1259,22 +1257,15 @@ public class XSSFSheet extends POIXMLDocumentPart 
implements Sheet, OoxmlSheetEx
         }
 
         CTPageMargins pageMargins = worksheet.getPageMargins();
-        switch (margin) {
-            case LEFT:
-                return pageMargins.getLeft();
-            case RIGHT:
-                return pageMargins.getRight();
-            case TOP:
-                return pageMargins.getTop();
-            case BOTTOM:
-                return pageMargins.getBottom();
-            case HEADER:
-                return pageMargins.getHeader();
-            case FOOTER:
-                return pageMargins.getFooter();
-            default :
-                throw new IllegalArgumentException("Unknown margin constant:  
" + margin);
-        }
+        return switch (margin) {
+            case LEFT -> pageMargins.getLeft();
+            case RIGHT -> pageMargins.getRight();
+            case TOP -> pageMargins.getTop();
+            case BOTTOM -> pageMargins.getBottom();
+            case HEADER -> pageMargins.getHeader();
+            case FOOTER -> pageMargins.getFooter();
+            default -> throw new IllegalArgumentException("Unknown margin 
constant:  " + margin);
+        };
     }
 
     /**
@@ -4645,7 +4636,7 @@ public class XSSFSheet extends POIXMLDocumentPart 
implements Sheet, OoxmlSheetEx
 
         StringBuilder rng = new StringBuilder();
         rng.append(c);
-        if(rng.length() > 0 && !r.isEmpty()) {
+        if(!rng.isEmpty() && !r.isEmpty()) {
             rng.append(',');
         }
         rng.append(r);
@@ -5136,41 +5127,18 @@ public class XSSFSheet extends POIXMLDocumentPart 
implements Sheet, OoxmlSheetEx
         final int INT_STD_DEV = 8;
         final int INT_VAR = 9;
         final int INT_CUSTOM = 10;
-        String subtotalFormulaStart = null;
-        switch (intTotalsRowFunction) {
-            case INT_NONE:
-                subtotalFormulaStart = null;
-                break;
-            case INT_SUM:
-                subtotalFormulaStart = "SUBTOTAL(109";
-                break;
-            case INT_MIN:
-                subtotalFormulaStart = "SUBTOTAL(105";
-                break;
-            case INT_MAX:
-                subtotalFormulaStart = "SUBTOTAL(104";
-                break;
-            case INT_AVERAGE:
-                subtotalFormulaStart = "SUBTOTAL(101";
-                break;
-            case INT_COUNT:
-                subtotalFormulaStart = "SUBTOTAL(103";
-                break;
-            case INT_COUNT_NUMS:
-                subtotalFormulaStart = "SUBTOTAL(102";
-                break;
-            case INT_STD_DEV:
-                subtotalFormulaStart = "SUBTOTAL(107";
-                break;
-            case INT_VAR:
-                subtotalFormulaStart = "SUBTOTAL(110";
-                break;
-            case INT_CUSTOM:
-                subtotalFormulaStart = null;
-                break;
-            default:
-                subtotalFormulaStart = null;
-        }
-        return subtotalFormulaStart;
+        return switch (intTotalsRowFunction) {
+            case INT_NONE -> null;
+            case INT_SUM -> "SUBTOTAL(109";
+            case INT_MIN -> "SUBTOTAL(105";
+            case INT_MAX -> "SUBTOTAL(104";
+            case INT_AVERAGE -> "SUBTOTAL(101";
+            case INT_COUNT -> "SUBTOTAL(103";
+            case INT_COUNT_NUMS -> "SUBTOTAL(102";
+            case INT_STD_DEV -> "SUBTOTAL(107";
+            case INT_VAR -> "SUBTOTAL(110";
+            case INT_CUSTOM -> null;
+            default -> null;
+        };
     }
 }
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java 
b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
index 9fc06c8c00..6d85aaa320 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
@@ -892,17 +892,12 @@ public class XWPFRun implements ISDTContents, 
IRunElement, CharacterRun {
         }
 
         CTFonts fonts = pr.getRFontsArray(0);
-        switch (fcr == null ? FontCharRange.ascii : fcr) {
-            default:
-            case ascii:
-                return fonts.getAscii();
-            case cs:
-                return fonts.getCs();
-            case eastAsia:
-                return fonts.getEastAsia();
-            case hAnsi:
-                return fonts.getHAnsi();
-        }
+        return switch (fcr == null ? FontCharRange.ascii : fcr) {
+            case cs -> fonts.getCs();
+            case eastAsia -> fonts.getEastAsia();
+            case hAnsi -> fonts.getHAnsi();
+            default -> fonts.getAscii();
+        };
     }
 
     /**
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTable.java 
b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTable.java
index 2fdb5e339d..ffebcdacfc 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTable.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTable.java
@@ -1276,17 +1276,12 @@ public class XWPFTable implements IBodyElement, 
ISDTContents {
             typeValue = STTblWidth.NIL;
             ctWidth.setType(typeValue);
         }
-        switch (typeValue.intValue()) {
-        case STTblWidth.INT_NIL:
-            return TableWidthType.NIL;
-        case STTblWidth.INT_DXA:
-            return TableWidthType.DXA;
-        case STTblWidth.INT_PCT:
-            return TableWidthType.PCT;
-        default:
-        case STTblWidth.INT_AUTO:
-            return TableWidthType.AUTO;
-        }
+        return switch (typeValue.intValue()) {
+            case STTblWidth.INT_NIL -> TableWidthType.NIL;
+            case STTblWidth.INT_DXA -> TableWidthType.DXA;
+            case STTblWidth.INT_PCT -> TableWidthType.PCT;
+            default -> TableWidthType.AUTO;
+        };
     }
 
     /**
diff --git 
a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTheme.java 
b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTheme.java
index a01904e835..c04b99b3fb 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTheme.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTheme.java
@@ -111,34 +111,21 @@ public class XWPFTheme extends POIXMLDocumentPart {
         if (mapName == null || scheme == null) {
             return null;
         }
-        switch (mapName) {
-            case "accent1":
-                return scheme.getAccent1();
-            case "accent2":
-                return scheme.getAccent2();
-            case "accent3":
-                return scheme.getAccent3();
-            case "accent4":
-                return scheme.getAccent4();
-            case "accent5":
-                return scheme.getAccent5();
-            case "accent6":
-                return scheme.getAccent6();
-            case "dk1":
-                return scheme.getDk1();
-            case "dk2":
-                return scheme.getDk2();
-            case "folHlink":
-                return scheme.getFolHlink();
-            case "hlink":
-                return scheme.getHlink();
-            case "lt1":
-                return scheme.getLt1();
-            case "lt2":
-                return scheme.getLt2();
-            default:
-                return null;
-        }
+        return switch (mapName) {
+            case "accent1" -> scheme.getAccent1();
+            case "accent2" -> scheme.getAccent2();
+            case "accent3" -> scheme.getAccent3();
+            case "accent4" -> scheme.getAccent4();
+            case "accent5" -> scheme.getAccent5();
+            case "accent6" -> scheme.getAccent6();
+            case "dk1" -> scheme.getDk1();
+            case "dk2" -> scheme.getDk2();
+            case "folHlink" -> scheme.getFolHlink();
+            case "hlink" -> scheme.getHlink();
+            case "lt1" -> scheme.getLt1();
+            case "lt2" -> scheme.getLt2();
+            default -> null;
+        };
     }
 
     /**
diff --git a/poi/src/main/java/org/apache/poi/common/usermodel/PictureType.java 
b/poi/src/main/java/org/apache/poi/common/usermodel/PictureType.java
index 58f3c0a00e..773a648608 100644
--- a/poi/src/main/java/org/apache/poi/common/usermodel/PictureType.java
+++ b/poi/src/main/java/org/apache/poi/common/usermodel/PictureType.java
@@ -98,28 +98,19 @@ public enum PictureType {
     }
 
     public static PictureType valueOf(FileMagic fm) {
-        switch (fm) {
-            case BMP:
-                return PictureType.BMP;
-            case GIF:
-                return PictureType.GIF;
-            case JPEG:
-                return PictureType.JPEG;
-            case PNG:
-                return PictureType.PNG;
-            case XML:
+        return switch (fm) {
+            case BMP -> PictureType.BMP;
+            case GIF -> PictureType.GIF;
+            case JPEG -> PictureType.JPEG;
+            case PNG -> PictureType.PNG;
+            case XML ->
                 // this is quite fuzzy, to suppose all XMLs are SVGs when 
handling pictures ...
-                return PictureType.SVG;
-            case WMF:
-                return PictureType.WMF;
-            case EMF:
-                return PictureType.EMF;
-            case TIFF:
-                return PictureType.TIFF;
-            default:
-            case UNKNOWN:
-                return PictureType.UNKNOWN;
-        }
+                    PictureType.SVG;
+            case WMF -> PictureType.WMF;
+            case EMF -> PictureType.EMF;
+            case TIFF -> PictureType.TIFF;
+            default -> PictureType.UNKNOWN;
+        };
     }
 
     /**
diff --git 
a/poi/src/main/java/org/apache/poi/common/usermodel/fonts/FontHeader.java 
b/poi/src/main/java/org/apache/poi/common/usermodel/fonts/FontHeader.java
index 0204c2d597..39535eb05f 100644
--- a/poi/src/main/java/org/apache/poi/common/usermodel/fonts/FontHeader.java
+++ b/poi/src/main/java/org/apache/poi/common/usermodel/fonts/FontHeader.java
@@ -219,24 +219,19 @@ public class FontHeader implements FontInfo, 
GenericRecord {
     }
 
     public FontPitch getPitch() {
-        switch (getPanoseFamily()) {
-            default:
-            case ANY:
-            case NO_FIT:
-                return FontPitch.VARIABLE;
-
+        return switch (getPanoseFamily()) {
             // Latin Text
-            case TEXT_DISPLAY:
             // Latin Decorative
-            case DECORATIVE:
-                return (getPanoseProportion() == PanoseProportion.MONOSPACED) 
? FontPitch.FIXED : FontPitch.VARIABLE;
+            case TEXT_DISPLAY, DECORATIVE ->
+                    (getPanoseProportion() == PanoseProportion.MONOSPACED) ? 
FontPitch.FIXED : FontPitch.VARIABLE;
 
             // Latin Hand Written
-            case SCRIPT:
             // Latin Symbol
-            case PICTORIAL:
-                return (getPanoseProportion() == PanoseProportion.MODERN) ? 
FontPitch.FIXED : FontPitch.VARIABLE;
-        }
+            case SCRIPT, PICTORIAL ->
+                    (getPanoseProportion() == PanoseProportion.MODERN) ? 
FontPitch.FIXED : FontPitch.VARIABLE;
+
+            default -> FontPitch.VARIABLE;
+        };
 
     }
 
@@ -247,27 +242,20 @@ public class FontHeader implements FontInfo, 
GenericRecord {
                 return FontFamily.FF_DONTCARE;
             // Latin Text
             case TEXT_DISPLAY:
-                switch (getPanoseSerif()) {
-                    case TRIANGLE:
-                    case NORMAL_SANS:
-                    case OBTUSE_SANS:
-                    case PERP_SANS:
-                    case FLARED:
-                    case ROUNDED:
-                        return FontFamily.FF_SWISS;
-                    default:
-                        return FontFamily.FF_ROMAN;
-                }
+                return switch (getPanoseSerif()) {
+                    case TRIANGLE, NORMAL_SANS, OBTUSE_SANS, PERP_SANS, 
FLARED, ROUNDED -> FontFamily.FF_SWISS;
+                    default -> FontFamily.FF_ROMAN;
+                };
             // Latin Hand Written
             case SCRIPT:
                 return FontFamily.FF_SCRIPT;
-            // Latin Decorative
-            default:
-            case DECORATIVE:
-                return FontFamily.FF_DECORATIVE;
             // Latin Symbol
             case PICTORIAL:
                 return FontFamily.FF_MODERN;
+            // Latin Decorative
+            case DECORATIVE:
+            default:
+                return FontFamily.FF_DECORATIVE;
         }
     }
 
diff --git a/poi/src/main/java/org/apache/poi/hssf/model/InternalWorkbook.java 
b/poi/src/main/java/org/apache/poi/hssf/model/InternalWorkbook.java
index 48549efcfd..a33f21cbae 100644
--- a/poi/src/main/java/org/apache/poi/hssf/model/InternalWorkbook.java
+++ b/poi/src/main/java/org/apache/poi/hssf/model/InternalWorkbook.java
@@ -1340,39 +1340,27 @@ public final class InternalWorkbook {
      */
     private static ExtendedFormatRecord createExtendedFormat(int id) {
         // we'll need multiple editions
-        switch (id) {
-            case  0: return createExtendedFormat(0,    0, 0xfffffff5,          
0);
-            case  1:
-            case  2: return createExtendedFormat(1,    0, 0xfffffff5, 
0xfffff400);
-            case  3:
-            case  4: return createExtendedFormat(2,    0, 0xfffffff5, 
0xfffff400);
-            case  5:
-            case  6:
-            case  7:
-            case  8:
-            case  9:
-            case 10:
-            case 11:
-            case 12:
-            case 13:
-            case 14: return createExtendedFormat(0,    0, 0xfffffff5, 
0xfffff400);
+        return switch (id) {
+            case 0 -> createExtendedFormat(0, 0, 0xfffffff5, 0);
+            case 1, 2 -> createExtendedFormat(1, 0, 0xfffffff5, 0xfffff400);
+            case 3, 4 -> createExtendedFormat(2, 0, 0xfffffff5, 0xfffff400);
+            case 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 -> createExtendedFormat(0, 
0, 0xfffffff5, 0xfffff400);
             // cell records
-            case 15: return createExtendedFormat(0,    0,          1,          
0);
+            case 15 -> createExtendedFormat(0, 0, 1, 0);
             // style
-            case 16: return createExtendedFormat(1, 0x2b, 0xfffffff5, 
0xfffff800);
-            case 17: return createExtendedFormat(1, 0x29, 0xfffffff5, 
0xfffff800);
-            case 18: return createExtendedFormat(1, 0x2c, 0xfffffff5, 
0xfffff800);
-            case 19: return createExtendedFormat(1, 0x2a, 0xfffffff5, 
0xfffff800);
-            case 20: return createExtendedFormat(1, 0x09, 0xfffffff5, 
0xfffff800);
+            case 16 -> createExtendedFormat(1, 0x2b, 0xfffffff5, 0xfffff800);
+            case 17 -> createExtendedFormat(1, 0x29, 0xfffffff5, 0xfffff800);
+            case 18 -> createExtendedFormat(1, 0x2c, 0xfffffff5, 0xfffff800);
+            case 19 -> createExtendedFormat(1, 0x2a, 0xfffffff5, 0xfffff800);
+            case 20 -> createExtendedFormat(1, 0x09, 0xfffffff5, 0xfffff800);
             // unused from this point down
-            case 21: return createExtendedFormat(5,    0,          1,      
0x800);
-            case 22: return createExtendedFormat(6,    0,          1,     
0x5c00);
-            case 23: return createExtendedFormat(0, 0x31,          1,     
0x5c00);
-            case 24: return createExtendedFormat(0,    8,          1,     
0x5c00);
-            case 25: return createExtendedFormat(6,    8,          1,     
0x5c00);
-
-            default: throw new IllegalStateException("Unrecognized format id: 
" + id);
-        }
+            case 21 -> createExtendedFormat(5, 0, 1, 0x800);
+            case 22 -> createExtendedFormat(6, 0, 1, 0x5c00);
+            case 23 -> createExtendedFormat(0, 0x31, 1, 0x5c00);
+            case 24 -> createExtendedFormat(0, 8, 1, 0x5c00);
+            case 25 -> createExtendedFormat(6, 8, 1, 0x5c00);
+            default -> throw new IllegalStateException("Unrecognized format 
id: " + id);
+        };
     }
 
     private static ExtendedFormatRecord createExtendedFormat(
diff --git a/poi/src/main/java/org/apache/poi/hssf/model/RecordOrderer.java 
b/poi/src/main/java/org/apache/poi/hssf/model/RecordOrderer.java
index 6dfb9208f0..4131b1971f 100644
--- a/poi/src/main/java/org/apache/poi/hssf/model/RecordOrderer.java
+++ b/poi/src/main/java/org/apache/poi/hssf/model/RecordOrderer.java
@@ -366,8 +366,7 @@ final class RecordOrderer {
     }
 
     private static boolean isGutsPriorRecord(RecordBase rb) {
-        if (rb instanceof Record) {
-            Record record = (org.apache.poi.hssf.record.Record) rb;
+        if (rb instanceof Record record) {
             switch (record.getSid()) {
                 case BOFRecord.sid:
                 case IndexRecord.sid:
@@ -418,22 +417,11 @@ final class RecordOrderer {
      * of the sheet records
      */
     public static boolean isRowBlockRecord(int sid) {
-        switch (sid) {
-            case RowRecord.sid:
-
-            case BlankRecord.sid:
-            case BoolErrRecord.sid:
-            case FormulaRecord.sid:
-            case LabelRecord.sid:
-            case LabelSSTRecord.sid:
-            case NumberRecord.sid:
-            case RKRecord.sid:
-
-            case ArrayRecord.sid:
-            case SharedFormulaRecord.sid:
-            case TableRecord.sid:
-                return true;
-        }
-        return false;
+        return switch (sid) {
+            case RowRecord.sid, BlankRecord.sid, BoolErrRecord.sid, 
FormulaRecord.sid, LabelRecord.sid,
+                 LabelSSTRecord.sid, NumberRecord.sid, RKRecord.sid, 
ArrayRecord.sid, SharedFormulaRecord.sid,
+                 TableRecord.sid -> true;
+            default -> false;
+        };
     }
 }
diff --git a/poi/src/main/java/org/apache/poi/hssf/record/FilePassRecord.java 
b/poi/src/main/java/org/apache/poi/hssf/record/FilePassRecord.java
index 91cfded863..dc6bb7db41 100644
--- a/poi/src/main/java/org/apache/poi/hssf/record/FilePassRecord.java
+++ b/poi/src/main/java/org/apache/poi/hssf/record/FilePassRecord.java
@@ -63,17 +63,11 @@ public final class FilePassRecord extends StandardRecord {
     public FilePassRecord(RecordInputStream in) {
         encryptionType = in.readUShort();
 
-        EncryptionMode preferredMode;
-        switch (encryptionType) {
-            case ENCRYPTION_XOR:
-                preferredMode = EncryptionMode.xor;
-                break;
-            case ENCRYPTION_OTHER:
-                preferredMode = EncryptionMode.cryptoAPI;
-                break;
-            default:
-                throw new EncryptedDocumentException("invalid encryption 
type");
-        }
+        EncryptionMode preferredMode = switch (encryptionType) {
+            case ENCRYPTION_XOR -> EncryptionMode.xor;
+            case ENCRYPTION_OTHER -> EncryptionMode.cryptoAPI;
+            default -> throw new EncryptedDocumentException("invalid 
encryption type");
+        };
 
         try {
             encryptionInfo = new EncryptionInfo(in, preferredMode);
diff --git 
a/poi/src/main/java/org/apache/poi/hssf/record/FormulaSpecialCachedValue.java 
b/poi/src/main/java/org/apache/poi/hssf/record/FormulaSpecialCachedValue.java
index 4da28f8ba1..d6ea913474 100644
--- 
a/poi/src/main/java/org/apache/poi/hssf/record/FormulaSpecialCachedValue.java
+++ 
b/poi/src/main/java/org/apache/poi/hssf/record/FormulaSpecialCachedValue.java
@@ -101,17 +101,13 @@ public final class FormulaSpecialCachedValue implements 
GenericRecord {
 
     private String formatValue() {
         int typeCode = getTypeCode();
-        switch (typeCode) {
-            case STRING:
-                return "<string>";
-            case BOOLEAN:
-                return getDataValue() == 0 ? "FALSE" : "TRUE";
-            case ERROR_CODE:
-                return ErrorEval.getText(getDataValue());
-            case EMPTY:
-                return "<empty>";
-        }
-        return "#error(type=" + typeCode + ")#";
+        return switch (typeCode) {
+            case STRING -> "<string>";
+            case BOOLEAN -> getDataValue() == 0 ? "FALSE" : "TRUE";
+            case ERROR_CODE -> ErrorEval.getText(getDataValue());
+            case EMPTY -> "<empty>";
+            default -> "#error(type=" + typeCode + ")#";
+        };
     }
 
     private int getDataValue() {
@@ -150,16 +146,12 @@ public final class FormulaSpecialCachedValue implements 
GenericRecord {
     @Deprecated
     public int getValueType() {
         int typeCode = getTypeCode();
-        switch (typeCode) {
-            case EMPTY: // is this correct?
-            case STRING:
-                return CellType.STRING.getCode();
-            case BOOLEAN:
-                return CellType.BOOLEAN.getCode();
-            case ERROR_CODE:
-                return CellType.ERROR.getCode();
-        }
-        throw new IllegalStateException("Unexpected type id (" + typeCode + 
")");
+        return switch (typeCode) { // is this correct?
+            case EMPTY, STRING -> CellType.STRING.getCode();
+            case BOOLEAN -> CellType.BOOLEAN.getCode();
+            case ERROR_CODE -> CellType.ERROR.getCode();
+            default -> throw new IllegalStateException("Unexpected type id (" 
+ typeCode + ")");
+        };
     }
 
     /**
@@ -169,16 +161,12 @@ public final class FormulaSpecialCachedValue implements 
GenericRecord {
      */
     public CellType getValueTypeEnum() {
         int typeCode = getTypeCode();
-        switch (typeCode) {
-            case EMPTY: // is this correct?
-            case STRING:
-                return CellType.STRING;
-            case BOOLEAN:
-                return CellType.BOOLEAN;
-            case ERROR_CODE:
-                return CellType.ERROR;
-        }
-        throw new IllegalStateException("Unexpected type id (" + typeCode + 
")");
+        return switch (typeCode) { // is this correct?
+            case EMPTY, STRING -> CellType.STRING;
+            case BOOLEAN -> CellType.BOOLEAN;
+            case ERROR_CODE -> CellType.ERROR;
+            default -> throw new IllegalStateException("Unexpected type id (" 
+ typeCode + ")");
+        };
     }
 
     public boolean getBooleanValue() {
@@ -197,17 +185,14 @@ public final class FormulaSpecialCachedValue implements 
GenericRecord {
 
     private Object getGenericValue() {
         int typeCode = getTypeCode();
-        switch (typeCode) {
-            case EMPTY: // is this correct?
-                return null;
-            case STRING:
-                return "string";
-            case BOOLEAN:
-                return getBooleanValue();
-            case ERROR_CODE:
-                return getErrorValue();
-        }
-        throw new IllegalStateException("Unexpected type id (" + typeCode + 
")");
+        return switch (typeCode) {
+            case EMPTY -> // is this correct?
+                    null;
+            case STRING -> "string";
+            case BOOLEAN -> getBooleanValue();
+            case ERROR_CODE -> getErrorValue();
+            default -> throw new IllegalStateException("Unexpected type id (" 
+ typeCode + ")");
+        };
     }
 
     @Override
diff --git 
a/poi/src/main/java/org/apache/poi/hssf/record/InterfaceEndRecord.java 
b/poi/src/main/java/org/apache/poi/hssf/record/InterfaceEndRecord.java
index eabd453b4a..b3a43335ef 100644
--- a/poi/src/main/java/org/apache/poi/hssf/record/InterfaceEndRecord.java
+++ b/poi/src/main/java/org/apache/poi/hssf/record/InterfaceEndRecord.java
@@ -36,13 +36,11 @@ public final class InterfaceEndRecord extends 
StandardRecord {
     }
 
     public static org.apache.poi.hssf.record.Record create(RecordInputStream 
in) {
-        switch (in.remaining()) {
-            case 0:
-                return instance;
-            case 2:
-                return new InterfaceHdrRecord(in);
-        }
-        throw new RecordFormatException("Invalid record data size: " + 
in.remaining());
+        return switch (in.remaining()) {
+            case 0 -> instance;
+            case 2 -> new InterfaceHdrRecord(in);
+            default -> throw new RecordFormatException("Invalid record data 
size: " + in.remaining());
+        };
     }
 
     public void serialize(LittleEndianOutput out) {
diff --git a/poi/src/main/java/org/apache/poi/hssf/record/NameRecord.java 
b/poi/src/main/java/org/apache/poi/hssf/record/NameRecord.java
index 80d89f1ede..5bfe2d52ad 100644
--- a/poi/src/main/java/org/apache/poi/hssf/record/NameRecord.java
+++ b/poi/src/main/java/org/apache/poi/hssf/record/NameRecord.java
@@ -563,25 +563,23 @@ public final class NameRecord extends ContinuableRecord {
      */
     private static String translateBuiltInName(byte name)
     {
-        switch (name)
-        {
-            case NameRecord.BUILTIN_AUTO_ACTIVATE :     return "Auto_Activate";
-            case NameRecord.BUILTIN_AUTO_CLOSE :        return "Auto_Close";
-            case NameRecord.BUILTIN_AUTO_DEACTIVATE :   return 
"Auto_Deactivate";
-            case NameRecord.BUILTIN_AUTO_OPEN :         return "Auto_Open";
-            case NameRecord.BUILTIN_CONSOLIDATE_AREA :  return 
"Consolidate_Area";
-            case NameRecord.BUILTIN_CRITERIA :          return "Criteria";
-            case NameRecord.BUILTIN_DATABASE :          return "Database";
-            case NameRecord.BUILTIN_DATA_FORM :         return "Data_Form";
-            case NameRecord.BUILTIN_PRINT_AREA :        return "Print_Area";
-            case NameRecord.BUILTIN_PRINT_TITLE :       return "Print_Titles";
-            case NameRecord.BUILTIN_RECORDER :          return "Recorder";
-            case NameRecord.BUILTIN_SHEET_TITLE :       return "Sheet_Title";
-            case NameRecord.BUILTIN_FILTER_DB  :        return 
"_FilterDatabase";
+        return switch (name) {
+            case NameRecord.BUILTIN_AUTO_ACTIVATE -> "Auto_Activate";
+            case NameRecord.BUILTIN_AUTO_CLOSE -> "Auto_Close";
+            case NameRecord.BUILTIN_AUTO_DEACTIVATE -> "Auto_Deactivate";
+            case NameRecord.BUILTIN_AUTO_OPEN -> "Auto_Open";
+            case NameRecord.BUILTIN_CONSOLIDATE_AREA -> "Consolidate_Area";
+            case NameRecord.BUILTIN_CRITERIA -> "Criteria";
+            case NameRecord.BUILTIN_DATABASE -> "Database";
+            case NameRecord.BUILTIN_DATA_FORM -> "Data_Form";
+            case NameRecord.BUILTIN_PRINT_AREA -> "Print_Area";
+            case NameRecord.BUILTIN_PRINT_TITLE -> "Print_Titles";
+            case NameRecord.BUILTIN_RECORDER -> "Recorder";
+            case NameRecord.BUILTIN_SHEET_TITLE -> "Sheet_Title";
+            case NameRecord.BUILTIN_FILTER_DB -> "_FilterDatabase";
+            default -> "Unknown";
+        };
 
-        }
-
-        return "Unknown";
     }
 
     @Override
diff --git a/poi/src/main/java/org/apache/poi/hssf/record/UnknownRecord.java 
b/poi/src/main/java/org/apache/poi/hssf/record/UnknownRecord.java
index f67002f8d9..59bcd95f7a 100644
--- a/poi/src/main/java/org/apache/poi/hssf/record/UnknownRecord.java
+++ b/poi/src/main/java/org/apache/poi/hssf/record/UnknownRecord.java
@@ -202,66 +202,21 @@ public final class UnknownRecord extends StandardRecord {
      */
     private static boolean isObservedButUnknown(int sid) {
         // TODO Look up more of these in the latest [MS-XLS] doc and move to 
getBiffName
-        switch (sid) {
-            case 0x0033:
-                // contains 2 bytes of data: 0x0001 or 0x0003
-            case 0x0034:
-                // Seems to be written by MSAccess
-                // contains text "[Microsoft JET Created Table]0021010"
-                // appears after last cell value record and before WINDOW2
-            case 0x01BD:
-            case 0x01C2:
-                // Written by Excel 2007
-                // rawData is multiple of 12 bytes long
-                // appears after last cell value record and before WINDOW2 or 
drawing records
-
-            case 0x1009:
-            case 0x100A:
-            case 0x100B:
-            case 0x100C:
-            case 0x1014:
-            case 0x1017:
-            case 0x1018:
-            case 0x1019:
-            case 0x101A:
-            case 0x101B:
-            case 0x101D:
-            case 0x101E:
-            case 0x101F:
-            case 0x1020:
-            case 0x1021:
-            case 0x1022:
-            case 0x1024:
-            case 0x1025:
-            case 0x1026:
-            case 0x1027:
-            case 0x1032:
-            case 0x1033:
-            case 0x1034:
-            case 0x1035:
-            case 0x103A:
-            case 0x1041:
-            case 0x1043:
-            case 0x1044:
-            case 0x1045:
-            case 0x1046:
-            case 0x104A:
-            case 0x104B:
-            case 0x104E:
-            case 0x104F:
-            case 0x1051:
-            case 0x105C:
-            case 0x105D:
-            case 0x105F:
-            case 0x1060:
-            case 0x1062:
-            case 0x1063:
-            case 0x1064:
-            case 0x1065:
-            case 0x1066:
-                return true;
-        }
-        return false;
+        return switch (sid) {
+            // contains 2 bytes of data: 0x0001 or 0x0003
+            // Seems to be written by MSAccess
+            // contains text "[Microsoft JET Created Table]0021010"
+            // appears after last cell value record and before WINDOW2
+            // Written by Excel 2007
+            // rawData is multiple of 12 bytes long
+            // appears after last cell value record and before WINDOW2 or 
drawing records
+
+            case 0x0033, 0x0034, 0x01BD, 0x01C2, 0x1009, 0x100A, 0x100B, 
0x100C, 0x1014, 0x1017, 0x1018, 0x1019, 0x101A,
+                 0x101B, 0x101D, 0x101E, 0x101F, 0x1020, 0x1021, 0x1022, 
0x1024, 0x1025, 0x1026, 0x1027, 0x1032, 0x1033,
+                 0x1034, 0x1035, 0x103A, 0x1041, 0x1043, 0x1044, 0x1045, 
0x1046, 0x104A, 0x104B, 0x104E, 0x104F, 0x1051,
+                 0x105C, 0x105D, 0x105F, 0x1060, 0x1062, 0x1063, 0x1064, 
0x1065, 0x1066 -> true;
+            default -> false;
+        };
     }
 
     @Override
diff --git 
a/poi/src/main/java/org/apache/poi/hssf/record/aggregates/PageSettingsBlock.java
 
b/poi/src/main/java/org/apache/poi/hssf/record/aggregates/PageSettingsBlock.java
index 623a9cac73..3b2a71cdbc 100644
--- 
a/poi/src/main/java/org/apache/poi/hssf/record/aggregates/PageSettingsBlock.java
+++ 
b/poi/src/main/java/org/apache/poi/hssf/record/aggregates/PageSettingsBlock.java
@@ -126,25 +126,15 @@ public final class PageSettingsBlock extends 
RecordAggregate {
      * 'Page Settings Block'.
      */
     public static boolean isComponentRecord(int sid) {
-        switch (sid) {
-            case HorizontalPageBreakRecord.sid:
-            case VerticalPageBreakRecord.sid:
-            case HeaderRecord.sid:
-            case FooterRecord.sid:
-            case HCenterRecord.sid:
-            case VCenterRecord.sid:
-            case LeftMarginRecord.sid:
-            case RightMarginRecord.sid:
-            case TopMarginRecord.sid:
-            case BottomMarginRecord.sid:
-            case UnknownRecord.PLS_004D:
-            case PrintSetupRecord.sid:
-            case UnknownRecord.BITMAP_00E9:
-            case UnknownRecord.PRINTSIZE_0033:
-            case HeaderFooterRecord.sid: // extra header/footer settings 
supported by Excel 2007
-                return true;
-        }
-        return false;
+        return switch (sid) {
+            case HorizontalPageBreakRecord.sid, VerticalPageBreakRecord.sid, 
HeaderRecord.sid, FooterRecord.sid,
+                 HCenterRecord.sid, VCenterRecord.sid, LeftMarginRecord.sid, 
RightMarginRecord.sid, TopMarginRecord.sid,
+                 BottomMarginRecord.sid, UnknownRecord.PLS_004D, 
PrintSetupRecord.sid, UnknownRecord.BITMAP_00E9,
+                 UnknownRecord.PRINTSIZE_0033,
+                 HeaderFooterRecord.sid -> // extra header/footer settings 
supported by Excel 2007
+                    true;
+            default -> false;
+        };
     }
 
     private boolean readARecord(RecordStream rs) {
@@ -411,13 +401,13 @@ public final class PageSettingsBlock extends 
RecordAggregate {
 
 
     private Margin getMarginRec(int marginIndex) {
-        switch (marginIndex) {
-            case InternalSheet.LeftMargin:   return _leftMargin;
-            case InternalSheet.RightMargin:  return _rightMargin;
-            case InternalSheet.TopMargin:    return _topMargin;
-            case InternalSheet.BottomMargin: return _bottomMargin;
-        }
-        throw new IllegalArgumentException( "Unknown margin constant:  " + 
marginIndex );
+        return switch (marginIndex) {
+            case InternalSheet.LeftMargin -> _leftMargin;
+            case InternalSheet.RightMargin -> _rightMargin;
+            case InternalSheet.TopMargin -> _topMargin;
+            case InternalSheet.BottomMargin -> _bottomMargin;
+            default -> throw new IllegalArgumentException("Unknown margin 
constant:  " + marginIndex);
+        };
     }
 
 
@@ -448,26 +438,25 @@ public final class PageSettingsBlock extends 
RecordAggregate {
     public void setMargin(short margin, double size) {
         Margin m = getMarginRec(margin);
         if (m  == null) {
-            switch (margin) {
-                case InternalSheet.LeftMargin:
+            m = switch (margin) {
+                case InternalSheet.LeftMargin -> {
                     _leftMargin = new LeftMarginRecord();
-                    m = _leftMargin;
-                    break;
-                case InternalSheet.RightMargin:
+                    yield _leftMargin;
+                }
+                case InternalSheet.RightMargin -> {
                     _rightMargin = new RightMarginRecord();
-                    m = _rightMargin;
-                    break;
-                case InternalSheet.TopMargin:
+                    yield _rightMargin;
+                }
+                case InternalSheet.TopMargin -> {
                     _topMargin = new TopMarginRecord();
-                    m = _topMargin;
-                    break;
-                case InternalSheet.BottomMargin:
+                    yield _topMargin;
+                }
+                case InternalSheet.BottomMargin -> {
                     _bottomMargin = new BottomMarginRecord();
-                    m = _bottomMargin;
-                    break;
-                default :
-                    throw new IllegalArgumentException( "Unknown margin 
constant:  " + margin );
-            }
+                    yield _bottomMargin;
+                }
+                default -> throw new IllegalArgumentException("Unknown margin 
constant:  " + margin);
+            };
         }
         m.setMargin( size );
     }
diff --git 
a/poi/src/main/java/org/apache/poi/hssf/record/aggregates/WorksheetProtectionBlock.java
 
b/poi/src/main/java/org/apache/poi/hssf/record/aggregates/WorksheetProtectionBlock.java
index da74baaf57..5215be306d 100644
--- 
a/poi/src/main/java/org/apache/poi/hssf/record/aggregates/WorksheetProtectionBlock.java
+++ 
b/poi/src/main/java/org/apache/poi/hssf/record/aggregates/WorksheetProtectionBlock.java
@@ -52,14 +52,10 @@ public final class WorksheetProtectionBlock extends 
RecordAggregate {
      *         the 'Page Settings Block'.
      */
     public static boolean isComponentRecord(int sid) {
-        switch (sid) {
-            case ProtectRecord.sid:
-            case ObjectProtectRecord.sid:
-            case ScenarioProtectRecord.sid:
-            case PasswordRecord.sid:
-                return true;
-        }
-        return false;
+        return switch (sid) {
+            case ProtectRecord.sid, ObjectProtectRecord.sid, 
ScenarioProtectRecord.sid, PasswordRecord.sid -> true;
+            default -> false;
+        };
     }
 
     private boolean readARecord(RecordStream rs) {
diff --git 
a/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
 
b/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
index 112d02c0e9..567e75f189 100644
--- 
a/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
+++ 
b/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
@@ -180,27 +180,23 @@ public final class Biff8DecryptingStream implements 
BiffHeaderInput, LittleEndia
      * @return {@code true} if record type specified by {@code sid} is never 
encrypted
      */
     public static boolean isNeverEncryptedRecord(int sid) {
-        switch (sid) {
-            case BOFRecord.sid:
-                // sheet BOFs for sure
-                // TODO - find out about chart BOFs
+        return switch (sid) {
+            // sheet BOFs for sure
+            // TODO - find out about chart BOFs
 
-            case InterfaceHdrRecord.sid:
-                // don't know why this record doesn't seem to get encrypted
+            // don't know why this record doesn't seem to get encrypted
 
-            case FilePassRecord.sid:
+            case BOFRecord.sid, InterfaceHdrRecord.sid, FilePassRecord.sid ->
                 // this only really counts when writing because FILEPASS is 
read early
 
-            // UsrExcl(0x0194)
-            // FileLock
-            // RRDInfo(0x0196)
-            // RRDHead(0x0138)
+                // UsrExcl(0x0194)
+                // FileLock
+                // RRDInfo(0x0196)
+                // RRDHead(0x0138)
 
-                return true;
-
-            default:
-                return false;
-        }
+                    true;
+            default -> false;
+        };
     }
 
     @Override
diff --git a/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFCell.java 
b/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFCell.java
index 7f205de8a2..760f182f84 100644
--- a/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFCell.java
+++ b/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFCell.java
@@ -206,19 +206,19 @@ public class HSSFCell extends CellBase {
         }
         // all others are plain BIFF records
         Record record = ( Record ) cval;
-        switch (record.getSid()) {
-
-            case NumberRecord.sid :   return CellType.NUMERIC;
-            case BlankRecord.sid :    return CellType.BLANK;
-            case LabelSSTRecord.sid : return CellType.STRING;
-            case BoolErrRecord.sid :
-                BoolErrRecord boolErrRecord = ( BoolErrRecord ) record;
-
-                return boolErrRecord.isBoolean()
-                         ? CellType.BOOLEAN
-                         : CellType.ERROR;
-        }
-        throw new IllegalStateException("Bad cell value rec (" + 
cval.getClass().getName() + ")");
+        return switch (record.getSid()) {
+            case NumberRecord.sid -> CellType.NUMERIC;
+            case BlankRecord.sid -> CellType.BLANK;
+            case LabelSSTRecord.sid -> CellType.STRING;
+            case BoolErrRecord.sid -> {
+                BoolErrRecord boolErrRecord = (BoolErrRecord) record;
+
+                yield boolErrRecord.isBoolean()
+                        ? CellType.BOOLEAN
+                        : CellType.ERROR;
+            }
+            default -> throw new IllegalStateException("Bad cell value rec (" 
+ cval.getClass().getName() + ")");
+        };
     }
 
     /**
@@ -552,18 +552,13 @@ public class HSSFCell extends CellBase {
 
     private CellValue readValue() {
         final CellType valueType = getCellType() == CellType.FORMULA ? 
getCachedFormulaResultType() : getCellType();
-        switch (valueType) {
-            case NUMERIC:
-                return new CellValue(getNumericCellValue());
-            case STRING:
-                return new CellValue(getStringCellValue());
-            case BOOLEAN:
-                return CellValue.valueOf(getBooleanCellValue());
-            case ERROR:
-                return CellValue.getError(getErrorCellValue());
-            default:
-                throw new IllegalStateException("Unexpected cell-type " + 
valueType);
-        }
+        return switch (valueType) {
+            case NUMERIC -> new CellValue(getNumericCellValue());
+            case STRING -> new CellValue(getStringCellValue());
+            case BOOLEAN -> CellValue.valueOf(getBooleanCellValue());
+            case ERROR -> CellValue.getError(getErrorCellValue());
+            default -> throw new IllegalStateException("Unexpected cell-type " 
+ valueType);
+        };
     }
 
     private void restoreValue(CellValue value) {
@@ -885,18 +880,13 @@ public class HSSFCell extends CellBase {
         }
         FormulaRecordAggregate fra = ((FormulaRecordAggregate)_record);
         FormulaRecord fr = fra.getFormulaRecord();
-        switch (fr.getCachedResultType()) {
-            case BOOLEAN:
-                return fr.getCachedBooleanValue() ? "TRUE" : "FALSE";
-            case STRING:
-                return fra.getStringValue();
-            case NUMERIC:
-                return NumberToTextConverter.toText(fr.getValue());
-            case ERROR:
-                return 
FormulaError.forInt(fr.getCachedErrorValue()).getString();
-            default:
-                throw new IllegalStateException("Unexpected formula result 
type (" + _cellType + ")");
-        }
+        return switch (fr.getCachedResultType()) {
+            case BOOLEAN -> fr.getCachedBooleanValue() ? "TRUE" : "FALSE";
+            case STRING -> fra.getStringValue();
+            case NUMERIC -> NumberToTextConverter.toText(fr.getValue());
+            case ERROR -> 
FormulaError.forInt(fr.getCachedErrorValue()).getString();
+            default -> throw new IllegalStateException("Unexpected formula 
result type (" + _cellType + ")");
+        };
 
     }
 
@@ -1049,27 +1039,22 @@ public class HSSFCell extends CellBase {
      * Errors are displayed as #ERR&lt;errIdx&gt;
      */
     public String toString() {
-        switch (getCellType()) {
-            case BLANK:
-                return "";
-            case BOOLEAN:
-                return getBooleanCellValue() ? "TRUE" : "FALSE";
-            case ERROR:
-                return ErrorEval.getText((( BoolErrRecord ) 
_record).getErrorValue());
-            case FORMULA:
-                return getCellFormula();
-            case NUMERIC:
+        return switch (getCellType()) {
+            case BLANK -> "";
+            case BOOLEAN -> getBooleanCellValue() ? "TRUE" : "FALSE";
+            case ERROR -> ErrorEval.getText(((BoolErrRecord) 
_record).getErrorValue());
+            case FORMULA -> getCellFormula();
+            case NUMERIC -> {
                 if (DateUtil.isCellDateFormatted(this)) {
                     DataFormatter df = new DataFormatter();
                     df.setUseCachedValuesForFormulaCells(true);
-                    return df.formatCellValue(this);
+                    yield df.formatCellValue(this);
                 }
-                return Double.toString(getNumericCellValue());
-            case STRING:
-                return getRichStringCellValue().toString();
-            default:
-                return "Unknown Cell Type: " + getCellType();
-        }
+                yield Double.toString(getNumericCellValue());
+            }
+            case STRING -> getRichStringCellValue().toString();
+            default -> "Unknown Cell Type: " + getCellType();
+        };
     }
 
     /**
diff --git 
a/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFPictureData.java 
b/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFPictureData.java
index 702d3602e2..22dfdfe955 100644
--- a/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFPictureData.java
+++ b/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFPictureData.java
@@ -82,46 +82,30 @@ public class HSSFPictureData implements PictureData
     */
     @Override
     public String suggestFileExtension() {
-        switch (EscherRecordTypes.forTypeID(blip.getRecordId())) {
-            case BLIP_WMF:
-                return "wmf";
-            case BLIP_EMF:
-                return "emf";
-            case BLIP_PICT:
-                return "pict";
-            case BLIP_PNG:
-                return "png";
-            case BLIP_JPEG:
-                return "jpeg";
-            case BLIP_DIB:
-                return "dib";
-            case BLIP_TIFF:
-                return "tif";
-            default:
-                return "";
-        }
+        return switch (EscherRecordTypes.forTypeID(blip.getRecordId())) {
+            case BLIP_WMF -> "wmf";
+            case BLIP_EMF -> "emf";
+            case BLIP_PICT -> "pict";
+            case BLIP_PNG -> "png";
+            case BLIP_JPEG -> "jpeg";
+            case BLIP_DIB -> "dib";
+            case BLIP_TIFF -> "tif";
+            default -> "";
+        };
     }
 
     @Override
     public String getMimeType() {
-       switch (EscherRecordTypes.forTypeID(blip.getRecordId())) {
-           case BLIP_WMF:
-               return "image/x-wmf";
-           case BLIP_EMF:
-               return "image/x-emf";
-           case BLIP_PICT:
-               return "image/x-pict";
-           case BLIP_PNG:
-               return "image/png";
-           case BLIP_JPEG:
-               return "image/jpeg";
-           case BLIP_DIB:
-               return "image/bmp";
-           case BLIP_TIFF:
-               return "image/tiff";
-           default:
-               return "image/unknown";
-       }
+        return switch (EscherRecordTypes.forTypeID(blip.getRecordId())) {
+            case BLIP_WMF -> "image/x-wmf";
+            case BLIP_EMF -> "image/x-emf";
+            case BLIP_PICT -> "image/x-pict";
+            case BLIP_PNG -> "image/png";
+            case BLIP_JPEG -> "image/jpeg";
+            case BLIP_DIB -> "image/bmp";
+            case BLIP_TIFF -> "image/tiff";
+            default -> "image/unknown";
+        };
     }
 
     /**
@@ -130,23 +114,15 @@ public class HSSFPictureData implements PictureData
      */
     @Override
     public int getPictureType() {
-        switch (EscherRecordTypes.forTypeID(blip.getRecordId())) {
-            case BLIP_WMF:
-                return Workbook.PICTURE_TYPE_WMF;
-            case BLIP_EMF:
-                return Workbook.PICTURE_TYPE_EMF;
-            case BLIP_PICT:
-                return Workbook.PICTURE_TYPE_PICT;
-            case BLIP_PNG:
-                return Workbook.PICTURE_TYPE_PNG;
-            case BLIP_JPEG:
-                return Workbook.PICTURE_TYPE_JPEG;
-            case BLIP_DIB:
-                return Workbook.PICTURE_TYPE_DIB;
-            case BLIP_TIFF:
-                // not another int constant ...
-            default:
-                return 0;
-        }
+        return switch (EscherRecordTypes.forTypeID(blip.getRecordId())) {
+            case BLIP_WMF -> Workbook.PICTURE_TYPE_WMF;
+            case BLIP_EMF -> Workbook.PICTURE_TYPE_EMF;
+            case BLIP_PICT -> Workbook.PICTURE_TYPE_PICT;
+            case BLIP_PNG -> Workbook.PICTURE_TYPE_PNG;
+            case BLIP_JPEG -> Workbook.PICTURE_TYPE_JPEG;
+            case BLIP_DIB -> Workbook.PICTURE_TYPE_DIB;
+            // not another int constant ...
+            default -> 0;
+        };
     }
 }
diff --git a/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFRow.java 
b/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFRow.java
index ad1ba4fe2d..ae6e04b931 100644
--- a/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFRow.java
+++ b/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFRow.java
@@ -378,17 +378,15 @@ public final class HSSFRow implements Row, 
Comparable<HSSFRow> {
     @Override
     public HSSFCell getCell(int cellnum, MissingCellPolicy policy) {
         HSSFCell cell = retrieveCell(cellnum);
-        switch (policy) {
-            case RETURN_NULL_AND_BLANK:
-                return cell;
-            case RETURN_BLANK_AS_NULL:
+        return switch (policy) {
+            case RETURN_NULL_AND_BLANK -> cell;
+            case RETURN_BLANK_AS_NULL -> {
                 boolean isBlank = (cell != null && cell.getCellType() == 
CellType.BLANK);
-                return (isBlank) ? null : cell;
-            case CREATE_NULL_AS_BLANK:
-                return (cell == null) ? createCell(cellnum, CellType.BLANK) : 
cell;
-            default:
-                throw new IllegalArgumentException("Illegal policy " + policy);
-        }
+                yield (isBlank) ? null : cell;
+            }
+            case CREATE_NULL_AS_BLANK -> (cell == null) ? createCell(cellnum, 
CellType.BLANK) : cell;
+            default -> throw new IllegalArgumentException("Illegal policy " + 
policy);
+        };
     }
 
     /**
diff --git a/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFSheet.java 
b/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
index f6310ceb2d..bd874b585f 100644
--- a/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
+++ b/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
@@ -1329,14 +1329,11 @@ public final class HSSFSheet implements Sheet {
      */
     @Override
     public double getMargin(PageMargin margin) {
-        switch (margin) {
-            case FOOTER:
-                return 
_sheet.getPageSettings().getPrintSetup().getFooterMargin();
-            case HEADER:
-                return 
_sheet.getPageSettings().getPrintSetup().getHeaderMargin();
-            default:
-                return 
_sheet.getPageSettings().getMargin(margin.getLegacyApiValue());
-        }
+        return switch (margin) {
+            case FOOTER -> 
_sheet.getPageSettings().getPrintSetup().getFooterMargin();
+            case HEADER -> 
_sheet.getPageSettings().getPrintSetup().getHeaderMargin();
+            default -> 
_sheet.getPageSettings().getMargin(margin.getLegacyApiValue());
+        };
     }
 
     /**
@@ -1902,22 +1899,12 @@ public final class HSSFSheet implements Sheet {
      */
     @Override
     public void createSplitPane(int xSplitPos, int ySplitPos, int 
leftmostColumn, int topRow, PaneType activePane) {
-        byte activePaneByte;
-        switch (activePane) {
-            case LOWER_RIGHT:
-                activePaneByte = Sheet.PANE_LOWER_RIGHT;
-                break;
-            case UPPER_RIGHT:
-                activePaneByte = Sheet.PANE_UPPER_RIGHT;
-                break;
-            case LOWER_LEFT:
-                activePaneByte = Sheet.PANE_LOWER_LEFT;
-                break;
-            case UPPER_LEFT:
-            default:
-                activePaneByte = Sheet.PANE_UPPER_LEFT;
-                break;
-        }
+        byte activePaneByte = switch (activePane) {
+            case LOWER_RIGHT -> Sheet.PANE_LOWER_RIGHT;
+            case UPPER_RIGHT -> Sheet.PANE_UPPER_RIGHT;
+            case LOWER_LEFT -> Sheet.PANE_LOWER_LEFT;
+            default -> Sheet.PANE_UPPER_LEFT;
+        };
         getSheet().createSplitPane(xSplitPos, ySplitPos, topRow, 
leftmostColumn, activePaneByte);
     }
 
diff --git a/poi/src/main/java/org/apache/poi/sl/draw/geom/BuiltInGuide.java 
b/poi/src/main/java/org/apache/poi/sl/draw/geom/BuiltInGuide.java
index 63501a985c..17b9d2282f 100644
--- a/poi/src/main/java/org/apache/poi/sl/draw/geom/BuiltInGuide.java
+++ b/poi/src/main/java/org/apache/poi/sl/draw/geom/BuiltInGuide.java
@@ -34,120 +34,119 @@ import java.awt.geom.Rectangle2D;
     public double evaluate(Context ctx) {
         Rectangle2D anchor = ctx.getShapeAnchor();
         double height = anchor.getHeight(), width = anchor.getWidth(), ss = 
Math.min(width, height);
-        switch (this) {
-            case _3cd4:
+        return switch (this) {
+            case _3cd4 ->
                 // 3 circles div 4: 3 x 360 / 4 = 270
-                return 270 * OOXML_DEGREE;
-            case _3cd8:
+                    270 * OOXML_DEGREE;
+            case _3cd8 ->
                 // 3 circles div 8: 3 x 360 / 8 = 135
-                return 135 * OOXML_DEGREE;
-            case _5cd8:
+                    135 * OOXML_DEGREE;
+            case _5cd8 ->
                 // 5 circles div 8: 5 x 360 / 8 = 225
-                return 225 * OOXML_DEGREE;
-            case _7cd8:
+                    225 * OOXML_DEGREE;
+            case _7cd8 ->
                 // 7 circles div 8: 7 x 360 / 8 = 315
-                return 315 * OOXML_DEGREE;
-            case _t:
+                    315 * OOXML_DEGREE;
+            case _t ->
                 // top
-                return anchor.getY();
-            case _b:
+                    anchor.getY();
+            case _b ->
                 // bottom
-                return anchor.getMaxY();
-            case _l:
+                    anchor.getMaxY();
+            case _l ->
                 // left
-                return anchor.getX();
-            case _r:
+                    anchor.getX();
+            case _r ->
                 // right
-                return anchor.getMaxX();
-            case _cd2:
+                    anchor.getMaxX();
+            case _cd2 ->
                 // circle div 2: 360 / 2 = 180
-                return 180 * OOXML_DEGREE;
-            case _cd4:
+                    180 * OOXML_DEGREE;
+            case _cd4 ->
                 // circle div 4: 360 / 4 = 90
-                return 90 * OOXML_DEGREE;
-            case _cd8:
+                    90 * OOXML_DEGREE;
+            case _cd8 ->
                 // circle div 8: 360 / 8 = 45
-                return 45 * OOXML_DEGREE;
-            case _hc:
+                    45 * OOXML_DEGREE;
+            case _hc ->
                 // horizontal center
-                return anchor.getCenterX();
-            case _h:
+                    anchor.getCenterX();
+            case _h ->
                 // height
-                return height;
-            case _hd2:
+                    height;
+            case _hd2 ->
                 // height div 2
-                return height / 2.;
-            case _hd3:
+                    height / 2.;
+            case _hd3 ->
                 // height div 3
-                return height / 3.;
-            case _hd4:
+                    height / 3.;
+            case _hd4 ->
                 // height div 4
-                return height / 4.;
-            case _hd5:
+                    height / 4.;
+            case _hd5 ->
                 // height div 5
-                return height / 5.;
-            case _hd6:
+                    height / 5.;
+            case _hd6 ->
                 // height div 6
-                return height / 6.;
-            case _hd8:
+                    height / 6.;
+            case _hd8 ->
                 // height div 8
-                return height / 8.;
-            case _ls:
+                    height / 8.;
+            case _ls ->
                 // long side
-                return Math.max(width, height);
-            case _ss:
+                    Math.max(width, height);
+            case _ss ->
                 // short side
-                return ss;
-            case _ssd2:
+                    ss;
+            case _ssd2 ->
                 // short side div 2
-                return ss / 2.;
-            case _ssd4:
+                    ss / 2.;
+            case _ssd4 ->
                 // short side div 4
-                return ss / 4.;
-            case _ssd6:
+                    ss / 4.;
+            case _ssd6 ->
                 // short side div 6
-                return ss / 6.;
-            case _ssd8:
+                    ss / 6.;
+            case _ssd8 ->
                 // short side div 8
-                return ss / 8.;
-            case _ssd16:
+                    ss / 8.;
+            case _ssd16 ->
                 // short side div 16
-                return ss / 16.;
-            case _ssd32:
+                    ss / 16.;
+            case _ssd32 ->
                 // short side div 32
-                return ss / 32.;
-            case _vc:
+                    ss / 32.;
+            case _vc ->
                 // vertical center
-                return anchor.getCenterY();
-            case _w:
+                    anchor.getCenterY();
+            case _w ->
                 // width
-                return width;
-            case _wd2:
+                    width;
+            case _wd2 ->
                 // width div 2
-                return width / 2.;
-            case _wd3:
+                    width / 2.;
+            case _wd3 ->
                 // width div 3
-                return width / 3.;
-            case _wd4:
+                    width / 3.;
+            case _wd4 ->
                 // width div 4
-                return width / 4.;
-            case _wd5:
+                    width / 4.;
+            case _wd5 ->
                 // width div 5
-                return width / 5.;
-            case _wd6:
+                    width / 5.;
+            case _wd6 ->
                 // width div 6
-                return width / 6.;
-            case _wd8:
+                    width / 6.;
+            case _wd8 ->
                 // width div 8
-                return width / 8.;
-            case _wd10:
+                    width / 8.;
+            case _wd10 ->
                 // width div 10
-                return width / 10.;
-            case _wd32:
+                    width / 10.;
+            case _wd32 ->
                 // width div 32
-                return width / 32.;
-            default:
-                return 0;
-        }
+                    width / 32.;
+            default -> 0;
+        };
     }
 }
\ No newline at end of file
diff --git a/poi/src/main/java/org/apache/poi/sl/draw/geom/GuideIf.java 
b/poi/src/main/java/org/apache/poi/sl/draw/geom/GuideIf.java
index ff0e58d351..1b7d03b133 100644
--- a/poi/src/main/java/org/apache/poi/sl/draw/geom/GuideIf.java
+++ b/poi/src/main/java/org/apache/poi/sl/draw/geom/GuideIf.java
@@ -57,63 +57,62 @@ public interface GuideIf extends Formula {
         double x = (operands.length > 1) ? ctx.getValue(operands[1]) : 0;
         double y = (operands.length > 2) ? ctx.getValue(operands[2]) : 0;
         double z = (operands.length > 3) ? ctx.getValue(operands[3]) : 0;
-        switch (op) {
-            case abs:
+        return switch (op) {
+            case abs ->
                 // Absolute Value Formula
-                return abs(x);
-            case adddiv:
+                    abs(x);
+            case adddiv ->
                 // Add Divide Formula
-                return (z == 0) ? 0 : (x + y) / z;
-            case addsub:
+                    (z == 0) ? 0 : (x + y) / z;
+            case addsub ->
                 // Add Subtract Formula
-                return (x + y) - z;
-            case at2:
+                    (x + y) - z;
+            case at2 ->
                 // ArcTan Formula: "at2 x y" = arctan( y / z ) = value of this 
guide
-                return toDegrees(atan2(y, x)) * OOXML_DEGREE;
-            case cos:
+                    toDegrees(atan2(y, x)) * OOXML_DEGREE;
+            case cos ->
                 // Cosine Formula: "cos x y" = (x * cos( y )) = value of this 
guide
-                return x * cos(toRadians(y / OOXML_DEGREE));
-            case cat2:
+                    x * cos(toRadians(y / OOXML_DEGREE));
+            case cat2 ->
                 // Cosine ArcTan Formula: "cat2 x y z" = (x * cos(arctan(z / 
y) )) = value of this guide
-                return x * cos(atan2(z, y));
-            case ifelse:
+                    x * cos(atan2(z, y));
+            case ifelse ->
                 // If Else Formula: "?: x y z" = if (x > 0), then y = value of 
this guide,
                 // else z = value of this guide
-                return x > 0 ? y : z;
-            case val:
+                    x > 0 ? y : z;
+            case val ->
                 // Literal Value Expression
-                return x;
-            case max:
+                    x;
+            case max ->
                 // Maximum Value Formula
-                return max(x, y);
-            case min:
+                    max(x, y);
+            case min ->
                 // Minimum Value Formula
-                return min(x, y);
-            case mod:
+                    min(x, y);
+            case mod ->
                 // Modulo Formula: "mod x y z" = sqrt(x^2 + b^2 + c^2) = value 
of this guide
-                return sqrt(x*x + y*y + z*z);
-            case muldiv:
+                    sqrt(x * x + y * y + z * z);
+            case muldiv ->
                 // Multiply Divide Formula
-                return (z == 0) ? 0 : (x * y) / z;
-            case pin:
+                    (z == 0) ? 0 : (x * y) / z;
+            case pin ->
                 // Pin To Formula: "pin x y z" = if (y < x), then x = value of 
this guide
                 // else if (y > z), then z = value of this guide
                 // else y = value of this guide
-                return max(x, min(y, z));
-            case sat2:
+                    max(x, min(y, z));
+            case sat2 ->
                 // Sine ArcTan Formula: "sat2 x y z" = (x*sin(arctan(z / y))) 
= value of this guide
-                return x * sin(atan2(z, y));
-            case sin:
+                    x * sin(atan2(z, y));
+            case sin ->
                 // Sine Formula: "sin x y" = (x * sin( y )) = value of this 
guide
-                return x * sin(toRadians(y / OOXML_DEGREE));
-            case sqrt:
+                    x * sin(toRadians(y / OOXML_DEGREE));
+            case sqrt ->
                 // Square Root Formula: "sqrt x" = sqrt(x) = value of this 
guide
-                return sqrt(x);
-            case tan:
+                    sqrt(x);
+            case tan ->
                 // Tangent Formula: "tan x y" = (x * tan( y )) = value of this 
guide
-                return x * tan(toRadians(y / OOXML_DEGREE));
-            default:
-                return 0;
-        }
+                    x * tan(toRadians(y / OOXML_DEGREE));
+            default -> 0;
+        };
     }
 }
diff --git a/poi/src/main/java/org/apache/poi/sl/draw/geom/PresetParser.java 
b/poi/src/main/java/org/apache/poi/sl/draw/geom/PresetParser.java
index 424e8aa011..9252596bbd 100644
--- a/poi/src/main/java/org/apache/poi/sl/draw/geom/PresetParser.java
+++ b/poi/src/main/java/org/apache/poi/sl/draw/geom/PresetParser.java
@@ -283,21 +283,14 @@ class PresetParser {
     }
 
     private static PaintModifier mapFill(String fill) {
-        switch (fill) {
-            default:
-            case "none":
-                return PaintModifier.NONE;
-            case "norm":
-                return PaintModifier.NORM;
-            case "lighten":
-                return PaintModifier.LIGHTEN;
-            case "lightenLess":
-                return PaintModifier.LIGHTEN_LESS;
-            case "darken":
-                return PaintModifier.DARKEN;
-            case "darkenLess":
-                return PaintModifier.DARKEN_LESS;
-        }
+        return switch (fill) {
+            default -> PaintModifier.NONE;
+            case "norm" -> PaintModifier.NORM;
+            case "lighten" -> PaintModifier.LIGHTEN;
+            case "lightenLess" -> PaintModifier.LIGHTEN_LESS;
+            case "darken" -> PaintModifier.DARKEN;
+            case "darkenLess" -> PaintModifier.DARKEN_LESS;
+        };
     }
 
     private void updatePath(XMLStreamReader sr) throws XMLStreamException {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to