You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2022/07/10 13:54:09 UTC

svn commit: r1902633 - in /poi/trunk: poi-ooxml/src/test/java/org/apache/poi/ss/tests/util/TestSXSSFCellUtil.java poi-ooxml/src/test/java/org/apache/poi/ss/tests/util/TestXSSFCellUtil.java poi/src/main/java/org/apache/poi/ss/util/CellUtil.java

Author: fanningpj
Date: Sun Jul 10 13:54:09 2022
New Revision: 1902633

URL: http://svn.apache.org/viewvc?rev=1902633&view=rev
Log:
try to fix tests

Modified:
    poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/util/TestSXSSFCellUtil.java
    poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/util/TestXSSFCellUtil.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellUtil.java

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/util/TestSXSSFCellUtil.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/util/TestSXSSFCellUtil.java?rev=1902633&r1=1902632&r2=1902633&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/util/TestSXSSFCellUtil.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/util/TestSXSSFCellUtil.java Sun Jul 10 13:54:09 2022
@@ -19,20 +19,9 @@ package org.apache.poi.ss.tests.util;
 
 import org.apache.poi.ss.util.BaseTestCellUtil;
 import org.apache.poi.xssf.SXSSFITestDataProvider;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-
-import java.io.IOException;
 
 class TestSXSSFCellUtil extends BaseTestCellUtil {
     public TestSXSSFCellUtil() {
         super(SXSSFITestDataProvider.instance);
     }
-
-    @Override
-    @Test
-    @Disabled("need to investigate why the super class version fails for (S)XSSF")
-    protected void setFillForegroundColorBeforeFillBackgroundColorEnum() throws IOException {
-
-    }
 }
\ No newline at end of file

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/util/TestXSSFCellUtil.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/util/TestXSSFCellUtil.java?rev=1902633&r1=1902632&r2=1902633&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/util/TestXSSFCellUtil.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/ss/tests/util/TestXSSFCellUtil.java Sun Jul 10 13:54:09 2022
@@ -19,20 +19,9 @@ package org.apache.poi.ss.tests.util;
 
 import org.apache.poi.ss.util.BaseTestCellUtil;
 import org.apache.poi.xssf.XSSFITestDataProvider;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-
-import java.io.IOException;
 
 class TestXSSFCellUtil extends BaseTestCellUtil {
     public TestXSSFCellUtil() {
         super(XSSFITestDataProvider.instance);
     }
-
-    @Override
-    @Test
-    @Disabled("need to investigate why the super class version fails for (S)XSSF")
-    protected void setFillForegroundColorBeforeFillBackgroundColorEnum() throws IOException {
-
-    }
 }
\ No newline at end of file

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellUtil.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellUtil.java?rev=1902633&r1=1902632&r2=1902633&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellUtil.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellUtil.java Sun Jul 10 13:54:09 2022
@@ -401,7 +401,7 @@ public final class CellUtil {
             Map<String, Object> wbStyleMap = getFormatProperties(wbStyle);
 
             // the desired style already exists in the workbook. Use the existing style.
-            if (wbStyleMap.equals(values)) {
+            if (styleMapsMatch(wbStyleMap, values)) {
                 newStyle = wbStyle;
                 break;
             }
@@ -416,6 +416,21 @@ public final class CellUtil {
         cell.setCellStyle(newStyle);
     }
 
+    private static boolean styleMapsMatch(final Map<String, Object> map1, final Map<String, Object> map2) {
+        final Map<String, Object> map1Copy = new HashMap<>(map1);
+        final Map<String, Object> map2Copy = new HashMap<>(map2);
+        final Object backColor1 = map1Copy.remove(FILL_BACKGROUND_COLOR_COLOR);
+        final Object backColor2 = map2Copy.remove(FILL_BACKGROUND_COLOR_COLOR);
+        final Object foreColor1 = map1Copy.remove(FILL_FOREGROUND_COLOR_COLOR);
+        final Object foreColor2 = map2Copy.remove(FILL_FOREGROUND_COLOR_COLOR);
+        if (map1Copy.equals(map2Copy)) {
+            final boolean backColorsMatch = backColor1 == null || backColor2 == null || backColor1.equals(backColor2);
+            final boolean foreColorsMatch = foreColor1 == null || foreColor2 == null || foreColor1.equals(foreColor2);
+            return backColorsMatch && foreColorsMatch;
+        }
+        return false;
+    }
+
     /**
      * <p>This method attempts to find an existing CellStyle that matches the {@code cell}'s
      * current style plus a single style property {@code propertyName} with value
@@ -529,11 +544,27 @@ public final class CellUtil {
         style.setBottomBorderColor(getShort(properties, BOTTOM_BORDER_COLOR));
         style.setDataFormat(getShort(properties, DATA_FORMAT));
         style.setFillPattern(getFillPattern(properties, FILL_PATTERN));
-        
-        style.setFillForegroundColor(getShort(properties, FILL_FOREGROUND_COLOR));
-        style.setFillBackgroundColor(getShort(properties, FILL_BACKGROUND_COLOR));
-        style.setFillForegroundColor(getColor(properties, FILL_FOREGROUND_COLOR_COLOR), true);
-        style.setFillBackgroundColor(getColor(properties, FILL_BACKGROUND_COLOR_COLOR), true);
+
+        Color foregroundFillColor = getColor(properties, FILL_FOREGROUND_COLOR_COLOR);
+        Color backgroundFillColor = getColor(properties, FILL_BACKGROUND_COLOR_COLOR);
+        if (foregroundFillColor != null) {
+            try {
+                style.setFillForegroundColor(foregroundFillColor);
+            } catch (IllegalArgumentException iae) {
+                style.setFillForegroundColor(getShort(properties, FILL_FOREGROUND_COLOR));
+            }
+        } else {
+            style.setFillForegroundColor(getShort(properties, FILL_FOREGROUND_COLOR));
+        }
+        if (backgroundFillColor != null) {
+            try {
+                style.setFillBackgroundColor(backgroundFillColor);
+            } catch (IllegalArgumentException iae) {
+                style.setFillBackgroundColor(getShort(properties, FILL_BACKGROUND_COLOR));
+            }
+        } else {
+            style.setFillBackgroundColor(getShort(properties, FILL_BACKGROUND_COLOR));
+        }
 
         style.setFont(workbook.getFontAt(getInt(properties, FONT)));
         style.setHidden(getBoolean(properties, HIDDEN));



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org