package com.constellio.app.api.cmis.rm; import static org.apache.chemistry.opencmis.commons.enums.VersioningState.MAJOR; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; import java.util.HashMap; import java.util.Map; import org.apache.chemistry.opencmis.client.api.ObjectId; import org.apache.chemistry.opencmis.client.api.Session; import org.apache.chemistry.opencmis.client.api.SessionFactory; import org.apache.chemistry.opencmis.client.runtime.ObjectIdImpl; 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.data.ContentStream; import org.apache.chemistry.opencmis.commons.enums.BindingType; import org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamImpl; import org.apache.commons.io.IOUtils; public class RMCmisExemplesMain { static String url = "http://167.114.79.166:9080/constellio"; static String user = "admin"; static String password = "password"; static String collectionName = "collection"; static Session session; public static void main(String argv[]) throws IOException { createSession(); String savedInFolder = "00000000057"; String title = "A tiff file"; String mimeType = "image/tiff"; File documentFile = new File("/Users/francisbaril/Downloads/tiffimage-5600x2100.tiff"); addDocumentToFolder(documentFile, title, mimeType, savedInFolder); } private static void addDocumentToFolder(File documentFile, String title, String mimeType, String savedInFolder) throws IOException { ObjectId savedInFolderObjectId = new ObjectIdImpl(savedInFolder); // //-- Create a document (considered as a Folder by CMIS) Map<String, Object> documentProperties = new HashMap<>(); documentProperties.put(PropertyIds.OBJECT_TYPE_ID, "document_default"); documentProperties.put("title", title); documentProperties.put("folder", savedInFolder); ObjectId newDocumentId = session.createFolder(documentProperties, savedInFolderObjectId); // //-- Add a content to the new document (considered as a Document by CMIS) Map<String, Object> contentProperties = new HashMap<>(); contentProperties.put("metadata", "content"); contentProperties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document"); InputStream inputstream = new BufferedInputStream(new FileInputStream(documentFile)); try { ContentStream contentStream = new ContentStreamImpl( documentFile.getName(), BigInteger.valueOf(documentFile.length()), mimeType, inputstream); //Major create the document in version 1.0, Minor create it in 0.1 ObjectId documentContentId = session.createDocument(contentProperties, newDocumentId, contentStream, MAJOR); } finally { IOUtils.closeQuietly(inputstream); } } private static void createSession() { SessionFactory factory = SessionFactoryImpl.newInstance(); Map<String, String> parameter = new HashMap<String, String>(); // user credentials parameter.put(SessionParameter.USER, user); parameter.put(SessionParameter.PASSWORD, password); // connection settings parameter.put(SessionParameter.ATOMPUB_URL, url + "/atom"); parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value()); parameter.put(SessionParameter.REPOSITORY_ID, collectionName); session = factory.createSession(parameter); session.getDefaultContext().setMaxItemsPerPage(100000); session.getDefaultContext().setFilterString("*"); session.getDefaultContext().setCacheEnabled(true); // Include every properties session.getDefaultContext().setRenditionFilterString("*"); } }