From 61a25d079b5ccb4a09178e4d64b5c1efbf4e0aa0 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Mon, 9 Jul 2018 20:49:21 +0000 Subject: [PATCH] more usage of shared rebuildRows git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1835494 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xssf/usermodel/XSSFSheet.java | 30 +++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) 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 b87b78beb..f6d00bac0 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -3171,17 +3171,9 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { entry.getKey().setRow(entry.getValue()); } - //rebuild the _rows map - Map map = new HashMap<>(); - for(XSSFRow r : _rows.values()) { - // Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory - final Integer rownumI = Integer.valueOf(r.getRowNum()); // NOSONAR - map.put(rownumI, r); - } - _rows.clear(); - _rows.putAll(map); - + rebuildRows(); } + private int shiftedRowNum(int startRow, int endRow, int n, int rownum) { // no change if before any affected row if(rownum < startRow && (n > 0 || (startRow - rownum) > n)) { @@ -3208,6 +3200,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { // row is part of the shifted block return rownum + n; } + private void shiftCommentsForColumns(XSSFVMLDrawing vml, int startColumnIndex, int endColumnIndex, final int n){ // then do the actual moving and also adjust comments/rowHeight // we need to sort it in a way so the shifting does not mess up the structures, @@ -3257,16 +3250,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { entry.getKey().setColumn(entry.getValue()); } - //rebuild the _rows map - Map map = new HashMap<>(); - for(XSSFRow r : _rows.values()) { - // Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory - final Integer rownumI = Integer.valueOf(r.getRowNum()); // NOSONAR - map.put(rownumI, r); - } - _rows.clear(); - _rows.putAll(map); - + rebuildRows(); } /** @@ -3631,8 +3615,10 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { }*/ } - int minCell=Integer.MAX_VALUE, maxCell=Integer.MIN_VALUE; - for(XSSFRow row : _rows.values()){ + int minCell = Integer.MAX_VALUE, maxCell = Integer.MIN_VALUE; + for(Map.Entry entry : _rows.entrySet()) { + XSSFRow row = entry.getValue(); + // first perform the normal write actions for the row row.onDocumentWrite();