Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.apache.chemistry.opencmis.client.api.*;
- import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;
- import org.apache.chemistry.opencmis.commons.PropertyIds;
- import org.apache.chemistry.opencmis.commons.SessionParameter;
- import org.apache.chemistry.opencmis.commons.enums.Action;
- import org.apache.chemistry.opencmis.commons.enums.BindingType;
- import org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException;
- import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
- import org.apache.chemistry.opencmis.commons.exceptions.CmisUnauthorizedException;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.joda.time.DateTimeUtils;
- import org.apache.chemistry.opencmis.client.api.Session;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.ConcurrentHashMap;
- public class CmisClient {
- private static Log logger = LogFactory.getLog(CmisClient.class);
- private static Session sessionObj;
- private static Map<String, Session> connections = new
- ConcurrentHashMap<String, Session>();
- public CmisClient() { }
- public Session getSession(String connectionName, String username, String pwd) {
- Session session = connections.get(connectionName);
- if (session == null) {
- logger.info("Not connected, creating new connection to" + " Alfresco with the connection id (" + connectionName + ")");
- // No connection to Alfresco available, create a new one
- SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
- Map<String, String> parameters = new HashMap<String, String>();
- parameters.put(SessionParameter.USER, username);
- parameters.put(SessionParameter.PASSWORD, pwd);
- parameters.put(SessionParameter.ATOMPUB_URL, "http://127.0.0.1:8080/alfresco/cmisatom");
- parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
- parameters.put(SessionParameter.COMPRESSION, "true");
- parameters.put(SessionParameter.CACHE_TTL_OBJECTS, "0");
- // If there is only one repository exposed (e.g. Alfresco),
- // these lines will help detect it and its ID
- List<Repository> repositories = sessionFactory.getRepositories(parameters);
- Repository alfrescoRepository = null;
- if (repositories != null && repositories.size() > 0) {
- logger.info("Found (" + repositories.size() + ") Alfresco repositories");
- alfrescoRepository = repositories.get(0);
- logger.info("Info about the first Alfresco repo [ID=" + alfrescoRepository.getId() + "][name=" + alfrescoRepository.getName() + "][CMIS ver supported=" + alfrescoRepository.getCmisVersionSupported() + "]");
- } else {
- throw new CmisConnectionException("Could not connect to the Alfresco Server, " + "no repository found!");
- }
- // Create a new session with the Alfresco repository
- session = alfrescoRepository.createSession();
- // Save connection for reuse
- connections.put(connectionName, session);
- } else {
- logger.info("Already connected to Alfresco with the " + "connection id (" + connectionName + ")");
- }
- sessionObj = session;
- return session;
- }
- public Folder getParentFolder(){
- if(sessionObj!=null) {
- return sessionObj.getRootFolder();
- }else {
- System.out.println("Session Object Unavailable");
- }
- return null;
- }
- protected CmisObject getObject( Session session, Folder parentFolder, String objectName) {
- CmisObject object = null;
- if(session==null && sessionObj!=null){
- session = sessionObj;
- }
- if (parentFolder==null){
- parentFolder = getParentFolder();
- }
- try {
- String path2Object = parentFolder.getPath();
- if (!path2Object.endsWith("/")) {
- path2Object += "/";
- }
- path2Object += objectName;
- object = session.getObjectByPath(path2Object);
- } catch (CmisObjectNotFoundException nfe0) {
- // Nothing to do, object does not exist
- }
- return object;
- }
- // public Folder createFolder(Session session, Folder parentFolder, String folderName){
- //
- // }
- public Folder createFolder(Session session, String folderName) {
- // String folderName = "Computer Science";
- Folder parentFolder = session.getRootFolder();
- // Make sure the user is allowed to create a folder
- // under the root folder
- return createFolderWithParentFolder(session, folderName, parentFolder);
- }
- public Folder createFolderWithParentFolder(Session session, String folderName, Folder parentFolder) {
- if (parentFolder.getAllowableActions().getAllowableActions().
- contains(Action.CAN_CREATE_FOLDER) == false) {
- throw new CmisUnauthorizedException(
- "Current user does not have permission to create a " +
- "sub-folder in " + parentFolder.getPath());
- }
- Folder newFolder = (Folder) getObject(
- session, parentFolder, folderName);
- if(newFolder==null){
- Map<String, Object> newFolderProps =
- new HashMap<String, Object>();
- newFolderProps.put(
- PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
- newFolderProps.put(PropertyIds.NAME, folderName);
- newFolder = parentFolder.createFolder(newFolderProps);
- logger.info("Created new folder: " + newFolder.getPath() +
- " [creator=" + newFolder.getCreatedBy() + "][created=" +
- date2String(newFolder.getCreationDate().getTime()) + "]");
- } else {
- logger.info("Folder already exist: " + newFolder.getPath());
- }
- return newFolder;
- }
- private String date2String(Date date) {
- return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z")
- .format(date);
- }
- public static void main(String[] args) {
- String connectionName = "http://192.168.1.104:8080/alfresco/cmisatom";
- String userName = "admin";
- String passwd = "rockstar";
- CmisClient cmisClient = new CmisClient();
- Session session = cmisClient.getSession(connectionName,
- userName, passwd);
- if (null != session) {
- System.out.println("hurray");
- Folder folder = cmisClient.createFolder(session);
- if (folder != null) {
- System.out.println("Folder Created with Name: \t" + folder.getName());
- } else {
- System.out.println("Awwwww");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement