You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2021/11/28 09:43:29 UTC
svn commit: r1895388 - in /poi/trunk: poi-ooxml/src/main/java/org/apache/poi/xssf/model/CommentsTable.java poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java poi/src/main/java9/module-info.class
Author: fanningpj
Date: Sun Nov 28 09:43:28 2021
New Revision: 1895388
URL: http://svn.apache.org/viewvc?rev=1895388&view=rev
Log:
cache vml drawing
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/model/CommentsTable.java
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
poi/trunk/poi/src/main/java9/module-info.class
Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/model/CommentsTable.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/model/CommentsTable.java?rev=1895388&r1=1895387&r2=1895388&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/model/CommentsTable.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/model/CommentsTable.java Sun Nov 28 09:43:28 2021
@@ -52,6 +52,7 @@ public class CommentsTable extends POIXM
public static final int DEFAULT_AUTHOR_ID = 0;
private Sheet sheet;
+ private XSSFVMLDrawing vmlDrawing;
/**
* Underlying XML Beans CTComment list.
@@ -337,11 +338,13 @@ public class CommentsTable extends POIXM
}
private XSSFVMLDrawing getVMLDrawing(Sheet sheet, boolean autocreate) {
- if (sheet instanceof XSSFSheet) {
- return ((XSSFSheet)sheet).getVMLDrawing(autocreate);
- } else if (sheet instanceof SXSSFSheet) {
- return ((SXSSFSheet)sheet).getVMLDrawing(autocreate);
+ if (vmlDrawing == null) {
+ if (sheet instanceof XSSFSheet) {
+ vmlDrawing = ((XSSFSheet)sheet).getVMLDrawing(autocreate);
+ } else if (sheet instanceof SXSSFSheet) {
+ vmlDrawing = ((SXSSFSheet)sheet).getVMLDrawing(autocreate);
+ }
}
- return null;
+ return vmlDrawing;
}
}
Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=1895388&r1=1895387&r2=1895388&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java Sun Nov 28 09:43:28 2021
@@ -104,6 +104,7 @@ public class XSSFSheet extends POIXMLDoc
private SortedMap<String,XSSFTable> tables;
private List<CellRangeAddress> arrayFormulas;
private final XSSFDataValidationHelper dataValidationHelper;
+ private XSSFVMLDrawing xssfvmlDrawing;
/**
* Creates new XSSFSheet - called by XSSFWorkbook to create a sheet from scratch.
@@ -568,41 +569,44 @@ public class XSSFSheet extends POIXMLDoc
*/
@Internal
public XSSFVMLDrawing getVMLDrawing(boolean autoCreate) {
- XSSFVMLDrawing drawing = null;
- CTLegacyDrawing ctDrawing = getCTLegacyDrawing();
- if(ctDrawing == null) {
- if(autoCreate) {
- int drawingNumber = getNextPartNumber(XSSFRelation.VML_DRAWINGS,
- getPackagePart().getPackage().getPartsByContentType(XSSFRelation.VML_DRAWINGS.getContentType()).size());
- RelationPart rp = createRelationship(XSSFRelation.VML_DRAWINGS, getWorkbook().getXssfFactory(), drawingNumber, false);
- drawing = rp.getDocumentPart();
- String relId = rp.getRelationship().getId();
-
- //add CTLegacyDrawing element which indicates that this sheet contains drawing components built on the drawingML platform.
- //The relationship Id references the part containing the drawing definitions.
- ctDrawing = worksheet.addNewLegacyDrawing();
- ctDrawing.setId(relId);
- }
- } else {
- //search the referenced drawing in the list of the sheet's relations
- final String id = ctDrawing.getId();
- for (RelationPart rp : getRelationParts()){
- POIXMLDocumentPart p = rp.getDocumentPart();
- if(p instanceof XSSFVMLDrawing) {
- XSSFVMLDrawing dr = (XSSFVMLDrawing)p;
- String drId = rp.getRelationship().getId();
- if (drId.equals(id)) {
- drawing = dr;
- break;
+ if (xssfvmlDrawing == null) {
+ XSSFVMLDrawing drawing = null;
+ CTLegacyDrawing ctDrawing = getCTLegacyDrawing();
+ if(ctDrawing == null) {
+ if(autoCreate) {
+ int drawingNumber = getNextPartNumber(XSSFRelation.VML_DRAWINGS,
+ getPackagePart().getPackage().getPartsByContentType(XSSFRelation.VML_DRAWINGS.getContentType()).size());
+ RelationPart rp = createRelationship(XSSFRelation.VML_DRAWINGS, getWorkbook().getXssfFactory(), drawingNumber, false);
+ drawing = rp.getDocumentPart();
+ String relId = rp.getRelationship().getId();
+
+ //add CTLegacyDrawing element which indicates that this sheet contains drawing components built on the drawingML platform.
+ //The relationship Id references the part containing the drawing definitions.
+ ctDrawing = worksheet.addNewLegacyDrawing();
+ ctDrawing.setId(relId);
+ }
+ } else {
+ //search the referenced drawing in the list of the sheet's relations
+ final String id = ctDrawing.getId();
+ for (RelationPart rp : getRelationParts()){
+ POIXMLDocumentPart p = rp.getDocumentPart();
+ if(p instanceof XSSFVMLDrawing) {
+ XSSFVMLDrawing dr = (XSSFVMLDrawing)p;
+ String drId = rp.getRelationship().getId();
+ if (drId.equals(id)) {
+ drawing = dr;
+ break;
+ }
+ // do not break here since drawing has not been found yet (see bug 52425)
}
- // do not break here since drawing has not been found yet (see bug 52425)
+ }
+ if(drawing == null){
+ LOG.atError().log("Can't find VML drawing with id={} in the list of the sheet's relationships", id);
}
}
- if(drawing == null){
- LOG.atError().log("Can't find VML drawing with id={} in the list of the sheet's relationships", id);
- }
+ xssfvmlDrawing = drawing;
}
- return drawing;
+ return xssfvmlDrawing;
}
protected CTDrawing getCTDrawing() {
Modified: poi/trunk/poi/src/main/java9/module-info.class
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java9/module-info.class?rev=1895388&r1=1895387&r2=1895388&view=diff
==============================================================================
Binary files - no diff available.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org