Hi Team
We are planning to migrate from JCR API to OAK API. Earlier we have used
JCR file for file operations. Now started eliminating JCR API Code and
replacing with OAK API.
I would like to create file upload like this structure:
mainfolder/subfolder/sample.pdf (example: CompanyName/userName/Name of the
file)
*OAK API.*
@Override
public String fileUpload(InputStream stream, String uploadFileName, String
contentType) {
String nodeTypeName = UploadFileType.fromString(contentType);
ContentRepository repository = DocumentRepositoryProvider.getInstance();
try(ContentSession session = repository.login(new
SimpleCredentials("admin", "admin".toCharArray()), null)) {
Root root = session.getLatestRoot();
Tree baseTree = root.getTree("/");
Tree childNodeTree = baseTree.addChild(Constants.PROP_BASE_NODE);
Tree folderNodeTree = childNodeTree.addChild(nodeTypeName);
Tree fileNode = folderNodeTree.addChild(uploadFileName);
Tree contentNode = fileNode.addChild("jcr:content");
contentNode.setProperty("jcr:content", "nt:resource");
contentNode.setProperty("jcr:data", root.createBlob(stream));
contentNode.setProperty("jcr:mimeType", contentType);
root.commit();
} catch (LoginException | NoSuchWorkspaceException | IOException |
CommitFailedException ex) {
throw new RuntimeException(ex);
}
return "File uploaded successful in content management system.";
}
JCR API:
@Override
public String fileUpload(InputStream stream, String uploadFileName, String
contentType) {
Repository repository = null;
Node folder = null;
Node baseNode = null;
String nodeTypeName = UploadFileType.fromString(contentType);
try {
repository = DocumentRepositoryProvider.getInstance();
Session session = repository.login(new SimpleCredentials("admin",
"admin".toCharArray()));
Node root = session.getRootNode();
if(root.hasNode(Constants.PROP_BASE_NODE)) {
baseNode = root.getNode(Constants.PROP_BASE_NODE);
} else {
baseNode = root.addNode(Constants.PROP_BASE_NODE);
}
if(baseNode.hasNode(nodeTypeName)) {
folder = baseNode.getNode(nodeTypeName);
} else {
folder = baseNode.addNode(nodeTypeName, "nt:folder");
}
Node fileNode = null;
if(!folder.hasNode(uploadFileName)) {
fileNode = folder.addNode(uploadFileName, "nt:file");
} else {
throw new RuntimeException("File already exists in content management
system.");
}
fileNode.addMixin("mix:versionable");
fileNode.addMixin("mix:title");
fileNode.addMixin("mix:lockable");
Node contentNode = fileNode.addNode("jcr:content", "nt:resource");
Binary binary = session.getValueFactory().createBinary(stream);
contentNode.setProperty("jcr:data", binary);
contentNode.setProperty("jcr:mimeType", contentType);
contentNode.setProperty("jcr:lastModified", Calendar.getInstance());
session.save();
session.logout();
return "File uploaded successful in content management system.";
} catch ( RepositoryException ex) {
throw new RuntimeException("Unable to upload file in content repository");
}
}
Please help me in this.
Thank you