Class RepositoryUtilities
- java.lang.Object
-
- org.pentaho.reporting.libraries.repository.RepositoryUtilities
-
public class RepositoryUtilities extends Object
A collection of repository related helper methods that make it easier to work with repositories.- Author:
- Thomas Morgner
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static 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[]
split(String name, String separator)
Splits a string on the given separator.static String[]
splitPath(String name, String separator)
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 Detail
-
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:
splitPath(String, String)
-
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:
splitPath(String, String)
-
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
public static String[] splitPath(String name, String separator)
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
public static String[] split(String name, String separator)
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
public static String[] buildNameArray(ContentEntity entity)
Builds a absolute pathname for the given entity.- Parameters:
entity
- the entity for which the pathname should be computed.- Returns:
- the absolute path.
-
buildName
public static 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..- Parameters:
entity
- the entity for which the pathname should be computed.separator
- the filename separator.- Returns:
- the absolute path.
-
isInvalidPathName
public static boolean isInvalidPathName(String name)
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
public static int getZipLevel(ContentItem item)
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
public static int getZipMethod(ContentItem item)
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.
-
-