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 StringbuildName(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 ContentItemcreateItem(Repository repository, String[] name) Tries to create a content item with the given path-name in the repository.static ContentLocationcreateLocation(Repository repository, String[] name) Tries to create a content location with the given path-name in the repository.static ContentEntitygetEntity(Repository repository, String[] name) Returns the content entity for the given path name.static intgetZipLevel(ContentItem item) Computes the declared Zip-Compression level for the given content-item.static intgetZipMethod(ContentItem item) Computes the declared Zip-Compression mode for the given content-item.static booleanisExistsEntity(Repository repository, String[] name) Checks whether a given pathname points to a valid content entity.static booleanisInvalidPathName(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 voidwriteAsZip(OutputStream outputStream, Repository repository) Writes the given repository as ZIP-File into the given output stream.static voidwriteToZipStream(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.
-