PDFBOX-4636: refactor by replacing Map with Set
git-svn-id: https://svn.apache.org/repos/asf/pdfbox/trunk@1866097 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java b/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
index 1098857..1a37532 100644
--- a/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
+++ b/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
@@ -20,9 +20,11 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -295,12 +297,12 @@
// the content stream to write to
PDPageContentStream contentStream;
- Map<COSDictionary,Map<COSDictionary,PDAnnotationWidget>> pagesWidgetsMap = buildPagesWidgetsMap(fields);
+ Map<COSDictionary,Set<COSDictionary>> pagesWidgetsMap = buildPagesWidgetsMap(fields);
// preserve all non widget annotations
for (PDPage page : document.getPages())
{
- Map<COSDictionary, PDAnnotationWidget> widgetsForPageMap = pagesWidgetsMap.get(page.getCOSObject());
+ Set<COSDictionary> widgetsForPageMap = pagesWidgetsMap.get(page.getCOSObject());
// indicates if the original content stream
// has been wrapped in a q...Q pair.
@@ -310,7 +312,7 @@
for (PDAnnotation annotation: page.getAnnotations())
{
- if (widgetsForPageMap != null && widgetsForPageMap.get(annotation.getCOSObject()) == null)
+ if (widgetsForPageMap != null && !widgetsForPageMap.contains(annotation.getCOSObject()))
{
annotations.add(annotation);
}
@@ -812,9 +814,9 @@
}
}
- private Map<COSDictionary,Map<COSDictionary,PDAnnotationWidget>> buildPagesWidgetsMap(List<PDField> fields) throws IOException
+ private Map<COSDictionary,Set<COSDictionary>> buildPagesWidgetsMap(List<PDField> fields) throws IOException
{
- Map<COSDictionary,Map<COSDictionary,PDAnnotationWidget>> pagesAnnotationsMap = new HashMap<>();
+ Map<COSDictionary,Set<COSDictionary>> pagesAnnotationsMap = new HashMap<>();
boolean hasMissingPageRef = false;
for (PDField field : fields)
@@ -856,19 +858,19 @@
return pagesAnnotationsMap;
}
- private void fillPagesAnnotationMap(Map<COSDictionary, Map<COSDictionary, PDAnnotationWidget>> pagesAnnotationsMap,
+ private void fillPagesAnnotationMap(Map<COSDictionary, Set<COSDictionary>> pagesAnnotationsMap,
PDPage page, PDAnnotationWidget widget)
{
if (pagesAnnotationsMap.get(page.getCOSObject()) == null)
{
- Map<COSDictionary,PDAnnotationWidget> widgetsForPage = new HashMap<>();
- widgetsForPage.put(widget.getCOSObject(), widget);
+ Set<COSDictionary> widgetsForPage = new HashSet<>();
+ widgetsForPage.add(widget.getCOSObject());
pagesAnnotationsMap.put(page.getCOSObject(), widgetsForPage);
}
else
{
- Map<COSDictionary,PDAnnotationWidget> widgetsForPage = pagesAnnotationsMap.get(page.getCOSObject());
- widgetsForPage.put(widget.getCOSObject(), widget);
+ Set<COSDictionary> widgetsForPage = pagesAnnotationsMap.get(page.getCOSObject());
+ widgetsForPage.add(widget.getCOSObject());
}
}