Page History
Retrieve an IContentManager
The IPortalContext has an IContentManagerFactory which can be used to create an IContentManager. To retrieve an IContentManager based on a connection, see the following code snippet for an example:
...
Which connectionName to use depends on your project's configuration.
Creating new content
The following code snippet shows how to create new content based on a given string.
...
The properties object may be used to store additional properties with the content. The contentId will be required to read, update or delete this content at a later time.
Read metadata
To retrieve file metadata, including custom properties, you may use the readMetadata method, for example:
Code Block | ||
---|---|---|
| ||
IContentMetadata metadata = contentManager.readMetadata(contentId, context.getSessionScope().getActiveUser(), true); IValue propertyValue = metadata.getProperties().getProperty("customProperty"); |
Read content
The following code snippet shows how to retrieve the string that was created in the previous example.
...
Code Block | ||
---|---|---|
| ||
InputStream stream = new ByteArrayInputStream(newContentString.getBytes("UTF-8")); IUserData userData = context.getSessionScope().getActiveUser(); CustomContentProperties properties = new CustomContentProperties(); properties.setProperty("customProperty", new StringValue("newValue")); String contentName = "new content name"; String contentType = "text/plain"; Long processId = null; String caseId = null; if(contentManager instanceof IChannelContentManager channelContentManager) { // Using the Java NIO-based API introduced in Blueriq 17.4 contentManager.update(contentId, Channels.newChannel(stream), contentName, contentType, processId, caseId, properties, userData); } else { // Using the stream-based API that was deprecated in Blueriq 17.4 and might be released in a future release contentManager.update(contentId, stream, contentName, contentType, processId, caseId, properties, userData); } |
Delete content
The following example shows how to delete the content made in the previous example:
Code Block | ||
---|---|---|
| ||
contentManager.delete(contentId);
|
Move content
The following example shows how to move content between content managers:
Code Block | ||
---|---|---|
| ||
// Get the active user data
IUserData userData = context.getSessionScope().getActiveUser();
// Pre-emptive check if the both content managers are the of the same implemation so we can check if can move the files.
// This is should also be done in the move function of the IContentManager.
if (sourceContentManager.getImplementation().getClass().equals(targetImplementation.getImplementation().getClass())) {
// Both content managers require the same implementation to perform a direct move.
GUID newContentId = sourceContentManager.move(targetContentManager, contentId, userData);
} |