Author: tilman
Date: Mon Sep  8 12:31:40 2025
New Revision: 1928290

Log:
PDFBOX-5660: refactor, as suggested by Valery Bokov; closes #250

Modified:
   
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotation.java
   
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationCaret.java
   
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationCircle.java
   
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationFreeText.java
   
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationLine.java
   
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationSquare.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotation.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotation.java
  Mon Sep  8 11:28:23 2025        (r1928289)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotation.java
  Mon Sep  8 12:31:40 2025        (r1928290)
@@ -195,16 +195,8 @@ public abstract class FDFAnnotation impl
         {
             throw new IOException("Error: missing attribute 'rect'");
         }
-        String[] rectValues = rect.split(",");
-        if (rectValues.length != 4)
-        {
-            throw new IOException("Error: wrong amount of numbers in attribute 
'rect'");
-        }
-        float[] values = new float[4];
-        for (int i = 0; i < 4; i++)
-        {
-            values[i] = Float.parseFloat(rectValues[i]);
-        }
+        float[] values = parseRectangleAttributes(
+                rect, "Error: wrong amount of numbers in attribute 'rect'");
         setRectangle(new PDRectangle(COSArray.of(values)));
 
         setTitle(element.getAttribute("title"));
@@ -313,6 +305,37 @@ public abstract class FDFAnnotation impl
         }
     }
 
