Class ProjectFileUtil
java.lang.Object
java.nio.file.spi.FileTypeDetector
com.inductiveautomation.ignition.common.project.ProjectFileUtil
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)
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic void
exportToZip
(ResourceCollectionManifest manifest, List<Resource> resources, OutputStream destination) static void
exportToZip
(ResourceCollectionManifest manifest, List<Resource> resources, OutputStream destination, Encoder encoder) static ProjectImport
fromInputStream
(InputStream s, String projectNameOverwrite) static Optional<ProjectImport>
fromProjectFile
(File projectFile, String projectNameOverride) static ProjectImport
importFromZip
(File projectFile, String projectNameOverwrite) static ProjectImport
importFromZip
(InputStream zipStream, String projectName) static boolean
static boolean
isXmlProjectFile
(File file) Detect if a file appears to be an xml based project exportstatic boolean
isZipProjectFile
(File file) Detect if a file appears to be a zip based (8.0+) project export fileprobeContentType
(Path path) 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 staticXML_FILE_TYPE
orZIP_FILE_TYPE
, the latter being the format for project exports in 8.0 and higher.static Resource
-
Field Details
-
XML_FILE_TYPE
- See Also:
-
ZIP_FILE_TYPE
- See Also:
-
-
Constructor Details
-
ProjectFileUtil
public ProjectFileUtil()
-
-
Method Details
-
exportToZip
public static void exportToZip(ResourceCollectionManifest manifest, List<Resource> resources, OutputStream destination) throws IOException - Throws:
IOException
-
exportToZip
public static void exportToZip(ResourceCollectionManifest manifest, List<Resource> resources, OutputStream destination, Encoder encoder) throws IOException - Throws:
IOException
-
probeContentType
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 staticXML_FILE_TYPE
orZIP_FILE_TYPE
, the latter being the format for project exports in 8.0 and higher.- Specified by:
probeContentType
in classFileTypeDetector
- 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:
IOException
- on failure to read the path as a buffered input stream
-
isXmlProjectFile
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:
IOException
- on failure to read file
-
isZipProjectFile
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:
IOException
- on failure to read file
-
isSingleton
-
sanitizeSingletons
-
fromProjectFile
public static Optional<ProjectImport> fromProjectFile(File projectFile, String projectNameOverride) throws IOException, SAXException, ResourceCollectionInvalidException - Parameters:
projectFile
- the exported project fileprojectNameOverride
- 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:
IOException
- on failure to read the fileSAXException
- on failure to read/parse xmlResourceCollectionInvalidException
-
importFromZip
public static ProjectImport importFromZip(@Nonnull File projectFile, String projectNameOverwrite) throws ResourceCollectionInvalidException, IOException -
fromInputStream
public static ProjectImport fromInputStream(InputStream s, String projectNameOverwrite) throws IOException, ResourceCollectionInvalidException, SAXException -
importFromZip
public static ProjectImport importFromZip(@Nonnull InputStream zipStream, String projectName) throws ResourceCollectionInvalidException, IOException
-