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
This commit is contained in:
Nick Burch 2016-02-15 14:40:24 +00:00
parent 63a7f89342
commit 0982d9dee5
3 changed files with 57 additions and 31 deletions

View File

@ -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;
}

View File

@ -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<IgnoredErrorType> getErrorTypes(CTIgnoredError err) {
Set<IgnoredErrorType> result = new LinkedHashSet<IgnoredErrorType>();
for (IgnoredErrorType errType : IgnoredErrorType.values()) {
if (errType.isSet(err)) {
if (XSSFIgnoredErrorHelper.isSet(errType, err)) {
result.add(errType);
}
}

View File

@ -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();
}
}
}