Class ProjectFileUtil


  • public class ProjectFileUtil
    extends java.nio.file.spi.FileTypeDetector
    A utility class for inspecting, identifying and loading Projects from Files or streams.

    Provides utilities for both legacy XML exported projects, as well as 8.0 disk-based project zip exports.

    Also registers with the ServiceLoader to act as a FileTypeDetector. See the docs on probeContentType(java.nio.file.Path)

    • Constructor Detail

      • ProjectFileUtil

        public ProjectFileUtil()
    • Method Detail

      • exportToZip

        public static void exportToZip​(ProjectManifest manifest,
                                       java.util.List<ProjectResource> resources,
                                       java.io.OutputStream destination)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • probeContentType

        @Nullable
        public java.lang.String probeContentType​(@Nonnull
                                                 java.nio.file.Path path)
                                          throws java.io.IOException
        This class is registered with the ServiceLoader to provide itself as a FileTypeDetector, which makes it possible to use Files.probeContentType(someFilePath) and then compare the result to see if it matches the static XML_FILE_TYPE or ZIP_FILE_TYPE, the latter being the format for project exports in 8.0 and higher.
        Specified by:
        probeContentType in class java.nio.file.spi.FileTypeDetector
        Parameters:
        path - path to a file possibly being an Ignition project export in either zip or .proj xml format.
        Returns:
        the discovered file type, or null if no match was found
        Throws:
        java.io.IOException - on failure to read the path as a buffered input stream
      • isXmlProjectFile

        public static boolean isXmlProjectFile​(java.io.File file)
                                        throws java.io.IOException
        Detect if a file appears to be an xml based project export
        Parameters:
        file - a file to detect
        Returns:
        true if the file is an xml based project export
        Throws:
        java.io.IOException - on failure to read file
      • isZipProjectFile

        public static boolean isZipProjectFile​(java.io.File file)
                                        throws java.io.IOException
        Detect if a file appears to be a zip based (8.0+) project export file
        Parameters:
        file - to detect
        Returns:
        true if the file is believed to be a zip based export
        Throws:
        java.io.IOException - on failure to read file
      • importFromXml

        public static ProjectImport importFromXml​(@Nonnull
                                                  java.io.File projectFile,
                                                  java.lang.String newProjectName)
                                           throws java.io.IOException,
                                                  org.xml.sax.SAXException,
                                                  ProjectInvalidException
        Creates a RuntimeProject from a legacy (Ignition 7.9 and older) xml-based project export
        Parameters:
        projectFile - file to import from
        newProjectName - if non-null or empty string, will create the new project with the given name, building the resources with the appropriate project/resource paths.
        Throws:
        java.io.IOException
        org.xml.sax.SAXException
        ProjectInvalidException
      • importFromXml

        public static ProjectImport importFromXml​(@Nonnull
                                                  java.io.InputStream is,
                                                  java.lang.String newProjectName)
                                           throws java.io.IOException,
                                                  org.xml.sax.SAXException
        Throws:
        java.io.IOException
        org.xml.sax.SAXException
      • fromProjectFile

        public static java.util.Optional<ProjectImport> fromProjectFile​(java.io.File projectFile,
                                                                        java.lang.String projectNameOverride)
                                                                 throws java.io.IOException,
                                                                        org.xml.sax.SAXException,
                                                                        ProjectInvalidException
        Parameters:
        projectFile - the exported project file
        projectNameOverride - if the resources in the incoming project should be loaded with a different project name than exists in the file, pass the desired name in as this arg
        Returns:
        optional containing a runtime project on success, or empty if parsing or creation of the project failed.
        Throws:
        java.io.IOException - on failure to read the file
        org.xml.sax.SAXException - on failure to read/parse xml
        ProjectInvalidException