+    float[] parseRectangleAttributes(String rect, String errorMessage) throws 
IOException
+    {
+        String[] rectValues = rect.split(",");
+        if (rectValues.length != 4)
+        {
+            throw new IOException(errorMessage);
+        }
+        float[] values = new float[4];
+        values[0] = Float.parseFloat(rectValues[0]);
+        values[1] = Float.parseFloat(rectValues[1]);
+        values[2] = Float.parseFloat(rectValues[2]);
+        values[3] = Float.parseFloat(rectValues[3]);
+        return values;
+    }
+
+    PDRectangle createRectangleFromAttributes(String rect, String 
errorMessage) throws IOException
+    {
+        String[] rectValues = rect.split(",");
+        if (rectValues.length != 4)
+        {
+            throw new IOException(errorMessage);
+        }
+        PDRectangle rectangle = new PDRectangle();
+        rectangle.setLowerLeftX(Float.parseFloat(rectValues[0]));
+        rectangle.setLowerLeftY(Float.parseFloat(rectValues[1]));
+        rectangle.setUpperRightX(Float.parseFloat(rectValues[2]));
+        rectangle.setUpperRightY(Float.parseFloat(rectValues[3]));
+
+        return rectangle;
+    }
+
     /**
      * Create the correct FDFAnnotation.
      *

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationCaret.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationCaret.java
     Mon Sep  8 11:28:23 2025        (r1928289)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationCaret.java
     Mon Sep  8 12:31:40 2025        (r1928290)
@@ -81,16 +81,9 @@ public class FDFAnnotationCaret extends
         String fringe = element.getAttribute("fringe");
         if (fringe != null && !fringe.isEmpty())
         {
-            String[] fringeValues = fringe.split(",");
-            if (fringeValues.length != 4)
-            {
-                throw new IOException("Error: wrong amount of numbers in 
attribute 'fringe'");
-            }
-            PDRectangle rect = new PDRectangle();
-            rect.setLowerLeftX(Float.parseFloat(fringeValues[0]));
-            rect.setLowerLeftY(Float.parseFloat(fringeValues[1]));
-            rect.setUpperRightX(Float.parseFloat(fringeValues[2]));
-            rect.setUpperRightY(Float.parseFloat(fringeValues[3]));
+            PDRectangle rect = createRectangleFromAttributes(
+                    fringe, "Error: wrong amount of numbers in attribute 
'fringe'");
+
             setFringe(rect);
         }
     }

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationCircle.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationCircle.java
    Mon Sep  8 11:28:23 2025        (r1928289)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationCircle.java
    Mon Sep  8 12:31:40 2025        (r1928290)
@@ -83,16 +83,8 @@ public class FDFAnnotationCircle extends
         String fringe = element.getAttribute("fringe");
         if (fringe != null && !fringe.isEmpty())
         {
-            String[] fringeValues = fringe.split(",");
-            if (fringeValues.length != 4)
-            {
-                throw new IOException("Error: wrong amount of numbers in 
attribute 'fringe'");
-            }
-            PDRectangle rect = new PDRectangle();
-            rect.setLowerLeftX(Float.parseFloat(fringeValues[0]));
-            rect.setLowerLeftY(Float.parseFloat(fringeValues[1]));
-            rect.setUpperRightX(Float.parseFloat(fringeValues[2]));
-            rect.setUpperRightY(Float.parseFloat(fringeValues[3]));
+            PDRectangle rect = createRectangleFromAttributes(
+                    fringe, "Error: wrong amount of numbers in attribute 
'fringe'");
             setFringe(rect);
         }
     }

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationFreeText.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationFreeText.java
  Mon Sep  8 11:28:23 2025        (r1928289)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationFreeText.java
  Mon Sep  8 12:31:40 2025        (r1928290)
@@ -104,16 +104,8 @@ public class FDFAnnotationFreeText exten
         String fringe = element.getAttribute("fringe");
         if (fringe != null && !fringe.isEmpty())
         {
-            String[] fringeValues = fringe.split(",");
-            if (fringeValues.length != 4)
-            {
-                throw new IOException("Error: wrong amount of numbers in 
attribute 'fringe'");
-            }
-            PDRectangle rect = new PDRectangle();
-            rect.setLowerLeftX(Float.parseFloat(fringeValues[0]));
-            rect.setLowerLeftY(Float.parseFloat(fringeValues[1]));
-            rect.setUpperRightX(Float.parseFloat(fringeValues[2]));
-            rect.setUpperRightY(Float.parseFloat(fringeValues[3]));
+            PDRectangle rect = createRectangleFromAttributes(
+                    fringe, "Error: wrong amount of numbers in attribute 
'fringe'");
             setFringe(rect);
         }
     }

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationLine.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationLine.java
      Mon Sep  8 11:28:23 2025        (r1928289)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationLine.java
      Mon Sep  8 12:31:40 2025        (r1928290)
@@ -81,16 +81,8 @@ public class FDFAnnotationLine extends F
             throw new IOException("Error: missing attribute 'end'");
         }
         String line = startCoords + "," + endCoords;
-        String[] lineValues = line.split(",");
-        if (lineValues.length != 4)
-        {
-            throw new IOException("Error: wrong amount of line coordinates");
-        }
-        float[] values = new float[4];
-        for (int i = 0; i < 4; i++)
-        {
-            values[i] = Float.parseFloat(lineValues[i]);
-        }
+        float[] values = parseRectangleAttributes(
+                line, "Error: wrong amount of line coordinates");
         setLine(values);
 
         String leaderLine = element.getAttribute("leaderLength");

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationSquare.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationSquare.java
    Mon Sep  8 11:28:23 2025        (r1928289)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFAnnotationSquare.java
    Mon Sep  8 12:31:40 2025        (r1928290)
@@ -84,16 +84,8 @@ public class FDFAnnotationSquare extends
         String fringe = element.getAttribute("fringe");
         if (fringe != null && !fringe.isEmpty())
         {
-            String[] fringeValues = fringe.split(",");
-            if (fringeValues.length != 4)
-            {
-                throw new IOException("Error: wrong amount of numbers in 
attribute 'fringe'");
-            }
-            PDRectangle rect = new PDRectangle();
-            rect.setLowerLeftX(Float.parseFloat(fringeValues[0]));
-            rect.setLowerLeftY(Float.parseFloat(fringeValues[1]));
-            rect.setUpperRightX(Float.parseFloat(fringeValues[2]));
-            rect.setUpperRightY(Float.parseFloat(fringeValues[3]));
+            PDRectangle rect = createRectangleFromAttributes(
+                    fringe, "Error: wrong amount of numbers in attribute 
'fringe'");
             setFringe(rect);
         }
     }

Reply via email to