Advertisement
Gigi95

Cmis class

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