Class RepositoryUtilities
java.lang.Object
org.pentaho.reporting.libraries.repository.RepositoryUtilities
A collection of repository related helper methods that make it easier to work with repositories.
- Author:
- Thomas Morgner
-
Method Summary
Modifier and TypeMethodDescriptionstatic String
buildName
(ContentEntity entity, String separator) Builds a string of an absolute pathname for the given entity and using the given separator to separate filename segments..static String[]
buildNameArray
(ContentEntity entity) Builds a absolute pathname for the given entity.static ContentItem
createItem
(Repository repository, String[] name) Tries to create a content item with the given path-name in the repository.static ContentLocation
createLocation
(Repository repository, String[] name) Tries to create a content location with the given path-name in the repository.static ContentEntity
getEntity
(Repository repository, String[] name) Returns the content entity for the given path name.static int
getZipLevel
(ContentItem item) Computes the declared Zip-Compression level for the given content-item.static int
getZipMethod
(ContentItem item) Computes the declared Zip-Compression mode for the given content-item.static boolean
isExistsEntity
(Repository repository, String[] name) Checks whether a given pathname points to a valid content entity.static boolean
isInvalidPathName
(String name) Checks whether the given entity name is valid for filesystems.static String[]
Splits a string on the given separator.static String[]
Splits a string on the given separator.static void
writeAsZip
(OutputStream outputStream, Repository repository) Writes the given repository as ZIP-File into the given output stream.static void
writeToZipStream
(ZipOutputStream zipOutputStream, Repository repository) Writes the given repository to the given ZIP-output stream.
-
Method Details
-
getEntity
public static ContentEntity getEntity(Repository repository, String[] name) throws ContentIOException Returns the content entity for the given path name.- Parameters:
repository
- the repository from where to retrieve the content entity.name
- the path name as array of name-segments.- Returns:
- the entity at the position, never null.
- Throws:
ContentIOException
- if the path did not point to a valid content entity.- See Also:
-
isExistsEntity
public static boolean isExistsEntity(Repository repository, String[] name) throws ContentIOException Checks whether a given pathname points to a valid content entity.- Parameters:
repository
- the repository from where to retrieve the content entity.name
- the path name as array of name-segments.- Returns:
- true, if the entity exists, false otherwise.
- Throws:
ContentIOException
- if an unexpected repository error occured.- See Also:
-
createItem
public static ContentItem createItem(Repository repository, String[] name) throws ContentIOException Tries to create a content item with the given path-name in the repository. This call will succeed if and only if all but the last segment of the name point to Content-Locations and if the content-item does not yet exist.- Parameters:
repository
- the repository in which a new entity should be created.name
- the name of the new entity as path name.- Returns:
- the newly created content-item.
- Throws:
ContentIOException
- if an repository error occured or if the path was not valid.
-
createLocation
public static ContentLocation createLocation(Repository repository, String[] name) throws ContentIOException Tries to create a content location with the given path-name in the repository. This call will succeed if and only if all but the last segment of the name point to Content-Locations and if the content-entity does not yet exist.- Parameters:
repository
- the repository in which a new entity should be created.name
- the name of the new entity as path name.- Returns:
- the newly created content-location.
- Throws:
ContentIOException
- if an repository error occured or if the path was not valid.
-
splitPath
Splits a string on the given separator. Multiple occurences of the separator are unified into a single separator.- Parameters:
name
- the path name.separator
- the separator on which to split.- Returns:
- the name as array of atomar path elements.
-
split
Splits a string on the given separator. Multiple occurences of the separator result in empty strings as path elements in the returned array.- Parameters:
name
- the path name.separator
- the separator on which to split.- Returns:
- the name as array of atomar path elements.
-
buildNameArray
Builds a absolute pathname for the given entity.- Parameters:
entity
- the entity for which the pathname should be computed.- Returns:
- the absolute path.
-
buildName
Builds a string of an absolute pathname for the given entity and using the given separator to separate filename segments..- Parameters:
entity
- the entity for which the pathname should be computed.separator
- the filename separator.- Returns:
- the absolute path.
-
isInvalidPathName
Checks whether the given entity name is valid for filesystems. This method rejects filenames that either contain a slash ('/') or backslash ('\') which both are commonly used path-separators and it rejects filenames that contain only dots (as the dot names are used as directory traversal names).- Parameters:
name
- the filename that should be tested. This name must be a single name section, not a full path.- Returns:
- true, if the pathname is valid, false otherwise.
-
writeAsZip
public static void writeAsZip(OutputStream outputStream, Repository repository) throws IOException, ContentIOException Writes the given repository as ZIP-File into the given output stream.- Parameters:
outputStream
- the output stream that should receive the zipfile.repository
- the repository that should be written.- Throws:
IOException
- if an IO error prevents the writing of the file.ContentIOException
- if a repository related IO error occurs.
-
writeToZipStream
public static void writeToZipStream(ZipOutputStream zipOutputStream, Repository repository) throws IOException, ContentIOException Writes the given repository to the given ZIP-output stream.- Parameters:
zipOutputStream
- the output stream that represents the ZipFile to be generated.repository
- the repository that should be written.- Throws:
IOException
- if an IO error prevents the writing of the file.ContentIOException
- if a repository related IO error occurs.
-
getZipLevel
Computes the declared Zip-Compression level for the given content-item. If the content-items attributes do not contain a definition, the default compression is used instead.- Parameters:
item
- the content item for which the compression factor should be computed.- Returns:
- the compression level.
-
getZipMethod
Computes the declared Zip-Compression mode for the given content-item. If the content-items attributes do not contain a valid definition, the default compression is used instead.- Parameters:
item
- the content item for which the compression mode should be computed.- Returns:
- the compression mode, either ZipOutputStream.DEFLATED or ZipOutputStream.STORED.
-