From: Nick Burch Date: Mon, 15 Feb 2016 14:40:24 +0000 (+0000) Subject: Start generalising the IgnoredErrorType code for later HSSF use too #56892 X-Git-Tag: REL_3_14_FINAL~36 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3b5586ea794a2f9c371bc516ae3368c75d1a49d3;p=poi.git Start generalising the IgnoredErrorType code for later HSSF use too #56892 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1730540 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/poi/ss/usermodel/IgnoredErrorType.java b/src/java/org/apache/poi/ss/usermodel/IgnoredErrorType.java new file mode 100644 index 0000000000..183fe29f29 --- /dev/null +++ b/src/java/org/apache/poi/ss/usermodel/IgnoredErrorType.java @@ -0,0 +1,45 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.ss.usermodel; + + +/** + * Types of ignored workbook and worksheet error. + * + * TODO Give more details on what these mean + */ +public enum IgnoredErrorType { + + CALCULATED_COLUMN, + + EMPTY_CELL_REFERENCE, + + EVALUATION_ERROR, + + FORMULA, + + FORMULA_RANGE, + + LIST_DATA_VALIDATION, + + NUMBER_STORED_AS_TEXT, + + TWO_DIGIT_TEXT_YEAR, + + UNLOCKED_FORMULA; +} diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/IgnoredErrorType.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/IgnoredErrorType.java deleted file mode 100644 index 335d578838..0000000000 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/IgnoredErrorType.java +++ /dev/null @@ -1,106 +0,0 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ - -package org.apache.poi.xssf.usermodel; - -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTIgnoredError; - -/** - * Types of ignored error. - */ -public enum IgnoredErrorType { - - CALCULATED_COLUMN, - - EMPTY_CELL_REFERENCE, - - EVALUATION_ERROR, - - FORMULA, - - FORMULA_RANGE, - - LIST_DATA_VALIDATION, - - NUMBER_STORED_AS_TEXT, - - TWO_DIGIT_TEXT_YEAR, - - UNLOCKED_FORMULA; - - // Methods below are not part of the public API - - boolean isSet(CTIgnoredError error) { - switch(this) { - case CALCULATED_COLUMN: - return error.isSetCalculatedColumn(); - case EMPTY_CELL_REFERENCE: - return error.isSetEmptyCellReference(); - case EVALUATION_ERROR: - return error.isSetEvalError(); - case FORMULA: - return error.isSetFormula(); - case FORMULA_RANGE: - return error.isSetFormulaRange(); - case LIST_DATA_VALIDATION: - return error.isSetListDataValidation(); - case NUMBER_STORED_AS_TEXT: - return error.isSetNumberStoredAsText(); - case TWO_DIGIT_TEXT_YEAR: - return error.isSetTwoDigitTextYear(); - case UNLOCKED_FORMULA: - return error.isSetUnlockedFormula(); - default: - throw new IllegalStateException(); - } - } - - void set(CTIgnoredError error) { - switch(this) { - case CALCULATED_COLUMN: - error.setCalculatedColumn(true); - break; - case EMPTY_CELL_REFERENCE: - error.setEmptyCellReference(true); - break; - case EVALUATION_ERROR: - error.setEvalError(true); - break; - case FORMULA: - error.setFormula(true); - break; - case FORMULA_RANGE: - error.setFormulaRange(true); - break; - case LIST_DATA_VALIDATION: - error.setListDataValidation(true); - break; - case NUMBER_STORED_AS_TEXT: - error.setNumberStoredAsText(true); - break; - case TWO_DIGIT_TEXT_YEAR: - error.setTwoDigitTextYear(true); - break; - case UNLOCKED_FORMULA: - error.setUnlockedFormula(true); - break; - default: - throw new IllegalStateException(); - } - } - -} diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index 5d4c6314d0..40d765a1da 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -62,6 +62,7 @@ import org.apache.poi.ss.usermodel.DataValidation; import org.apache.poi.ss.usermodel.DataValidationHelper; import org.apache.poi.ss.usermodel.Footer; import org.apache.poi.ss.usermodel.Header; +import org.apache.poi.ss.usermodel.IgnoredErrorType; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; @@ -78,6 +79,7 @@ import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; import org.apache.poi.xssf.model.CommentsTable; import org.apache.poi.xssf.usermodel.helpers.ColumnHelper; +import org.apache.poi.xssf.usermodel.helpers.XSSFIgnoredErrorHelper; import org.apache.poi.xssf.usermodel.helpers.XSSFRowShifter; import org.apache.xmlbeans.XmlException; import org.apache.xmlbeans.XmlOptions; @@ -4149,14 +4151,14 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { CTIgnoredError ctIgnoredError = ctIgnoredErrors.addNewIgnoredError(); ctIgnoredError.setSqref(Arrays.asList(ref)); for (IgnoredErrorType errType : ignoredErrorTypes) { - errType.set(ctIgnoredError); + XSSFIgnoredErrorHelper.set(errType, ctIgnoredError); } } private Set getErrorTypes(CTIgnoredError err) { Set result = new LinkedHashSet(); for (IgnoredErrorType errType : IgnoredErrorType.values()) { - if (errType.isSet(err)) { + if (XSSFIgnoredErrorHelper.isSet(errType, err)) { result.add(errType); } } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFIgnoredErrorHelper.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFIgnoredErrorHelper.java new file mode 100644 index 0000000000..4911a3532d --- /dev/null +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFIgnoredErrorHelper.java @@ -0,0 +1,85 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.xssf.usermodel.helpers; + +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTIgnoredError; +import org.apache.poi.ss.usermodel.IgnoredErrorType; + +/** + * XSSF-specific code for working with ignored errors + */ +public class XSSFIgnoredErrorHelper { + public static boolean isSet(IgnoredErrorType errorType, CTIgnoredError error) { + switch(errorType) { + case CALCULATED_COLUMN: + return error.isSetCalculatedColumn(); + case EMPTY_CELL_REFERENCE: + return error.isSetEmptyCellReference(); + case EVALUATION_ERROR: + return error.isSetEvalError(); + case FORMULA: + return error.isSetFormula(); + case FORMULA_RANGE: + return error.isSetFormulaRange(); + case LIST_DATA_VALIDATION: + return error.isSetListDataValidation(); + case NUMBER_STORED_AS_TEXT: + return error.isSetNumberStoredAsText(); + case TWO_DIGIT_TEXT_YEAR: + return error.isSetTwoDigitTextYear(); + case UNLOCKED_FORMULA: + return error.isSetUnlockedFormula(); + default: + throw new IllegalStateException(); + } + } + + public static void set(IgnoredErrorType errorType, CTIgnoredError error) { + switch(errorType) { + case CALCULATED_COLUMN: + error.setCalculatedColumn(true); + break; + case EMPTY_CELL_REFERENCE: + error.setEmptyCellReference(true); + break; + case EVALUATION_ERROR: + error.setEvalError(true); + break; + case FORMULA: + error.setFormula(true); + break; + case FORMULA_RANGE: + error.setFormulaRange(true); + break; + case LIST_DATA_VALIDATION: + error.setListDataValidation(true); + break; + case NUMBER_STORED_AS_TEXT: + error.setNumberStoredAsText(true); + break; + case TWO_DIGIT_TEXT_YEAR: + error.setTwoDigitTextYear(true); + break; + case UNLOCKED_FORMULA: + error.setUnlockedFormula(true); + break; + default: + throw new IllegalStateException(); + } + } +}