From b671199b40b0fa7f61ac460f888f58b6b5fcd8f9 Mon Sep 17 00:00:00 2001 From: Javen O'Neal Date: Sat, 4 Nov 2017 05:48:18 +0000 Subject: [PATCH] bug 61474, #81 on github: add @Override annotation; rename FormulaShifter shifter to FormulaShifter formulaShifter to reduce confusion with the shifter variable referring to the RowShifter git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1814255 13f79535-47bb-0310-9956-ffa450edef68 --- .../usermodel/helpers/HSSFRowShifter.java | 17 ++++-- .../poi/ss/usermodel/helpers/RowShifter.java | 14 ++--- .../usermodel/helpers/XSSFRowShifter.java | 55 ++++++++++--------- 3 files changed, 48 insertions(+), 38 deletions(-) diff --git a/src/java/org/apache/poi/hssf/usermodel/helpers/HSSFRowShifter.java b/src/java/org/apache/poi/hssf/usermodel/helpers/HSSFRowShifter.java index 88a6f9b73..1c57e5b1d 100644 --- a/src/java/org/apache/poi/hssf/usermodel/helpers/HSSFRowShifter.java +++ b/src/java/org/apache/poi/hssf/usermodel/helpers/HSSFRowShifter.java @@ -39,29 +39,34 @@ public final class HSSFRowShifter extends RowShifter { super(sh); } + @Override @NotImplemented - public void updateNamedRanges(FormulaShifter shifter) { + public void updateNamedRanges(FormulaShifter formulaShifter) { throw new NotImplementedException("HSSFRowShifter.updateNamedRanges"); } + @Override @NotImplemented - public void updateFormulas(FormulaShifter shifter) { + public void updateFormulas(FormulaShifter formulaShifter) { throw new NotImplementedException("updateFormulas"); } + @Override @Internal @NotImplemented - public void updateRowFormulas(Row row, FormulaShifter shifter) { + public void updateRowFormulas(Row row, FormulaShifter formulaShifter) { throw new NotImplementedException("updateRowFormulas"); } + @Override @NotImplemented - public void updateConditionalFormatting(FormulaShifter shifter) { + public void updateConditionalFormatting(FormulaShifter formulaShifter) { throw new NotImplementedException("updateConditionalFormatting"); } - + + @Override @NotImplemented - public void updateHyperlinks(FormulaShifter shifter) { + public void updateHyperlinks(FormulaShifter formulaShifter) { throw new NotImplementedException("updateHyperlinks"); } diff --git a/src/java/org/apache/poi/ss/usermodel/helpers/RowShifter.java b/src/java/org/apache/poi/ss/usermodel/helpers/RowShifter.java index 83c634de7..19df59bd1 100644 --- a/src/java/org/apache/poi/ss/usermodel/helpers/RowShifter.java +++ b/src/java/org/apache/poi/ss/usermodel/helpers/RowShifter.java @@ -114,31 +114,31 @@ public abstract class RowShifter { /** * Updated named ranges */ - public abstract void updateNamedRanges(FormulaShifter shifter); + public abstract void updateNamedRanges(FormulaShifter formulaShifter); /** * Update formulas. */ - public abstract void updateFormulas(FormulaShifter shifter); + public abstract void updateFormulas(FormulaShifter formulaShifter); /** * Update the formulas in specified row using the formula shifting policy specified by shifter * * @param row the row to update the formulas on - * @param shifter the formula shifting policy + * @param formulaShifter the formula shifting policy */ @Internal - public abstract void updateRowFormulas(Row row, FormulaShifter shifter); + public abstract void updateRowFormulas(Row row, FormulaShifter formulaShifter); - public abstract void updateConditionalFormatting(FormulaShifter shifter); + public abstract void updateConditionalFormatting(FormulaShifter formulaShifter); /** * Shift the Hyperlink anchors (not the hyperlink text, even if the hyperlink * is of type LINK_DOCUMENT and refers to a cell that was shifted). Hyperlinks * do not track the content they point to. * - * @param shifter the formula shifting policy + * @param formulaShifter the formula shifting policy */ - public abstract void updateHyperlinks(FormulaShifter shifter); + public abstract void updateHyperlinks(FormulaShifter formulaShifter); } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFRowShifter.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFRowShifter.java index c5ea819ad..04257917d 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFRowShifter.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFRowShifter.java @@ -67,7 +67,8 @@ public final class XSSFRowShifter extends RowShifter { /** * Updated named ranges */ - public void updateNamedRanges(FormulaShifter shifter) { + @Override + public void updateNamedRanges(FormulaShifter formulaShifter) { Workbook wb = sheet.getWorkbook(); XSSFEvaluationWorkbook fpb = XSSFEvaluationWorkbook.create((XSSFWorkbook) wb); for (Name name : wb.getAllNames()) { @@ -76,7 +77,7 @@ public final class XSSFRowShifter extends RowShifter { final int rowIndex = -1; //don't care, named ranges are not allowed to include structured references Ptg[] ptgs = FormulaParser.parse(formula, fpb, FormulaType.NAMEDRANGE, sheetIndex, rowIndex); - if (shifter.adjustFormula(ptgs, sheetIndex)) { + if (formulaShifter.adjustFormula(ptgs, sheetIndex)) { String shiftedFmla = FormulaRenderer.toFormulaString(fpb, ptgs); name.setRefersToFormula(shiftedFmla); } @@ -86,22 +87,23 @@ public final class XSSFRowShifter extends RowShifter { /** * Update formulas. */ - public void updateFormulas(FormulaShifter shifter) { + @Override + public void updateFormulas(FormulaShifter formulaShifter) { //update formulas on the parent sheet - updateSheetFormulas(sheet, shifter); + updateSheetFormulas(sheet, formulaShifter); //update formulas on other sheets Workbook wb = sheet.getWorkbook(); for (Sheet sh : wb) { if (sheet == sh) continue; - updateSheetFormulas(sh, shifter); + updateSheetFormulas(sh, formulaShifter); } } - private void updateSheetFormulas(Sheet sh, FormulaShifter shifter) { + private void updateSheetFormulas(Sheet sh, FormulaShifter formulashifter) { for (Row r : sh) { XSSFRow row = (XSSFRow) r; - updateRowFormulas(row, shifter); + updateRowFormulas(row, formulashifter); } } @@ -109,10 +111,11 @@ public final class XSSFRowShifter extends RowShifter { * Update the formulas in specified row using the formula shifting policy specified by shifter * * @param row the row to update the formulas on - * @param shifter the formula shifting policy + * @param formulaShifter the formula shifting policy */ @Internal - public void updateRowFormulas(Row row, FormulaShifter shifter) { + @Override + public void updateRowFormulas(Row row, FormulaShifter formulaShifter) { XSSFSheet sheet = (XSSFSheet) row.getSheet(); for (Cell c : row) { XSSFCell cell = (XSSFCell) c; @@ -122,30 +125,30 @@ public final class XSSFRowShifter extends RowShifter { CTCellFormula f = ctCell.getF(); String formula = f.getStringValue(); if (formula.length() > 0) { - String shiftedFormula = shiftFormula(row, formula, shifter); + String shiftedFormula = shiftFormula(row, formula, formulaShifter); if (shiftedFormula != null) { f.setStringValue(shiftedFormula); if(f.getT() == STCellFormulaType.SHARED){ int si = (int)f.getSi(); CTCellFormula sf = sheet.getSharedFormula(si); sf.setStringValue(shiftedFormula); - updateRefInCTCellFormula(row, shifter, sf); + updateRefInCTCellFormula(row, formulaShifter, sf); } } } //Range of cells which the formula applies to. - updateRefInCTCellFormula(row, shifter, f); + updateRefInCTCellFormula(row, formulaShifter, f); } } } - private void updateRefInCTCellFormula(Row row, FormulaShifter shifter, CTCellFormula f) { + private void updateRefInCTCellFormula(Row row, FormulaShifter formulaShifter, CTCellFormula f) { if (f.isSetRef()) { //Range of cells which the formula applies to. String ref = f.getRef(); - String shiftedRef = shiftFormula(row, ref, shifter); + String shiftedRef = shiftFormula(row, ref, formulaShifter); if (shiftedRef != null) f.setRef(shiftedRef); } } @@ -155,11 +158,11 @@ public final class XSSFRowShifter extends RowShifter { * * @param row the row of the cell this formula belongs to. Used to get a reference to the parent workbook. * @param formula the formula to shift - * @param shifter the FormulaShifter object that operates on the parsed formula tokens + * @param formulaShifter the FormulaShifter object that operates on the parsed formula tokens * @return the shifted formula if the formula was changed, * null if the formula wasn't modified */ - private static String shiftFormula(Row row, String formula, FormulaShifter shifter) { + private static String shiftFormula(Row row, String formula, FormulaShifter formulaShifter) { Sheet sheet = row.getSheet(); Workbook wb = sheet.getWorkbook(); int sheetIndex = wb.getSheetIndex(sheet); @@ -169,7 +172,7 @@ public final class XSSFRowShifter extends RowShifter { try { Ptg[] ptgs = FormulaParser.parse(formula, fpb, FormulaType.CELL, sheetIndex, rowIndex); String shiftedFmla = null; - if (shifter.adjustFormula(ptgs, sheetIndex)) { + if (formulaShifter.adjustFormula(ptgs, sheetIndex)) { shiftedFmla = FormulaRenderer.toFormulaString(fpb, ptgs); } return shiftedFmla; @@ -180,7 +183,8 @@ public final class XSSFRowShifter extends RowShifter { } } - public void updateConditionalFormatting(FormulaShifter shifter) { + @Override + public void updateConditionalFormatting(FormulaShifter formulaShifter) { XSSFSheet xsheet = (XSSFSheet) sheet; XSSFWorkbook wb = xsheet.getWorkbook(); int sheetIndex = wb.getSheetIndex(sheet); @@ -204,7 +208,7 @@ public final class XSSFRowShifter extends RowShifter { boolean changed = false; List temp = new ArrayList<>(); for (CellRangeAddress craOld : cellRanges) { - CellRangeAddress craNew = shiftRange(shifter, craOld, sheetIndex); + CellRangeAddress craNew = shiftRange(formulaShifter, craOld, sheetIndex); if (craNew == null) { changed = true; continue; @@ -231,7 +235,7 @@ public final class XSSFRowShifter extends RowShifter { for (int i = 0; i < formulaArray.length; i++) { String formula = formulaArray[i]; Ptg[] ptgs = FormulaParser.parse(formula, fpb, FormulaType.CELL, sheetIndex, rowIndex); - if (shifter.adjustFormula(ptgs, sheetIndex)) { + if (formulaShifter.adjustFormula(ptgs, sheetIndex)) { String shiftedFmla = FormulaRenderer.toFormulaString(fpb, ptgs); cfRule.setFormulaArray(i, shiftedFmla); } @@ -245,9 +249,10 @@ public final class XSSFRowShifter extends RowShifter { * is of type LINK_DOCUMENT and refers to a cell that was shifted). Hyperlinks * do not track the content they point to. * - * @param shifter + * @param formulaShifter */ - public void updateHyperlinks(FormulaShifter shifter) { + @Override + public void updateHyperlinks(FormulaShifter formulaShifter) { int sheetIndex = sheet.getWorkbook().getSheetIndex(sheet); List hyperlinkList = sheet.getHyperlinkList(); @@ -255,7 +260,7 @@ public final class XSSFRowShifter extends RowShifter { XSSFHyperlink xhyperlink = (XSSFHyperlink) hyperlink; String cellRef = xhyperlink.getCellRef(); CellRangeAddress cra = CellRangeAddress.valueOf(cellRef); - CellRangeAddress shiftedRange = shiftRange(shifter, cra, sheetIndex); + CellRangeAddress shiftedRange = shiftRange(formulaShifter, cra, sheetIndex); if (shiftedRange != null && shiftedRange != cra) { // shiftedRange should not be null. If shiftedRange is null, that means // that a hyperlink wasn't deleted at the beginning of shiftRows when @@ -265,12 +270,12 @@ public final class XSSFRowShifter extends RowShifter { } } - private static CellRangeAddress shiftRange(FormulaShifter shifter, CellRangeAddress cra, int currentExternSheetIx) { + private static CellRangeAddress shiftRange(FormulaShifter formulaShifter, CellRangeAddress cra, int currentExternSheetIx) { // FormulaShifter works well in terms of Ptgs - so convert CellRangeAddress to AreaPtg (and back) here AreaPtg aptg = new AreaPtg(cra.getFirstRow(), cra.getLastRow(), cra.getFirstColumn(), cra.getLastColumn(), false, false, false, false); Ptg[] ptgs = { aptg, }; - if (!shifter.adjustFormula(ptgs, currentExternSheetIx)) { + if (!formulaShifter.adjustFormula(ptgs, currentExternSheetIx)) { return cra; } Ptg ptg0 = ptgs[0];