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 2018/01/31 00:00:17 UTC
svn commit: r1822719 - in /poi/trunk/src/ooxml:
java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java
testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java
Author: fanningpj
Date: Wed Jan 31 00:00:17 2018
New Revision: 1822719
URL: http://svn.apache.org/viewvc?rev=1822719&view=rev
Log:
[bug-55713] Wrong ErrorStyle for DataValidations. Thanks to Philemon Schucker. This closes #95
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java?rev=1822719&r1=1822718&r2=1822719&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java Wed Jan 31 00:00:17 2018
@@ -19,6 +19,7 @@ package org.apache.poi.xssf.usermodel;
import java.util.HashMap;
import java.util.Map;
+import org.apache.commons.collections4.MapUtils;
import org.apache.poi.ss.usermodel.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.DataValidationConstraint.ValidationType;
@@ -41,16 +42,19 @@ public class XSSFDataValidation implemen
private XSSFDataValidationConstraint validationConstraint;
private CellRangeAddressList regions;
- static Map<Integer,STDataValidationOperator.Enum> operatorTypeMappings = new HashMap<>();
- static Map<STDataValidationOperator.Enum,Integer> operatorTypeReverseMappings = new HashMap<>();
- static Map<Integer,STDataValidationType.Enum> validationTypeMappings = new HashMap<>();
- static Map<STDataValidationType.Enum,Integer> validationTypeReverseMappings = new HashMap<>();
- static Map<Integer,STDataValidationErrorStyle.Enum> errorStyleMappings = new HashMap<>();
+ static Map<Integer, STDataValidationOperator.Enum> operatorTypeMappings = new HashMap<>();
+ static Map<STDataValidationOperator.Enum, Integer> operatorTypeReverseMappings = new HashMap<>();
+ static Map<Integer, STDataValidationType.Enum> validationTypeMappings = new HashMap<>();
+ static Map<STDataValidationType.Enum, Integer> validationTypeReverseMappings = new HashMap<>();
+ static Map<Integer, STDataValidationErrorStyle.Enum> errorStyleMappings = new HashMap<>();
+ static Map<STDataValidationErrorStyle.Enum, Integer> reverseErrorStyleMappings;
static {
errorStyleMappings.put(DataValidation.ErrorStyle.INFO, STDataValidationErrorStyle.INFORMATION);
errorStyleMappings.put(DataValidation.ErrorStyle.STOP, STDataValidationErrorStyle.STOP);
errorStyleMappings.put(DataValidation.ErrorStyle.WARNING, STDataValidationErrorStyle.WARNING);
+
+ reverseErrorStyleMappings = MapUtils.invertMap(errorStyleMappings);
operatorTypeMappings.put(DataValidationConstraint.OperatorType.BETWEEN,STDataValidationOperator.BETWEEN);
operatorTypeMappings.put(DataValidationConstraint.OperatorType.NOT_BETWEEN,STDataValidationOperator.NOT_BETWEEN);
@@ -182,7 +186,7 @@ public class XSSFDataValidation implemen
* @see org.apache.poi.ss.usermodel.DataValidation#getErrorStyle()
*/
public int getErrorStyle() {
- return ctDdataValidation.getErrorStyle().intValue();
+ return reverseErrorStyleMappings.get(ctDdataValidation.getErrorStyle());
}
/* (non-Javadoc)
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java?rev=1822719&r1=1822718&r2=1822719&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java Wed Jan 31 00:00:17 2018
@@ -258,8 +258,7 @@ public class TestXSSFDataValidation exte
@Test
public void test53965() throws Exception {
- XSSFWorkbook wb = new XSSFWorkbook();
- try {
+ try (XSSFWorkbook wb = new XSSFWorkbook()) {
XSSFSheet sheet = wb.createSheet();
List<XSSFDataValidation> lst = sheet.getDataValidations(); //<-- works
assertEquals(0, lst.size());
@@ -276,15 +275,51 @@ public class TestXSSFDataValidation exte
// this line caused XmlValueOutOfRangeException , see Bugzilla 3965
lst = sheet.getDataValidations();
assertEquals(1, lst.size());
- } finally {
- wb.close();
+ }
+ }
+
+ @Test
+ public void testDefaultErrorStyle() throws IOException {
+ try (XSSFWorkbook wb = new XSSFWorkbook()) {
+ XSSFSheet sheet = wb.createSheet();
+
+ final XSSFDataValidation validation = createValidation(sheet);
+ sheet.addValidationData(validation);
+
+ final List<XSSFDataValidation> dataValidations = sheet.getDataValidations();
+ assertEquals(DataValidation.ErrorStyle.STOP, dataValidations.get(0).getErrorStyle());
+ }
+ }
+
+ @Test
+ public void testSetErrorStyles() throws IOException {
+ try (XSSFWorkbook wb = new XSSFWorkbook()) {
+ XSSFSheet sheet = wb.createSheet();
+
+ XSSFDataValidation validation = createValidation(sheet);
+ sheet.addValidationData(validation);
+
+ // extract generated validation from sheet
+ List<XSSFDataValidation> dataValidations = sheet.getDataValidations();
+ validation = dataValidations.get(0);
+
+ // test INFO
+ validation.setErrorStyle(DataValidation.ErrorStyle.INFO);
+ assertEquals(DataValidation.ErrorStyle.INFO, dataValidations.get(0).getErrorStyle());
+
+ // test WARNING
+ validation.setErrorStyle(DataValidation.ErrorStyle.WARNING);
+ assertEquals(DataValidation.ErrorStyle.WARNING, dataValidations.get(0).getErrorStyle());
+
+ // test STOP
+ validation.setErrorStyle(DataValidation.ErrorStyle.STOP);
+ assertEquals(DataValidation.ErrorStyle.STOP, dataValidations.get(0).getErrorStyle());
}
}
@Test
public void testDefaultAllowBlank() throws IOException {
- XSSFWorkbook wb = new XSSFWorkbook();
- try {
+ try (XSSFWorkbook wb = new XSSFWorkbook()) {
XSSFSheet sheet = wb.createSheet();
final XSSFDataValidation validation = createValidation(sheet);
@@ -292,15 +327,12 @@ public class TestXSSFDataValidation exte
final List<XSSFDataValidation> dataValidations = sheet.getDataValidations();
assertEquals(true, dataValidations.get(0).getCtDdataValidation().getAllowBlank());
- } finally {
- wb.close();
}
}
@Test
public void testSetAllowBlankToFalse() throws IOException {
- XSSFWorkbook wb = new XSSFWorkbook();
- try {
+ try (XSSFWorkbook wb = new XSSFWorkbook()) {
XSSFSheet sheet = wb.createSheet();
final XSSFDataValidation validation = createValidation(sheet);
@@ -310,15 +342,12 @@ public class TestXSSFDataValidation exte
final List<XSSFDataValidation> dataValidations = sheet.getDataValidations();
assertEquals(false, dataValidations.get(0).getCtDdataValidation().getAllowBlank());
- } finally {
- wb.close();
}
}
@Test
public void testSetAllowBlankToTrue() throws IOException {
- XSSFWorkbook wb = new XSSFWorkbook();
- try {
+ try (XSSFWorkbook wb = new XSSFWorkbook()) {
XSSFSheet sheet = wb.createSheet();
final XSSFDataValidation validation = createValidation(sheet);
@@ -328,8 +357,6 @@ public class TestXSSFDataValidation exte
final List<XSSFDataValidation> dataValidations = sheet.getDataValidations();
assertEquals(true, dataValidations.get(0).getCtDdataValidation().getAllowBlank());
- } finally {
- wb.close();
}
}
@@ -345,11 +372,12 @@ public class TestXSSFDataValidation exte
}
@Test
- public void testTableBasedValidationList() {
- XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("dataValidationTableRange.xlsx");
- XSSFFormulaEvaluator fEval = wb.getCreationHelper().createFormulaEvaluator();
- DataValidationEvaluator dve = new DataValidationEvaluator(wb, fEval);
- List<ValueEval> values = dve.getValidationValuesForCell(new CellReference("County Ranking", 8, 6, false, false));
- assertEquals("wrong # of valid values", 32, values.size());
+ public void testTableBasedValidationList() throws IOException {
+ try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("dataValidationTableRange.xlsx")) {
+ XSSFFormulaEvaluator fEval = wb.getCreationHelper().createFormulaEvaluator();
+ DataValidationEvaluator dve = new DataValidationEvaluator(wb, fEval);
+ List<ValueEval> values = dve.getValidationValuesForCell(new CellReference("County Ranking", 8, 6, false, false));
+ assertEquals("wrong # of valid values", 32, values.size());
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org