From aae614424ea93156658e5ae081e51ddef79b44ed Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Wed, 31 Jan 2018 00:09:51 +0000 Subject: [PATCH] use spaces for indents in some files git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1822720 13f79535-47bb-0310-9956-ffa450edef68 --- .../xssf/usermodel/XSSFDataValidation.java | 440 +++++++++--------- .../usermodel/TestXSSFDataValidation.java | 384 +++++++-------- .../TestXSSFDataValidationConstraint.java | 6 +- 3 files changed, 415 insertions(+), 415 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java index 8f7ce44c3e..cd180d031c 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java @@ -36,259 +36,259 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.STDataValidationOpera * */ public class XSSFDataValidation implements DataValidation { - private static final int MAX_TEXT_LENGTH = 255; + private static final int MAX_TEXT_LENGTH = 255; - private CTDataValidation ctDdataValidation; - private XSSFDataValidationConstraint validationConstraint; - private CellRangeAddressList regions; + private CTDataValidation ctDdataValidation; + private XSSFDataValidationConstraint validationConstraint; + private CellRangeAddressList regions; static Map operatorTypeMappings = new HashMap<>(); - static Map operatorTypeReverseMappings = new HashMap<>(); - static Map validationTypeMappings = new HashMap<>(); - static Map validationTypeReverseMappings = new HashMap<>(); - static Map errorStyleMappings = new HashMap<>(); - static Map reverseErrorStyleMappings; + static Map operatorTypeReverseMappings = new HashMap<>(); + static Map validationTypeMappings = new HashMap<>(); + static Map validationTypeReverseMappings = new HashMap<>(); + static Map errorStyleMappings = new HashMap<>(); + static Map 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); + errorStyleMappings.put(DataValidation.ErrorStyle.INFO, STDataValidationErrorStyle.INFORMATION); + errorStyleMappings.put(DataValidation.ErrorStyle.STOP, STDataValidationErrorStyle.STOP); + errorStyleMappings.put(DataValidation.ErrorStyle.WARNING, STDataValidationErrorStyle.WARNING); - operatorTypeMappings.put(DataValidationConstraint.OperatorType.BETWEEN,STDataValidationOperator.BETWEEN); - operatorTypeMappings.put(DataValidationConstraint.OperatorType.NOT_BETWEEN,STDataValidationOperator.NOT_BETWEEN); - operatorTypeMappings.put(DataValidationConstraint.OperatorType.EQUAL,STDataValidationOperator.EQUAL); - operatorTypeMappings.put(DataValidationConstraint.OperatorType.NOT_EQUAL,STDataValidationOperator.NOT_EQUAL); - operatorTypeMappings.put(DataValidationConstraint.OperatorType.GREATER_THAN,STDataValidationOperator.GREATER_THAN); - operatorTypeMappings.put(DataValidationConstraint.OperatorType.GREATER_OR_EQUAL,STDataValidationOperator.GREATER_THAN_OR_EQUAL); - operatorTypeMappings.put(DataValidationConstraint.OperatorType.LESS_THAN,STDataValidationOperator.LESS_THAN); - operatorTypeMappings.put(DataValidationConstraint.OperatorType.LESS_OR_EQUAL,STDataValidationOperator.LESS_THAN_OR_EQUAL); - - for( Map.Entry entry : operatorTypeMappings.entrySet() ) { - operatorTypeReverseMappings.put(entry.getValue(),entry.getKey()); - } + reverseErrorStyleMappings = MapUtils.invertMap(errorStyleMappings); - validationTypeMappings.put(DataValidationConstraint.ValidationType.FORMULA,STDataValidationType.CUSTOM); - validationTypeMappings.put(DataValidationConstraint.ValidationType.DATE,STDataValidationType.DATE); - validationTypeMappings.put(DataValidationConstraint.ValidationType.DECIMAL,STDataValidationType.DECIMAL); - validationTypeMappings.put(DataValidationConstraint.ValidationType.LIST,STDataValidationType.LIST); - validationTypeMappings.put(DataValidationConstraint.ValidationType.ANY,STDataValidationType.NONE); - validationTypeMappings.put(DataValidationConstraint.ValidationType.TEXT_LENGTH,STDataValidationType.TEXT_LENGTH); - validationTypeMappings.put(DataValidationConstraint.ValidationType.TIME,STDataValidationType.TIME); - validationTypeMappings.put(DataValidationConstraint.ValidationType.INTEGER,STDataValidationType.WHOLE); - - for( Map.Entry entry : validationTypeMappings.entrySet() ) { - validationTypeReverseMappings.put(entry.getValue(),entry.getKey()); - } - } + operatorTypeMappings.put(DataValidationConstraint.OperatorType.BETWEEN,STDataValidationOperator.BETWEEN); + operatorTypeMappings.put(DataValidationConstraint.OperatorType.NOT_BETWEEN,STDataValidationOperator.NOT_BETWEEN); + operatorTypeMappings.put(DataValidationConstraint.OperatorType.EQUAL,STDataValidationOperator.EQUAL); + operatorTypeMappings.put(DataValidationConstraint.OperatorType.NOT_EQUAL,STDataValidationOperator.NOT_EQUAL); + operatorTypeMappings.put(DataValidationConstraint.OperatorType.GREATER_THAN,STDataValidationOperator.GREATER_THAN); + operatorTypeMappings.put(DataValidationConstraint.OperatorType.GREATER_OR_EQUAL,STDataValidationOperator.GREATER_THAN_OR_EQUAL); + operatorTypeMappings.put(DataValidationConstraint.OperatorType.LESS_THAN,STDataValidationOperator.LESS_THAN); + operatorTypeMappings.put(DataValidationConstraint.OperatorType.LESS_OR_EQUAL,STDataValidationOperator.LESS_THAN_OR_EQUAL); - XSSFDataValidation(CellRangeAddressList regions,CTDataValidation ctDataValidation) { - this(getConstraint(ctDataValidation), regions, ctDataValidation); - } + for( Map.Entry entry : operatorTypeMappings.entrySet() ) { + operatorTypeReverseMappings.put(entry.getValue(),entry.getKey()); + } - public XSSFDataValidation(XSSFDataValidationConstraint constraint,CellRangeAddressList regions,CTDataValidation ctDataValidation) { - super(); - this.validationConstraint = constraint; - this.ctDdataValidation = ctDataValidation; - this.regions = regions; - } + validationTypeMappings.put(DataValidationConstraint.ValidationType.FORMULA,STDataValidationType.CUSTOM); + validationTypeMappings.put(DataValidationConstraint.ValidationType.DATE,STDataValidationType.DATE); + validationTypeMappings.put(DataValidationConstraint.ValidationType.DECIMAL,STDataValidationType.DECIMAL); + validationTypeMappings.put(DataValidationConstraint.ValidationType.LIST,STDataValidationType.LIST); + validationTypeMappings.put(DataValidationConstraint.ValidationType.ANY,STDataValidationType.NONE); + validationTypeMappings.put(DataValidationConstraint.ValidationType.TEXT_LENGTH,STDataValidationType.TEXT_LENGTH); + validationTypeMappings.put(DataValidationConstraint.ValidationType.TIME,STDataValidationType.TIME); + validationTypeMappings.put(DataValidationConstraint.ValidationType.INTEGER,STDataValidationType.WHOLE); + + for( Map.Entry entry : validationTypeMappings.entrySet() ) { + validationTypeReverseMappings.put(entry.getValue(),entry.getKey()); + } + } + + XSSFDataValidation(CellRangeAddressList regions,CTDataValidation ctDataValidation) { + this(getConstraint(ctDataValidation), regions, ctDataValidation); + } + + public XSSFDataValidation(XSSFDataValidationConstraint constraint,CellRangeAddressList regions,CTDataValidation ctDataValidation) { + super(); + this.validationConstraint = constraint; + this.ctDdataValidation = ctDataValidation; + this.regions = regions; + } - CTDataValidation getCtDdataValidation() { - return ctDdataValidation; - } + CTDataValidation getCtDdataValidation() { + return ctDdataValidation; + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#createErrorBox(java.lang.String, java.lang.String) - */ - public void createErrorBox(String title, String text) { - // the spec does not specify a length-limit, however Excel reports files as "corrupt" if they exceed 255 bytes for these texts... - if(title != null && title.length() > MAX_TEXT_LENGTH) { - throw new IllegalStateException("Error-title cannot be longer than 32 characters, but had: " + title); - } - if(text != null && text.length() > MAX_TEXT_LENGTH) { - throw new IllegalStateException("Error-text cannot be longer than 255 characters, but had: " + text); - } - ctDdataValidation.setErrorTitle(encodeUtf(title)); - ctDdataValidation.setError(encodeUtf(text)); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#createErrorBox(java.lang.String, java.lang.String) + */ + public void createErrorBox(String title, String text) { + // the spec does not specify a length-limit, however Excel reports files as "corrupt" if they exceed 255 bytes for these texts... + if(title != null && title.length() > MAX_TEXT_LENGTH) { + throw new IllegalStateException("Error-title cannot be longer than 32 characters, but had: " + title); + } + if(text != null && text.length() > MAX_TEXT_LENGTH) { + throw new IllegalStateException("Error-text cannot be longer than 255 characters, but had: " + text); + } + ctDdataValidation.setErrorTitle(encodeUtf(title)); + ctDdataValidation.setError(encodeUtf(text)); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#createPromptBox(java.lang.String, java.lang.String) - */ - public void createPromptBox(String title, String text) { - // the spec does not specify a length-limit, however Excel reports files as "corrupt" if they exceed 255 bytes for these texts... - if(title != null && title.length() > MAX_TEXT_LENGTH) { - throw new IllegalStateException("Error-title cannot be longer than 32 characters, but had: " + title); - } - if(text != null && text.length() > MAX_TEXT_LENGTH) { - throw new IllegalStateException("Error-text cannot be longer than 255 characters, but had: " + text); - } - ctDdataValidation.setPromptTitle(encodeUtf(title)); - ctDdataValidation.setPrompt(encodeUtf(text)); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#createPromptBox(java.lang.String, java.lang.String) + */ + public void createPromptBox(String title, String text) { + // the spec does not specify a length-limit, however Excel reports files as "corrupt" if they exceed 255 bytes for these texts... + if(title != null && title.length() > MAX_TEXT_LENGTH) { + throw new IllegalStateException("Error-title cannot be longer than 32 characters, but had: " + title); + } + if(text != null && text.length() > MAX_TEXT_LENGTH) { + throw new IllegalStateException("Error-text cannot be longer than 255 characters, but had: " + text); + } + ctDdataValidation.setPromptTitle(encodeUtf(title)); + ctDdataValidation.setPrompt(encodeUtf(text)); + } - /** - * For all characters which cannot be represented in XML as defined by the XML 1.0 specification, - * the characters are escaped using the Unicode numerical character representation escape character - * format _xHHHH_, where H represents a hexadecimal character in the character's value. - *

- * Example: The Unicode character 0D is invalid in an XML 1.0 document, - * so it shall be escaped as _x000D_. - *

- * See section 3.18.9 in the OOXML spec. - * - * @param text the string to encode - * @return the encoded string - */ - private String encodeUtf(String text) { - if(text == null) { - return null; - } + /** + * For all characters which cannot be represented in XML as defined by the XML 1.0 specification, + * the characters are escaped using the Unicode numerical character representation escape character + * format _xHHHH_, where H represents a hexadecimal character in the character's value. + *

+ * Example: The Unicode character 0D is invalid in an XML 1.0 document, + * so it shall be escaped as _x000D_. + *

+ * See section 3.18.9 in the OOXML spec. + * + * @param text the string to encode + * @return the encoded string + */ + private String encodeUtf(String text) { + if(text == null) { + return null; + } - StringBuilder builder = new StringBuilder(); - for(char c : text.toCharArray()) { - // for now only encode characters below 32, we can add more here if needed - if(c < 32) { - builder.append("_x").append(c < 16 ? "000" : "00").append(Integer.toHexString(c)).append("_"); - } else { - builder.append(c); - } - } + StringBuilder builder = new StringBuilder(); + for(char c : text.toCharArray()) { + // for now only encode characters below 32, we can add more here if needed + if(c < 32) { + builder.append("_x").append(c < 16 ? "000" : "00").append(Integer.toHexString(c)).append("_"); + } else { + builder.append(c); + } + } - return builder.toString(); - } + return builder.toString(); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#getEmptyCellAllowed() - */ - public boolean getEmptyCellAllowed() { - return ctDdataValidation.getAllowBlank(); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#getEmptyCellAllowed() + */ + public boolean getEmptyCellAllowed() { + return ctDdataValidation.getAllowBlank(); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#getErrorBoxText() - */ - public String getErrorBoxText() { - return ctDdataValidation.getError(); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#getErrorBoxText() + */ + public String getErrorBoxText() { + return ctDdataValidation.getError(); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#getErrorBoxTitle() - */ - public String getErrorBoxTitle() { - return ctDdataValidation.getErrorTitle(); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#getErrorBoxTitle() + */ + public String getErrorBoxTitle() { + return ctDdataValidation.getErrorTitle(); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#getErrorStyle() - */ - public int getErrorStyle() { - return reverseErrorStyleMappings.get(ctDdataValidation.getErrorStyle()); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#getErrorStyle() + */ + public int getErrorStyle() { + return reverseErrorStyleMappings.get(ctDdataValidation.getErrorStyle()); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#getPromptBoxText() - */ - public String getPromptBoxText() { - return ctDdataValidation.getPrompt(); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#getPromptBoxText() + */ + public String getPromptBoxText() { + return ctDdataValidation.getPrompt(); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#getPromptBoxTitle() - */ - public String getPromptBoxTitle() { - return ctDdataValidation.getPromptTitle(); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#getPromptBoxTitle() + */ + public String getPromptBoxTitle() { + return ctDdataValidation.getPromptTitle(); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#getShowErrorBox() - */ - public boolean getShowErrorBox() { - return ctDdataValidation.getShowErrorMessage(); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#getShowErrorBox() + */ + public boolean getShowErrorBox() { + return ctDdataValidation.getShowErrorMessage(); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#getShowPromptBox() - */ - public boolean getShowPromptBox() { - return ctDdataValidation.getShowInputMessage(); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#getShowPromptBox() + */ + public boolean getShowPromptBox() { + return ctDdataValidation.getShowInputMessage(); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#getSuppressDropDownArrow() - */ - public boolean getSuppressDropDownArrow() { - return !ctDdataValidation.getShowDropDown(); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#getSuppressDropDownArrow() + */ + public boolean getSuppressDropDownArrow() { + return !ctDdataValidation.getShowDropDown(); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#getValidationConstraint() - */ - public DataValidationConstraint getValidationConstraint() { - return validationConstraint; - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#getValidationConstraint() + */ + public DataValidationConstraint getValidationConstraint() { + return validationConstraint; + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#setEmptyCellAllowed(boolean) - */ - public void setEmptyCellAllowed(boolean allowed) { - ctDdataValidation.setAllowBlank(allowed); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#setEmptyCellAllowed(boolean) + */ + public void setEmptyCellAllowed(boolean allowed) { + ctDdataValidation.setAllowBlank(allowed); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#setErrorStyle(int) - */ - public void setErrorStyle(int errorStyle) { - ctDdataValidation.setErrorStyle(errorStyleMappings.get(errorStyle)); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#setErrorStyle(int) + */ + public void setErrorStyle(int errorStyle) { + ctDdataValidation.setErrorStyle(errorStyleMappings.get(errorStyle)); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#setShowErrorBox(boolean) - */ - public void setShowErrorBox(boolean show) { - ctDdataValidation.setShowErrorMessage(show); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#setShowErrorBox(boolean) + */ + public void setShowErrorBox(boolean show) { + ctDdataValidation.setShowErrorMessage(show); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#setShowPromptBox(boolean) - */ - public void setShowPromptBox(boolean show) { - ctDdataValidation.setShowInputMessage(show); - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#setShowPromptBox(boolean) + */ + public void setShowPromptBox(boolean show) { + ctDdataValidation.setShowInputMessage(show); + } - /* (non-Javadoc) - * @see org.apache.poi.ss.usermodel.DataValidation#setSuppressDropDownArrow(boolean) - */ - public void setSuppressDropDownArrow(boolean suppress) { - if (validationConstraint.getValidationType()==ValidationType.LIST) { - ctDdataValidation.setShowDropDown(!suppress); - } - } + /* (non-Javadoc) + * @see org.apache.poi.ss.usermodel.DataValidation#setSuppressDropDownArrow(boolean) + */ + public void setSuppressDropDownArrow(boolean suppress) { + if (validationConstraint.getValidationType()==ValidationType.LIST) { + ctDdataValidation.setShowDropDown(!suppress); + } + } + + public CellRangeAddressList getRegions() { + return regions; + } + + public String prettyPrint() { + StringBuilder builder = new StringBuilder(); + for(CellRangeAddress address : regions.getCellRangeAddresses()) { + builder.append(address.formatAsString()); + } + builder.append(" => "); + builder.append(this.validationConstraint.prettyPrint()); + return builder.toString(); + } - public CellRangeAddressList getRegions() { - return regions; - } - - public String prettyPrint() { - StringBuilder builder = new StringBuilder(); - for(CellRangeAddress address : regions.getCellRangeAddresses()) { - builder.append(address.formatAsString()); - } - builder.append(" => "); - builder.append(this.validationConstraint.prettyPrint()); - return builder.toString(); - } - private static XSSFDataValidationConstraint getConstraint(CTDataValidation ctDataValidation) { - String formula1 = ctDataValidation.getFormula1(); - String formula2 = ctDataValidation.getFormula2(); - Enum operator = ctDataValidation.getOperator(); - org.openxmlformats.schemas.spreadsheetml.x2006.main.STDataValidationType.Enum type = ctDataValidation.getType(); - Integer validationType = XSSFDataValidation.validationTypeReverseMappings.get(type); - Integer operatorType = XSSFDataValidation.operatorTypeReverseMappings.get(operator); - return new XSSFDataValidationConstraint(validationType,operatorType, formula1,formula2); + String formula1 = ctDataValidation.getFormula1(); + String formula2 = ctDataValidation.getFormula2(); + Enum operator = ctDataValidation.getOperator(); + org.openxmlformats.schemas.spreadsheetml.x2006.main.STDataValidationType.Enum type = ctDataValidation.getType(); + Integer validationType = XSSFDataValidation.validationTypeReverseMappings.get(type); + Integer operatorType = XSSFDataValidation.operatorTypeReverseMappings.get(operator); + return new XSSFDataValidationConstraint(validationType,operatorType, formula1,formula2); } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java index 28b2611ac5..3b7c2b8ce9 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java @@ -49,11 +49,11 @@ public class TestXSSFDataValidation extends BaseTestDataValidation { } @Test - public void testAddValidations() throws Exception { - XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("DataValidations-49244.xlsx"); - Sheet sheet = wb1.getSheetAt(0); - List dataValidations = ((XSSFSheet)sheet).getDataValidations(); - + public void testAddValidations() throws Exception { + XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("DataValidations-49244.xlsx"); + Sheet sheet = wb1.getSheetAt(0); + List dataValidations = ((XSSFSheet)sheet).getDataValidations(); + /** * For each validation type, there are two cells with the same validation. This tests * application of a single validation definition to multiple cells. @@ -69,194 +69,194 @@ public class TestXSSFDataValidation extends BaseTestDataValidation { * * = 52 ( Total ) */ - assertEquals(52,dataValidations.size()); + assertEquals(52,dataValidations.size()); - DataValidationHelper dataValidationHelper = sheet.getDataValidationHelper(); - int[] validationTypes = new int[]{ValidationType.INTEGER,ValidationType.DECIMAL,ValidationType.TEXT_LENGTH}; - - int[] singleOperandOperatorTypes = new int[]{ - OperatorType.LESS_THAN,OperatorType.LESS_OR_EQUAL, - OperatorType.GREATER_THAN,OperatorType.GREATER_OR_EQUAL, - OperatorType.EQUAL,OperatorType.NOT_EQUAL - } ; - int[] doubleOperandOperatorTypes = new int[]{ - OperatorType.BETWEEN,OperatorType.NOT_BETWEEN - }; - - BigDecimal value = new BigDecimal("10"),value2 = new BigDecimal("20"); - BigDecimal dvalue = new BigDecimal("10.001"),dvalue2 = new BigDecimal("19.999"); - final int lastRow = sheet.getLastRowNum(); - int offset = lastRow + 3; - - int lastKnownNumValidations = dataValidations.size(); - - Row row = sheet.createRow(offset++); - Cell cell = row.createCell(0); - DataValidationConstraint explicitListValidation = dataValidationHelper.createExplicitListConstraint(new String[]{"MA","MI","CA"}); - CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(); - cellRangeAddressList.addCellRangeAddress(cell.getRowIndex(), cell.getColumnIndex(), cell.getRowIndex(), cell.getColumnIndex()); - DataValidation dataValidation = dataValidationHelper.createValidation(explicitListValidation, cellRangeAddressList); - setOtherValidationParameters(dataValidation); - sheet.addValidationData(dataValidation); - lastKnownNumValidations++; - - row = sheet.createRow(offset++); - cell = row.createCell(0); + DataValidationHelper dataValidationHelper = sheet.getDataValidationHelper(); + int[] validationTypes = new int[]{ValidationType.INTEGER,ValidationType.DECIMAL,ValidationType.TEXT_LENGTH}; - cellRangeAddressList = new CellRangeAddressList(); - cellRangeAddressList.addCellRangeAddress(cell.getRowIndex(), cell.getColumnIndex(), cell.getRowIndex(), cell.getColumnIndex()); - - Cell firstCell = row.createCell(1);firstCell.setCellValue("UT"); - Cell secondCell = row.createCell(2);secondCell.setCellValue("MN"); - Cell thirdCell = row.createCell(3);thirdCell.setCellValue("IL"); - - int rowNum = row.getRowNum() + 1; - String listFormula = new StringBuilder("$B$").append(rowNum).append(":").append("$D$").append(rowNum).toString(); - DataValidationConstraint formulaListValidation = dataValidationHelper.createFormulaListConstraint(listFormula); - - dataValidation = dataValidationHelper.createValidation(formulaListValidation, cellRangeAddressList); - setOtherValidationParameters(dataValidation); - sheet.addValidationData(dataValidation); - lastKnownNumValidations++; - - offset++; - offset++; - - for (int i = 0; i < validationTypes.length; i++) { - int validationType = validationTypes[i]; - offset = offset + 2; - final Row row0 = sheet.createRow(offset++); - Cell cell_10 = row0.createCell(0); - cell_10.setCellValue(validationType==ValidationType.DECIMAL ? "Decimal " : validationType==ValidationType.INTEGER ? "Integer" : "Text Length"); - offset++; - for (int j = 0; j < singleOperandOperatorTypes.length; j++) { - int operatorType = singleOperandOperatorTypes[j]; - final Row row1 = sheet.createRow(offset++); - - //For Integer (> and >=) we add 1 extra cell for validations whose formulae reference other cells. - final Row row2 = i==0 && j < 2 ? sheet.createRow(offset++) : null; - - cell_10 = row1.createCell(0); - cell_10.setCellValue(XSSFDataValidation.operatorTypeMappings.get(operatorType).toString()); - Cell cell_11 = row1.createCell(1); - Cell cell_21 = row1.createCell(2); - Cell cell_22 = i==0 && j < 2 ? row2.createCell(2) : null; - - Cell cell_13 = row1.createCell(3); - - - cell_13.setCellType(CellType.NUMERIC); - cell_13.setCellValue(validationType==ValidationType.DECIMAL ? dvalue.doubleValue() : value.intValue()); + int[] singleOperandOperatorTypes = new int[]{ + OperatorType.LESS_THAN,OperatorType.LESS_OR_EQUAL, + OperatorType.GREATER_THAN,OperatorType.GREATER_OR_EQUAL, + OperatorType.EQUAL,OperatorType.NOT_EQUAL + } ; + int[] doubleOperandOperatorTypes = new int[]{ + OperatorType.BETWEEN,OperatorType.NOT_BETWEEN + }; - - //First create value based validation; - DataValidationConstraint constraint = dataValidationHelper.createNumericConstraint(validationType,operatorType, value.toString(), null); - cellRangeAddressList = new CellRangeAddressList(); - cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_11.getRowIndex(),cell_11.getRowIndex(),cell_11.getColumnIndex(),cell_11.getColumnIndex())); - DataValidation validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); - setOtherValidationParameters(validation); - sheet.addValidationData(validation); - assertEquals(++lastKnownNumValidations,((XSSFSheet)sheet).getDataValidations().size()); - - //Now create real formula based validation. - String formula1 = new CellReference(cell_13.getRowIndex(),cell_13.getColumnIndex()).formatAsString(); - constraint = dataValidationHelper.createNumericConstraint(validationType,operatorType, formula1, null); - if (i==0 && j==0) { - cellRangeAddressList = new CellRangeAddressList(); - cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_21.getRowIndex(), cell_21.getRowIndex(), cell_21.getColumnIndex(), cell_21.getColumnIndex())); - validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); - setOtherValidationParameters(validation); - sheet.addValidationData(validation); - assertEquals(++lastKnownNumValidations, ((XSSFSheet) sheet).getDataValidations().size()); - - cellRangeAddressList = new CellRangeAddressList(); - cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_22.getRowIndex(), cell_22.getRowIndex(), cell_22.getColumnIndex(), cell_22.getColumnIndex())); - validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); - setOtherValidationParameters( validation); - sheet.addValidationData(validation); - assertEquals(++lastKnownNumValidations, ((XSSFSheet) sheet).getDataValidations().size()); - } else if(i==0 && j==1 ){ - cellRangeAddressList = new CellRangeAddressList(); - cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_21.getRowIndex(), cell_21.getRowIndex(), cell_21.getColumnIndex(), cell_21.getColumnIndex())); - cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_22.getRowIndex(), cell_22.getRowIndex(), cell_22.getColumnIndex(), cell_22.getColumnIndex())); - validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); - setOtherValidationParameters( validation); - sheet.addValidationData(validation); - assertEquals(++lastKnownNumValidations, ((XSSFSheet) sheet).getDataValidations().size()); - } else { - cellRangeAddressList = new CellRangeAddressList(); - cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_21.getRowIndex(), cell_21.getRowIndex(), cell_21.getColumnIndex(), cell_21.getColumnIndex())); - validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); - setOtherValidationParameters(validation); - sheet.addValidationData(validation); - assertEquals(++lastKnownNumValidations, ((XSSFSheet) sheet).getDataValidations().size()); - } - } + BigDecimal value = new BigDecimal("10"),value2 = new BigDecimal("20"); + BigDecimal dvalue = new BigDecimal("10.001"),dvalue2 = new BigDecimal("19.999"); + final int lastRow = sheet.getLastRowNum(); + int offset = lastRow + 3; - for (int operatorType : doubleOperandOperatorTypes) { - final Row row1 = sheet.createRow(offset++); - - cell_10 = row1.createCell(0); - cell_10.setCellValue(XSSFDataValidation.operatorTypeMappings.get(operatorType).toString()); - - Cell cell_11 = row1.createCell(1); - Cell cell_21 = row1.createCell(2); - - Cell cell_13 = row1.createCell(3); - Cell cell_14 = row1.createCell(4); - - - String value1String = validationType==ValidationType.DECIMAL ? dvalue.toString() : value.toString(); - cell_13.setCellType(CellType.NUMERIC); - cell_13.setCellValue(validationType==ValidationType.DECIMAL ? dvalue.doubleValue() : value.intValue()); + int lastKnownNumValidations = dataValidations.size(); - String value2String = validationType==ValidationType.DECIMAL ? dvalue2.toString() : value2.toString(); - cell_14.setCellType(CellType.NUMERIC); - cell_14.setCellValue(validationType==ValidationType.DECIMAL ? dvalue2.doubleValue() : value2.intValue()); - - - //First create value based validation; - DataValidationConstraint constraint = dataValidationHelper.createNumericConstraint(validationType,operatorType, value1String, value2String); - cellRangeAddressList = new CellRangeAddressList(); - cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_11.getRowIndex(),cell_11.getRowIndex(),cell_11.getColumnIndex(),cell_11.getColumnIndex())); - DataValidation validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); - setOtherValidationParameters(validation); - sheet.addValidationData(validation); - assertEquals(++lastKnownNumValidations,((XSSFSheet)sheet).getDataValidations().size()); - - - //Now create real formula based validation. - String formula1 = new CellReference(cell_13.getRowIndex(),cell_13.getColumnIndex()).formatAsString(); - String formula2 = new CellReference(cell_14.getRowIndex(),cell_14.getColumnIndex()).formatAsString(); - constraint = dataValidationHelper.createNumericConstraint(validationType,operatorType, formula1, formula2); - cellRangeAddressList = new CellRangeAddressList(); - cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_21.getRowIndex(),cell_21.getRowIndex(),cell_21.getColumnIndex(),cell_21.getColumnIndex())); - validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); - - setOtherValidationParameters(validation); - sheet.addValidationData(validation); - assertEquals(++lastKnownNumValidations,((XSSFSheet)sheet).getDataValidations().size()); - } - } + Row row = sheet.createRow(offset++); + Cell cell = row.createCell(0); + DataValidationConstraint explicitListValidation = dataValidationHelper.createExplicitListConstraint(new String[]{"MA","MI","CA"}); + CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(); + cellRangeAddressList.addCellRangeAddress(cell.getRowIndex(), cell.getColumnIndex(), cell.getRowIndex(), cell.getColumnIndex()); + DataValidation dataValidation = dataValidationHelper.createValidation(explicitListValidation, cellRangeAddressList); + setOtherValidationParameters(dataValidation); + sheet.addValidationData(dataValidation); + lastKnownNumValidations++; - XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1); - wb1.close(); - Sheet sheetAt = wb2.getSheetAt(0); - assertEquals(lastKnownNumValidations,((XSSFSheet)sheetAt).getDataValidations().size()); - wb2.close(); - } + row = sheet.createRow(offset++); + cell = row.createCell(0); - protected void setOtherValidationParameters(DataValidation validation) { - boolean yesNo = true; - validation.setEmptyCellAllowed(yesNo); - validation.setShowErrorBox(yesNo); - validation.setShowPromptBox(yesNo); - validation.createErrorBox("Error Message Title", "Error Message"); - validation.createPromptBox("Prompt", "Enter some value"); - validation.setSuppressDropDownArrow(yesNo); - } + cellRangeAddressList = new CellRangeAddressList(); + cellRangeAddressList.addCellRangeAddress(cell.getRowIndex(), cell.getColumnIndex(), cell.getRowIndex(), cell.getColumnIndex()); - @Test + Cell firstCell = row.createCell(1);firstCell.setCellValue("UT"); + Cell secondCell = row.createCell(2);secondCell.setCellValue("MN"); + Cell thirdCell = row.createCell(3);thirdCell.setCellValue("IL"); + + int rowNum = row.getRowNum() + 1; + String listFormula = new StringBuilder("$B$").append(rowNum).append(":").append("$D$").append(rowNum).toString(); + DataValidationConstraint formulaListValidation = dataValidationHelper.createFormulaListConstraint(listFormula); + + dataValidation = dataValidationHelper.createValidation(formulaListValidation, cellRangeAddressList); + setOtherValidationParameters(dataValidation); + sheet.addValidationData(dataValidation); + lastKnownNumValidations++; + + offset++; + offset++; + + for (int i = 0; i < validationTypes.length; i++) { + int validationType = validationTypes[i]; + offset = offset + 2; + final Row row0 = sheet.createRow(offset++); + Cell cell_10 = row0.createCell(0); + cell_10.setCellValue(validationType==ValidationType.DECIMAL ? "Decimal " : validationType==ValidationType.INTEGER ? "Integer" : "Text Length"); + offset++; + for (int j = 0; j < singleOperandOperatorTypes.length; j++) { + int operatorType = singleOperandOperatorTypes[j]; + final Row row1 = sheet.createRow(offset++); + + //For Integer (> and >=) we add 1 extra cell for validations whose formulae reference other cells. + final Row row2 = i==0 && j < 2 ? sheet.createRow(offset++) : null; + + cell_10 = row1.createCell(0); + cell_10.setCellValue(XSSFDataValidation.operatorTypeMappings.get(operatorType).toString()); + Cell cell_11 = row1.createCell(1); + Cell cell_21 = row1.createCell(2); + Cell cell_22 = i==0 && j < 2 ? row2.createCell(2) : null; + + Cell cell_13 = row1.createCell(3); + + + cell_13.setCellType(CellType.NUMERIC); + cell_13.setCellValue(validationType==ValidationType.DECIMAL ? dvalue.doubleValue() : value.intValue()); + + + //First create value based validation; + DataValidationConstraint constraint = dataValidationHelper.createNumericConstraint(validationType,operatorType, value.toString(), null); + cellRangeAddressList = new CellRangeAddressList(); + cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_11.getRowIndex(),cell_11.getRowIndex(),cell_11.getColumnIndex(),cell_11.getColumnIndex())); + DataValidation validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); + setOtherValidationParameters(validation); + sheet.addValidationData(validation); + assertEquals(++lastKnownNumValidations,((XSSFSheet)sheet).getDataValidations().size()); + + //Now create real formula based validation. + String formula1 = new CellReference(cell_13.getRowIndex(),cell_13.getColumnIndex()).formatAsString(); + constraint = dataValidationHelper.createNumericConstraint(validationType,operatorType, formula1, null); + if (i==0 && j==0) { + cellRangeAddressList = new CellRangeAddressList(); + cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_21.getRowIndex(), cell_21.getRowIndex(), cell_21.getColumnIndex(), cell_21.getColumnIndex())); + validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); + setOtherValidationParameters(validation); + sheet.addValidationData(validation); + assertEquals(++lastKnownNumValidations, ((XSSFSheet) sheet).getDataValidations().size()); + + cellRangeAddressList = new CellRangeAddressList(); + cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_22.getRowIndex(), cell_22.getRowIndex(), cell_22.getColumnIndex(), cell_22.getColumnIndex())); + validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); + setOtherValidationParameters( validation); + sheet.addValidationData(validation); + assertEquals(++lastKnownNumValidations, ((XSSFSheet) sheet).getDataValidations().size()); + } else if(i==0 && j==1 ){ + cellRangeAddressList = new CellRangeAddressList(); + cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_21.getRowIndex(), cell_21.getRowIndex(), cell_21.getColumnIndex(), cell_21.getColumnIndex())); + cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_22.getRowIndex(), cell_22.getRowIndex(), cell_22.getColumnIndex(), cell_22.getColumnIndex())); + validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); + setOtherValidationParameters( validation); + sheet.addValidationData(validation); + assertEquals(++lastKnownNumValidations, ((XSSFSheet) sheet).getDataValidations().size()); + } else { + cellRangeAddressList = new CellRangeAddressList(); + cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_21.getRowIndex(), cell_21.getRowIndex(), cell_21.getColumnIndex(), cell_21.getColumnIndex())); + validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); + setOtherValidationParameters(validation); + sheet.addValidationData(validation); + assertEquals(++lastKnownNumValidations, ((XSSFSheet) sheet).getDataValidations().size()); + } + } + + for (int operatorType : doubleOperandOperatorTypes) { + final Row row1 = sheet.createRow(offset++); + + cell_10 = row1.createCell(0); + cell_10.setCellValue(XSSFDataValidation.operatorTypeMappings.get(operatorType).toString()); + + Cell cell_11 = row1.createCell(1); + Cell cell_21 = row1.createCell(2); + + Cell cell_13 = row1.createCell(3); + Cell cell_14 = row1.createCell(4); + + + String value1String = validationType==ValidationType.DECIMAL ? dvalue.toString() : value.toString(); + cell_13.setCellType(CellType.NUMERIC); + cell_13.setCellValue(validationType==ValidationType.DECIMAL ? dvalue.doubleValue() : value.intValue()); + + String value2String = validationType==ValidationType.DECIMAL ? dvalue2.toString() : value2.toString(); + cell_14.setCellType(CellType.NUMERIC); + cell_14.setCellValue(validationType==ValidationType.DECIMAL ? dvalue2.doubleValue() : value2.intValue()); + + + //First create value based validation; + DataValidationConstraint constraint = dataValidationHelper.createNumericConstraint(validationType,operatorType, value1String, value2String); + cellRangeAddressList = new CellRangeAddressList(); + cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_11.getRowIndex(),cell_11.getRowIndex(),cell_11.getColumnIndex(),cell_11.getColumnIndex())); + DataValidation validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); + setOtherValidationParameters(validation); + sheet.addValidationData(validation); + assertEquals(++lastKnownNumValidations,((XSSFSheet)sheet).getDataValidations().size()); + + + //Now create real formula based validation. + String formula1 = new CellReference(cell_13.getRowIndex(),cell_13.getColumnIndex()).formatAsString(); + String formula2 = new CellReference(cell_14.getRowIndex(),cell_14.getColumnIndex()).formatAsString(); + constraint = dataValidationHelper.createNumericConstraint(validationType,operatorType, formula1, formula2); + cellRangeAddressList = new CellRangeAddressList(); + cellRangeAddressList.addCellRangeAddress(new CellRangeAddress(cell_21.getRowIndex(),cell_21.getRowIndex(),cell_21.getColumnIndex(),cell_21.getColumnIndex())); + validation = dataValidationHelper.createValidation(constraint, cellRangeAddressList); + + setOtherValidationParameters(validation); + sheet.addValidationData(validation); + assertEquals(++lastKnownNumValidations,((XSSFSheet)sheet).getDataValidations().size()); + } + } + + XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); + Sheet sheetAt = wb2.getSheetAt(0); + assertEquals(lastKnownNumValidations,((XSSFSheet)sheetAt).getDataValidations().size()); + wb2.close(); + } + + protected void setOtherValidationParameters(DataValidation validation) { + boolean yesNo = true; + validation.setEmptyCellAllowed(yesNo); + validation.setShowErrorBox(yesNo); + validation.setShowPromptBox(yesNo); + validation.createErrorBox("Error Message Title", "Error Message"); + validation.createPromptBox("Prompt", "Enter some value"); + validation.setSuppressDropDownArrow(yesNo); + } + + @Test public void test53965() throws Exception { try (XSSFWorkbook wb = new XSSFWorkbook()) { XSSFSheet sheet = wb.createSheet(); @@ -277,8 +277,8 @@ public class TestXSSFDataValidation extends BaseTestDataValidation { assertEquals(1, lst.size()); } } - - @Test + + @Test public void testDefaultErrorStyle() throws IOException { try (XSSFWorkbook wb = new XSSFWorkbook()) { XSSFSheet sheet = wb.createSheet(); @@ -290,8 +290,8 @@ public class TestXSSFDataValidation extends BaseTestDataValidation { assertEquals(DataValidation.ErrorStyle.STOP, dataValidations.get(0).getErrorStyle()); } } - - @Test + + @Test public void testSetErrorStyles() throws IOException { try (XSSFWorkbook wb = new XSSFWorkbook()) { XSSFSheet sheet = wb.createSheet(); @@ -317,7 +317,7 @@ public class TestXSSFDataValidation extends BaseTestDataValidation { } } - @Test + @Test public void testDefaultAllowBlank() throws IOException { try (XSSFWorkbook wb = new XSSFWorkbook()) { XSSFSheet sheet = wb.createSheet(); @@ -330,7 +330,7 @@ public class TestXSSFDataValidation extends BaseTestDataValidation { } } - @Test + @Test public void testSetAllowBlankToFalse() throws IOException { try (XSSFWorkbook wb = new XSSFWorkbook()) { XSSFSheet sheet = wb.createSheet(); @@ -345,7 +345,7 @@ public class TestXSSFDataValidation extends BaseTestDataValidation { } } - @Test + @Test public void testSetAllowBlankToTrue() throws IOException { try (XSSFWorkbook wb = new XSSFWorkbook()) { XSSFSheet sheet = wb.createSheet(); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidationConstraint.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidationConstraint.java index a3475f4a53..c48a135750 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidationConstraint.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidationConstraint.java @@ -49,11 +49,11 @@ public class TestXSSFDataValidationConstraint { assertArrayEquals(expected, constraint.getExplicitListValues()); // Excel and DataValidationConstraint parser ignore (strip) whitespace; quotes should still be intact assertEquals(literal.replace(" ", ""), constraint.getFormula1()); - } - + } + @Test public void rangeReference() { - // (unnamed range) reference list + // (unnamed range) reference list String reference = "A1:A5"; DataValidationConstraint constraint = new XSSFDataValidationConstraint(listType, ignoredType, reference, null); assertNull(constraint.getExplicitListValues());