From 3b5586ea794a2f9c371bc516ae3368c75d1a49d3 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 15 Feb 2016 14:40:24 +0000 Subject: [PATCH] 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 --- .../poi/ss/usermodel/IgnoredErrorType.java | 45 +++++++++++++++++++ .../apache/poi/xssf/usermodel/XSSFSheet.java | 6 ++- .../XSSFIgnoredErrorHelper.java} | 37 ++++----------- 3 files changed, 57 insertions(+), 31 deletions(-) create mode 100644 src/java/org/apache/poi/ss/usermodel/IgnoredErrorType.java rename src/ooxml/java/org/apache/poi/xssf/usermodel/{IgnoredErrorType.java => helpers/XSSFIgnoredErrorHelper.java} (84%) 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/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/IgnoredErrorType.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFIgnoredErrorHelper.java similarity index 84% rename from src/ooxml/java/org/apache/poi/xssf/usermodel/IgnoredErrorType.java rename to src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFIgnoredErrorHelper.java index 335d578838..4911a3532d 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/IgnoredErrorType.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFIgnoredErrorHelper.java @@ -15,37 +15,17 @@ limitations under the License. ==================================================================== */ -package org.apache.poi.xssf.usermodel; +package org.apache.poi.xssf.usermodel.helpers; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTIgnoredError; +import org.apache.poi.ss.usermodel.IgnoredErrorType; /** - * Types of ignored error. + * XSSF-specific code for working with ignored errors */ -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) { +public class XSSFIgnoredErrorHelper { + public static boolean isSet(IgnoredErrorType errorType, CTIgnoredError error) { + switch(errorType) { case CALCULATED_COLUMN: return error.isSetCalculatedColumn(); case EMPTY_CELL_REFERENCE: @@ -69,8 +49,8 @@ public enum IgnoredErrorType { } } - void set(CTIgnoredError error) { - switch(this) { + public static void set(IgnoredErrorType errorType, CTIgnoredError error) { + switch(errorType) { case CALCULATED_COLUMN: error.setCalculatedColumn(true); break; @@ -102,5 +82,4 @@ public enum IgnoredErrorType { throw new IllegalStateException(); } } - } -- 2.39.5