Class COSArrayList<E>

  • Type Parameters:
    E - Element type.
    All Implemented Interfaces:
    java.lang.Iterable<E>, java.util.Collection<E>, java.util.List<E>

    public class COSArrayList<E>
    extends java.lang.Object
    implements java.util.List<E>
    This is an implementation of a List that will sync its contents to a COSArray.
    • Constructor Summary

      Constructors 
      Constructor Description
      COSArrayList()
      Default constructor.
      COSArrayList​(E actualObject, COSBase item, COSDictionary dictionary, COSName dictionaryKey)
      This is a really special constructor.
      COSArrayList​(java.util.List<E> actualList, COSArray cosArray)
      Create the COSArrayList specifying the List and the backing COSArray.
      COSArrayList​(COSDictionary dictionary, COSName dictionaryKey)
      This constructor is to be used if the array doesn't exist, but is to be created and added to the parent dictionary as soon as the first element is added to the array.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(int index, E element)
      boolean add​(E o)
      boolean addAll​(int index, java.util.Collection<? extends E> c)
      boolean addAll​(java.util.Collection<? extends E> c)
      void clear()
      boolean contains​(java.lang.Object o)
      boolean containsAll​(java.util.Collection<?> c)
      static COSArray converterToCOSArray​(java.util.List<?> cosObjectableList)
      This will convert a list of COSObjectables to an array list of COSBase objects.
      boolean equals​(java.lang.Object o)
      E get​(int index)
      int hashCode()
      int indexOf​(java.lang.Object o)
      boolean isEmpty()
      java.util.Iterator<E> iterator()
      int lastIndexOf​(java.lang.Object o)
      java.util.ListIterator<E> listIterator()
      java.util.ListIterator<E> listIterator​(int index)
      E remove​(int index)
      boolean remove​(java.lang.Object o)
      boolean removeAll​(java.util.Collection<?> c)
      boolean retainAll​(java.util.Collection<?> c)
      E set​(int index, E element)
      int size()
      java.util.List<E> subList​(int fromIndex, int toIndex)
      java.lang.Object[] toArray()
      <X> X[] toArray​(X[] a)
      private java.util.List<COSBase> toCOSObjectList​(java.util.Collection<?> list)  
      COSArray toList()
      This will return then underlying COSArray.
      java.lang.String toString()
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.util.Collection

        parallelStream, removeIf, stream
      • Methods inherited from interface java.lang.Iterable

        forEach
      • Methods inherited from interface java.util.List

        replaceAll, sort, spliterator
    • Field Detail

      • actual

        private final java.util.List<E> actual
      • isFiltered

        private boolean isFiltered
    • Constructor Detail

      • COSArrayList

        public COSArrayList()
        Default constructor.
      • COSArrayList

        public COSArrayList​(java.util.List<E> actualList,
                            COSArray cosArray)
        Create the COSArrayList specifying the List and the backing COSArray.

        User of this constructor need to ensure that the entries in the List and the backing COSArray are matching i.e. the COSObject of the List entry is included in the COSArray.

        If the number of entries in the List and the COSArray differ it is assumed that the List has been filtered. In that case the COSArrayList shall only be used for reading purposes and no longer for updating.

        Parameters:
        actualList - The list of standard java objects
        cosArray - The COS array object to sync to.
      • COSArrayList

        public COSArrayList​(COSDictionary dictionary,
                            COSName dictionaryKey)
        This constructor is to be used if the array doesn't exist, but is to be created and added to the parent dictionary as soon as the first element is added to the array.
        Parameters:
        dictionary - The dictionary that holds the item, and will hold the array if an item is added.
        dictionaryKey - The key into the dictionary to set the item.
      • COSArrayList

        public COSArrayList​(E actualObject,
                            COSBase item,
                            COSDictionary dictionary,
                            COSName dictionaryKey)
        This is a really special constructor. Sometimes the PDF spec says that a dictionary entry can either be a single item or an array of those items. But in the PDModel interface we really just want to always return a java.util.List. In the case were we get the list and never modify it we don't want to convert to COSArray and put one element, unless we append to the list. So here we are going to create this object with a single item instead of a list, but allow more items to be added and then converted to an array.
        Parameters:
        actualObject - The PDModel object.
        item - The COS Model object.
        dictionary - The dictionary that holds the item, and will hold the array if an item is added.
        dictionaryKey - The key into the dictionary to set the item.
    • Method Detail

      • size

        public int size()
        Specified by:
        size in interface java.util.Collection<E>
        Specified by:
        size in interface java.util.List<E>
      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface java.util.Collection<E>
        Specified by:
        isEmpty in interface java.util.List<E>
      • contains

        public boolean contains​(java.lang.Object o)
        Specified by:
        contains in interface java.util.Collection<E>
        Specified by:
        contains in interface java.util.List<E>
      • iterator

        public java.util.Iterator<E> iterator()
        Specified by:
        iterator in interface java.util.Collection<E>
        Specified by:
        iterator in interface java.lang.Iterable<E>
        Specified by:
        iterator in interface java.util.List<E>
      • toArray

        public java.lang.Object[] toArray()
        Specified by:
        toArray in interface java.util.Collection<E>
        Specified by:
        toArray in interface java.util.List<E>
      • toArray

        public <X> X[] toArray​(X[] a)
        Specified by:
        toArray in interface java.util.Collection<E>
        Specified by:
        toArray in interface java.util.List<E>
      • add

        public boolean add​(E o)
        Specified by:
        add in interface java.util.Collection<E>
        Specified by:
        add in interface java.util.List<E>
      • remove

        public boolean remove​(java.lang.Object o)
        Specified by:
        remove in interface java.util.Collection<E>
        Specified by:
        remove in interface java.util.List<E>
      • containsAll

        public boolean containsAll​(java.util.Collection<?> c)
        Specified by:
        containsAll in interface java.util.Collection<E>
        Specified by:
        containsAll in interface java.util.List<E>
      • addAll

        public boolean addAll​(java.util.Collection<? extends E> c)
        Specified by:
        addAll in interface java.util.Collection<E>
        Specified by:
        addAll in interface java.util.List<E>
      • addAll

        public boolean addAll​(int index,
                              java.util.Collection<? extends E> c)
        Specified by:
        addAll in interface java.util.List<E>
      • converterToCOSArray

        public static COSArray converterToCOSArray​(java.util.List<?> cosObjectableList)
        This will convert a list of COSObjectables to an array list of COSBase objects.
        Parameters:
        cosObjectableList - A list of COSObjectable.
        Returns:
        A list of COSBase.
        Throws:
        java.lang.IllegalArgumentException - if an object type is not supported for conversion to a COSBase object.
      • toCOSObjectList

        private java.util.List<COSBase> toCOSObjectList​(java.util.Collection<?> list)
      • removeAll

        public boolean removeAll​(java.util.Collection<?> c)
        Specified by:
        removeAll in interface java.util.Collection<E>
        Specified by:
        removeAll in interface java.util.List<E>
      • retainAll

        public boolean retainAll​(java.util.Collection<?> c)
        Specified by:
        retainAll in interface java.util.Collection<E>
        Specified by:
        retainAll in interface java.util.List<E>
      • clear

        public void clear()
        Specified by:
        clear in interface java.util.Collection<E>
        Specified by:
        clear in interface java.util.List<E>
      • equals

        public boolean equals​(java.lang.Object o)
        Specified by:
        equals in interface java.util.Collection<E>
        Specified by:
        equals in interface java.util.List<E>
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface java.util.Collection<E>
        Specified by:
        hashCode in interface java.util.List<E>
        Overrides:
        hashCode in class java.lang.Object
      • get

        public E get​(int index)
        Specified by:
        get in interface java.util.List<E>
      • set

        public E set​(int index,
                     E element)
        Specified by:
        set in interface java.util.List<E>
      • add

        public void add​(int index,
                        E element)
        Specified by:
        add in interface java.util.List<E>
      • remove

        public E remove​(int index)
        Specified by:
        remove in interface java.util.List<E>
      • indexOf

        public int indexOf​(java.lang.Object o)
        Specified by:
        indexOf in interface java.util.List<E>
      • lastIndexOf

        public int lastIndexOf​(java.lang.Object o)
        Specified by:
        lastIndexOf in interface java.util.List<E>
      • listIterator

        public java.util.ListIterator<E> listIterator()
        Specified by:
        listIterator in interface java.util.List<E>
      • listIterator

        public java.util.ListIterator<E> listIterator​(int index)
        Specified by:
        listIterator in interface java.util.List<E>
      • subList

        public java.util.List<E> subList​(int fromIndex,
                                         int toIndex)
        Specified by:
        subList in interface java.util.List<E>
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • toList

        public COSArray toList()
        This will return then underlying COSArray.
        Returns:
        the COSArray