[github-361] reuse regex pattern instances. Thanks to XenoAmess. This closes #361

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1902756 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
PJ Fanning 2022-07-15 22:45:56 +00:00
parent 87ee700d04
commit 01f14a7548
3 changed files with 646 additions and 620 deletions

View File

@ -77,6 +77,8 @@ public class XMLSlideShow extends POIXMLDocument
//arbitrarily selected; may need to increase
private static final int DEFAULT_MAX_RECORD_LENGTH = 1_000_000;
private static int MAX_RECORD_LENGTH = DEFAULT_MAX_RECORD_LENGTH;
private static final Pattern GET_ALL_EMBEDDED_PARTS_PATTERN = Pattern.compile("/ppt/embeddings/.*?");
private static final Pattern GET_PICTURE_DATA_PATTERN = Pattern.compile("/ppt/media/.*?");
private CTPresentation _presentation;
private final List<XSLFSlide> _slides = new ArrayList<>();
@ -222,14 +224,14 @@ public class XMLSlideShow extends POIXMLDocument
@Override
public List<PackagePart> getAllEmbeddedParts() {
return Collections.unmodifiableList(
getPackage().getPartsByName(Pattern.compile("/ppt/embeddings/.*?"))
getPackage().getPartsByName(GET_ALL_EMBEDDED_PARTS_PATTERN)
);
}
@Override
public List<XSLFPictureData> getPictureData() {
if (_pictures.isEmpty()) {
getPackage().getPartsByName(Pattern.compile("/ppt/media/.*?")).forEach(part -> {
getPackage().getPartsByName(GET_PICTURE_DATA_PATTERN).forEach(part -> {
XSLFPictureData pd = new XSLFPictureData(part);
pd.setIndex(_pictures.size());
_pictures.add(pd);

View File

@ -107,6 +107,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
*/
public class XSSFWorkbook extends POIXMLDocument implements Workbook, Date1904Support {
private static final Pattern COMMA_PATTERN = Pattern.compile(",");
private static final Pattern GET_ALL_PICTURES_PATTERN = Pattern.compile("/xl/media/.*?");
/**
* Images formats supported by XSSF but not by HSSF
@ -993,7 +994,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Date1904Su
@Override
public List<XSSFPictureData> getAllPictures() {
if(pictures == null){
List<PackagePart> mediaParts = getPackage().getPartsByName(Pattern.compile("/xl/media/.*?"));
List<PackagePart> mediaParts = getPackage().getPartsByName(GET_ALL_PICTURES_PATTERN);
pictures = new ArrayList<>(mediaParts.size());
for(PackagePart part : mediaParts){
pictures.add(new XSSFPictureData(part));