]> source.dussan.org Git - poi.git/commitdiff
put back the goto - it is terrible but I don't have time work out why it is needed
authorPJ Fanning <fanningpj@apache.org>
Fri, 24 Sep 2021 14:39:48 +0000 (14:39 +0000)
committerPJ Fanning <fanningpj@apache.org>
Fri, 24 Sep 2021 14:39:48 +0000 (14:39 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1893597 13f79535-47bb-0310-9956-ffa450edef68

poi/src/main/java/org/apache/poi/hssf/usermodel/HeaderFooter.java

index 44f1c6c68d880fdc10615c4f8a255e8fa8ba86b0..90b9556923ff8a04194572c2f59a438458432d7a 100644 (file)
@@ -26,13 +26,13 @@ public abstract class HeaderFooter implements org.apache.poi.ss.usermodel.Header
     protected HeaderFooter() {
         //
     }
-    
+
     /**
      * @return the internal text representation (combining center, left and right parts).
      * Possibly empty string if no header or footer is set.  Never <code>null</code>.
      */
-    protected abstract String getRawText(); 
-    
+    protected abstract String getRawText();
+
     private String[] splitParts() {
         String text = getRawText();
         // default values
@@ -40,6 +40,8 @@ public abstract class HeaderFooter implements org.apache.poi.ss.usermodel.Header
         String _center = "";
         String _right = "";
 
+// FIXME: replace outer goto. just eww.
+        outer:
         while (text.length() > 1) {
             if (text.charAt(0) != '&') {
                 // Mimics the behaviour of Excel, which would put it in the center.
@@ -48,43 +50,43 @@ public abstract class HeaderFooter implements org.apache.poi.ss.usermodel.Header
             }
             int pos = text.length();
             switch (text.charAt(1)) {
-            case 'L':
-                if (text.contains("&C")) {
-                    pos = Math.min(pos, text.indexOf("&C"));
-                }
-                if (text.contains("&R")) {
-                    pos = Math.min(pos, text.indexOf("&R"));
-                }
-                _left = text.substring(2, pos);
-                text = text.substring(pos);
-                return new String[] { _left, _center, _right, };
-            case 'C':
-                if (text.contains("&L")) {
-                    pos = Math.min(pos, text.indexOf("&L"));
-                }
-                if (text.contains("&R")) {
-                    pos = Math.min(pos, text.indexOf("&R"));
-                }
-                _center = text.substring(2, pos);
-                text = text.substring(pos);
-                return new String[] { _left, _center, _right, };
-            case 'R':
-                if (text.contains("&C")) {
-                    pos = Math.min(pos, text.indexOf("&C"));
-                }
-                if (text.contains("&L")) {
-                    pos = Math.min(pos, text.indexOf("&L"));
-                }
-                _right = text.substring(2, pos);
-                text = text.substring(pos);
-                return new String[] { _left, _center, _right, };
-            default:
-                // Mimics the behaviour of Excel, which would put it in the center.
-                _center = text;
-                break;
+                case 'L':
+                    if (text.contains("&C")) {
+                        pos = Math.min(pos, text.indexOf("&C"));
+                    }
+                    if (text.contains("&R")) {
+                        pos = Math.min(pos, text.indexOf("&R"));
+                    }
+                    _left = text.substring(2, pos);
+                    text = text.substring(pos);
+                    break;
+                case 'C':
+                    if (text.contains("&L")) {
+                        pos = Math.min(pos, text.indexOf("&L"));
+                    }
+                    if (text.contains("&R")) {
+                        pos = Math.min(pos, text.indexOf("&R"));
+                    }
+                    _center = text.substring(2, pos);
+                    text = text.substring(pos);
+                    break;
+                case 'R':
+                    if (text.contains("&C")) {
+                        pos = Math.min(pos, text.indexOf("&C"));
+                    }
+                    if (text.contains("&L")) {
+                        pos = Math.min(pos, text.indexOf("&L"));
+                    }
+                    _right = text.substring(2, pos);
+                    text = text.substring(pos);
+                    break;
+                default:
+                    // Mimics the behaviour of Excel, which would put it in the center.
+                    _center = text;
+                    break outer;
             }
         }
-        return null;
+        return new String[] { _left, _center, _right, };
     }
 
     /**
@@ -98,7 +100,7 @@ public abstract class HeaderFooter implements org.apache.poi.ss.usermodel.Header
      * @param newLeft The string to set as the left side.
      */
     public final void setLeft(String newLeft) {
-        updatePart(0, newLeft); 
+        updatePart(0, newLeft);
     }
 
     /**
@@ -112,7 +114,7 @@ public abstract class HeaderFooter implements org.apache.poi.ss.usermodel.Header
      * @param newCenter The string to set as the center.
      */
     public final void setCenter(String newCenter) {
-        updatePart(1, newCenter); 
+        updatePart(1, newCenter);
     }
 
     /**
@@ -126,9 +128,9 @@ public abstract class HeaderFooter implements org.apache.poi.ss.usermodel.Header
      * @param newRight The string to set as the right side.
      */
     public final void setRight(String newRight) {
-        updatePart(2, newRight); 
+        updatePart(2, newRight);
     }
-    
+
     private void updatePart(int partIndex, String newValue) {
         String[] parts = splitParts();
         parts[partIndex] = newValue == null ? "" : newValue;
@@ -142,7 +144,7 @@ public abstract class HeaderFooter implements org.apache.poi.ss.usermodel.Header
         String _left = parts[0];
         String _center = parts[1];
         String _right = parts[2];
-        
+
         if (_center.length() < 1 && _left.length() < 1 && _right.length() < 1) {
             setHeaderFooterText("");
             return;
@@ -320,7 +322,7 @@ public abstract class HeaderFooter implements org.apache.poi.ss.usermodel.Header
         UNDERLINE_FIELD        ("&U", true),
         DOUBLE_UNDERLINE_FIELD ("&E", true),
         ;
-        
+
         private final String _representation;
         private final boolean _occursInPairs;
         private MarkupTag(String sequence, boolean occursInPairs) {
@@ -342,4 +344,4 @@ public abstract class HeaderFooter implements org.apache.poi.ss.usermodel.Header
             return _occursInPairs;
         }
     }
-}
+}
\ No newline at end of file