Class ContentPackage

  • All Implemented Interfaces:
    java.lang.AutoCloseable

    public class ContentPackage
    extends java.lang.Object
    implements java.lang.AutoCloseable
    A package stores the user content as a sorted collection of parts.
    See Also:
    ContentPart
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      @NotNull ContentPart clonePart​(@NotNull ContentPart part)
      Adds an existing part to this package.
      void close()  
      @NotNull ContentPart createPart​(@NotNull java.lang.String type)
      Appends a new part to this package.
      void extractObject​(@NotNull java.lang.String url, @NotNull java.io.File file)
      Extracts an object from this package to a given file.
      protected void finalize()  
      @NotNull ParameterSet getMetadata()
      Returns this package's metadata as a parameter set.
      @NotNull ContentPart getPart​(int index)
      Returns the part at the specified index.
      @NotNull ContentPart getPart​(@NotNull java.lang.String id)
      Returns the specified part.
      int getPartCount()
      Returns the number of parts in this package.
      @NotNull java.lang.String getPath()
      Returns the path of this package.
      int indexOfPart​(@NotNull ContentPart part)
      Returns the index of a given part.
      boolean isClosed()
      Tells whether the close() method has been called.
      void removePart​(@NotNull ContentPart part)
      Removes the specified part.
      void save()
      Saves all ongoing modifications made to this package.
      void saveAs​(@NotNull java.io.File file)
      Saves all ongoing modifications made to this package, to a new file.
      void saveToTemp()
      Saves all ongoing modifications made to this package to a temporary folder.
      void setMetadata​(@NotNull ParameterSet parameters)
      Set this package's metadata with the given parameter set.
      • Methods inherited from class java.lang.Object

        clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Throwable
      • close

        public final void close()
        Specified by:
        close in interface java.lang.AutoCloseable
      • isClosed

        public final boolean isClosed()
        Tells whether the close() method has been called. Once an object is closed any method will throw IllegalStateException.
        Returns:
        true if this object is closed.
      • save

        public final void save()
                        throws java.io.IOException
        Saves all ongoing modifications made to this package.
        Throws:
        java.lang.IllegalStateException - when this package is closed.
        java.io.IOException - when an I/O operation fails.
      • saveToTemp

        public final void saveToTemp()
                              throws java.io.IOException
        Saves all ongoing modifications made to this package to a temporary folder. This operation is faster than save().

        Note: by default temporary folder is located in the same directory as this package, and named by appending -files to this package's name.

        Note: temporary folder location can be set via the content-package.temp-folder configuration property.

        Throws:
        java.lang.IllegalStateException - when this package is closed.
        java.io.IOException - when an I/O operation fails.
      • saveAs

        public final void saveAs​(@NotNull
                                 @NotNull java.io.File file)
                          throws java.io.IOException
        Saves all ongoing modifications made to this package, to a new file.
        Parameters:
        file - the new file name.
        Throws:
        java.lang.IllegalStateException - when this package is closed.
        java.io.IOException - when an I/O operation fails.
      • getPartCount

        public final int getPartCount()
        Returns the number of parts in this package.
        Returns:
        the part count.
        Throws:
        java.lang.IllegalStateException - when this package is closed.
      • getPart

        @NotNull
        public final @NotNull ContentPart getPart​(int index)
                                           throws java.lang.IndexOutOfBoundsException
        Returns the part at the specified index.
        Parameters:
        index - the index of the requested part.
        Returns:
        the requested part.
        Throws:
        java.lang.IllegalStateException - when this package is closed.
        java.lang.IndexOutOfBoundsException - when index is out of range.
      • getPart

        @NotNull
        public final @NotNull ContentPart getPart​(@NotNull
                                                  @NotNull java.lang.String id)
                                           throws java.lang.IllegalArgumentException
        Returns the specified part.
        Parameters:
        id - the identifier of the requested part.
        Returns:
        the part.
        Throws:
        java.lang.IllegalStateException - when this package is closed.
        java.lang.IllegalArgumentException - when no part is associated with identifier id.
      • indexOfPart

        public final int indexOfPart​(@NotNull
                                     @NotNull ContentPart part)
        Returns the index of a given part.
        Parameters:
        part - the part.
        Returns:
        the index of the part, or -1 if the part does not belong to this package.
        Throws:
        java.lang.IllegalStateException - when this package is closed.
        java.lang.IllegalStateException - when this package's part is closed.
      • createPart

        @NotNull
        public final @NotNull ContentPart createPart​(@NotNull
                                                     @NotNull java.lang.String type)
                                              throws java.lang.IllegalArgumentException
        Appends a new part to this package.
        Parameters:
        type - the type of part.
        Returns:
        the newly created part.
        Throws:
        java.lang.IllegalStateException - when this package is closed.
        java.lang.IllegalArgumentException - when type is not a valid ContentPart type.
      • removePart

        public final void removePart​(@NotNull
                                     @NotNull ContentPart part)
                              throws java.lang.IllegalArgumentException
        Removes the specified part.
        Parameters:
        part - the part to remove.
        Throws:
        java.lang.IllegalStateException - when this package is closed.
        java.lang.IllegalStateException - when this package's part is closed.
        java.lang.IllegalArgumentException - when part does not belong to this package.
        Since:
        1.2
      • clonePart

        @NotNull
        public final @NotNull ContentPart clonePart​(@NotNull
                                                    @NotNull ContentPart part)
        Adds an existing part to this package.

        Note: Part modifications that have not been saved (to temporary directory or to an actual package file) will not be imported.

        Note: The part can be an existing part from this package or from another open package.

        Parameters:
        part - the part to clone into this package.
        Returns:
        the newly created part.
        Throws:
        java.lang.IllegalStateException - when this package is closed.
        java.lang.IllegalStateException - when this package's part is closed.
        java.lang.IllegalArgumentException - when part is not valid.
        Since:
        1.2
      • extractObject

        public final void extractObject​(@NotNull
                                        @NotNull java.lang.String url,
                                        @NotNull
                                        @NotNull java.io.File file)
                                 throws java.io.IOException,
                                        java.lang.IllegalArgumentException
        Extracts an object from this package to a given file.
        Parameters:
        url - URL of the object.
        file - destination file.
        Throws:
        java.lang.IllegalStateException - when this package is closed.
        java.lang.IllegalArgumentException - when no object named url exists.
        java.io.IOException - when an I/O operation fails.
      • getMetadata

        @NotNull
        public final @NotNull ParameterSet getMetadata()
        Returns this package's metadata as a parameter set.
        Returns:
        the metadata.
        Throws:
        java.lang.IllegalStateException - when this package is closed.
      • setMetadata

        public final void setMetadata​(@NotNull
                                      @NotNull ParameterSet parameters)
        Set this package's metadata with the given parameter set.
        Parameters:
        parameters - the metadata.
        Throws:
        java.lang.IllegalStateException - when this package is closed.
        java.lang.IllegalStateException - when parameters is closed.
      • getPath

        @NotNull
        public final @NotNull java.lang.String getPath()
        Returns the path of this package.
        Returns:
        the path.
        Throws:
        java.lang.IllegalStateException - when this package is closed.
        Since:
        2.0