Advertisement
Gigi95

Cmis Client

Apr 21st, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.96 KB | None | 0 0
  1. import org.apache.chemistry.opencmis.client.api.*;
  2. import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;
  3. import org.apache.chemistry.opencmis.commons.PropertyIds;
  4. import org.apache.chemistry.opencmis.commons.SessionParameter;
  5. import org.apache.chemistry.opencmis.commons.enums.Action;
  6. import org.apache.chemistry.opencmis.commons.enums.BindingType;
  7. import org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException;
  8. import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
  9. import org.apache.chemistry.opencmis.commons.exceptions.CmisUnauthorizedException;
  10. import org.apache.commons.logging.Log;
  11. import org.apache.commons.logging.LogFactory;
  12. import org.joda.time.DateTimeUtils;
  13. import org.apache.chemistry.opencmis.client.api.Session;
  14.  
  15. import java.text.SimpleDateFormat;
  16. import java.util.Date;
  17. import java.util.HashMap;
  18. import java.util.List;
  19. import java.util.Map;
  20. import java.util.concurrent.ConcurrentHashMap;
  21.  
  22. public class CmisClient {
  23.     private static Log logger = LogFactory.getLog(CmisClient.class);
  24.  
  25.     private static Session sessionObj;
  26.     private static Map<String, Session> connections = new
  27.             ConcurrentHashMap<String, Session>();
  28.     public CmisClient() { }
  29.  
  30.  
  31.     public Session getSession(String connectionName, String username, String pwd) {
  32.         Session session = connections.get(connectionName);
  33.         if (session == null) {
  34.             logger.info("Not connected, creating new connection to" + " Alfresco with the connection id (" + connectionName + ")");
  35.             // No connection to Alfresco available, create a new one
  36.             SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
  37.             Map<String, String> parameters = new HashMap<String, String>();
  38.             parameters.put(SessionParameter.USER, username);
  39.             parameters.put(SessionParameter.PASSWORD, pwd);
  40.             parameters.put(SessionParameter.ATOMPUB_URL, "http://127.0.0.1:8080/alfresco/cmisatom");
  41.             parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
  42.             parameters.put(SessionParameter.COMPRESSION, "true");
  43.             parameters.put(SessionParameter.CACHE_TTL_OBJECTS, "0");
  44.             // If there is only one repository exposed (e.g. Alfresco),
  45. // these lines will help detect it and its ID
  46.             List<Repository> repositories = sessionFactory.getRepositories(parameters);
  47.             Repository alfrescoRepository = null;
  48.             if (repositories != null && repositories.size() > 0) {
  49.                 logger.info("Found (" + repositories.size() + ") Alfresco repositories");
  50.                 alfrescoRepository = repositories.get(0);
  51.                 logger.info("Info about the first Alfresco repo [ID=" + alfrescoRepository.getId() + "][name=" + alfrescoRepository.getName() + "][CMIS ver supported=" + alfrescoRepository.getCmisVersionSupported() + "]");
  52.             } else {
  53.                 throw new CmisConnectionException("Could not connect to the Alfresco Server, " + "no repository found!");
  54.             }
  55.             // Create a new session with the Alfresco repository
  56.             session = alfrescoRepository.createSession();
  57. // Save connection for reuse
  58.             connections.put(connectionName, session);
  59.         } else {
  60.             logger.info("Already connected to Alfresco with the " + "connection id (" + connectionName + ")");
  61.         }
  62.         sessionObj = session;
  63.         return session;
  64.     }
  65.  
  66.     public Folder getParentFolder(){
  67.         if(sessionObj!=null) {
  68.             return sessionObj.getRootFolder();
  69.         }else {
  70.             System.out.println("Session Object Unavailable");
  71.         }
  72.         return null;
  73.     }
  74.  
  75.  
  76.     protected CmisObject getObject( Session session, Folder parentFolder, String objectName) {
  77.         CmisObject object = null;
  78.         if(session==null && sessionObj!=null){
  79.             session = sessionObj;
  80.         }
  81.         if (parentFolder==null){
  82.             parentFolder = getParentFolder();
  83.         }
  84.         try {
  85.             String path2Object = parentFolder.getPath();
  86.             if (!path2Object.endsWith("/")) {
  87.                 path2Object += "/";
  88.             }
  89.             path2Object += objectName;
  90.             object = session.getObjectByPath(path2Object);
  91.         } catch (CmisObjectNotFoundException nfe0) {
  92. // Nothing to do, object does not exist
  93.         }
  94.         return object;
  95.     }
  96.  
  97. //    public Folder createFolder(Session session, Folder parentFolder, String folderName){
  98. //
  99. //    }
  100.  
  101.     public Folder createFolder(Session session, String folderName) {
  102. //        String folderName = "Computer Science";
  103.         Folder parentFolder = session.getRootFolder();
  104. // Make sure the user is allowed to create a folder
  105. // under the root folder
  106.         return createFolderWithParentFolder(session, folderName, parentFolder);
  107.  
  108.     }
  109.  
  110.     public Folder createFolderWithParentFolder(Session session, String folderName, Folder parentFolder) {
  111.         if (parentFolder.getAllowableActions().getAllowableActions().
  112.                 contains(Action.CAN_CREATE_FOLDER) == false) {
  113.             throw new CmisUnauthorizedException(
  114.                     "Current user does not have permission to create a " +
  115.                             "sub-folder in " + parentFolder.getPath());
  116.         }
  117.  
  118.         Folder newFolder = (Folder) getObject(
  119.                 session, parentFolder, folderName);
  120.         if(newFolder==null){
  121.  
  122.             Map<String, Object> newFolderProps =
  123.                     new HashMap<String, Object>();
  124.             newFolderProps.put(
  125.                     PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
  126.             newFolderProps.put(PropertyIds.NAME, folderName);
  127.             newFolder = parentFolder.createFolder(newFolderProps);
  128.             logger.info("Created new folder: " + newFolder.getPath() +
  129.                     " [creator=" + newFolder.getCreatedBy() + "][created=" +
  130.                     date2String(newFolder.getCreationDate().getTime()) + "]");
  131.  
  132.         } else {
  133.             logger.info("Folder already exist: " + newFolder.getPath());
  134.         }
  135.         return newFolder;
  136.     }
  137.  
  138.     private String date2String(Date date) {
  139.         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z")
  140.                 .format(date);
  141.     }
  142.  
  143.     public static void main(String[] args) {
  144.         String connectionName = "http://192.168.1.104:8080/alfresco/cmisatom";
  145.         String userName = "admin";
  146.         String passwd = "rockstar";
  147.  
  148.         CmisClient cmisClient = new CmisClient();
  149.         Session session = cmisClient.getSession(connectionName,
  150.                 userName, passwd);
  151.  
  152.         if (null != session) {
  153.             System.out.println("hurray");
  154.             Folder folder = cmisClient.createFolder(session);
  155.             if (folder != null) {
  156.                 System.out.println("Folder Created with Name: \t" + folder.getName());
  157.             } else {
  158.                 System.out.println("Awwwww");
  159.             }
  160.  
  161.         }
  162.     }
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement