Open IT Experts for Enterprise

Uploaders simples en alfresco II: openCMIS

Cesar Capillas
Cesar Capillas

Siguiendo con el articulo del otro día de uploaders simples, vamos a
picar esta vez algo de código java con la ayuda de mi compañero Daniel
Sanchez. En el ejemplo de uploader de a continuación utilizamos
Alfresco 3.4 Community con las librerías openCMIS (y de manera similar
a como hicimos con python y php en el artículo anterior). Ahí va el código:

package cmis;
import java.io.*;
import java.math.BigInteger;
import java.net.*;
import java.util.*;
import org.apache.chemistry.opencmis.*;

public class OpenCMISUploader {

    public static void main (String[] args) throws FileNotFoundException {
       
        Map<String, String> parameters = new HashMap<String, String>();
        parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
       
        parameters.put(SessionParameter.ATOMPUB_URL, " http://alfie.zylk.net:8080/alfresco/service/cmis");
        parameters.put(SessionParameter.REPOSITORY_ID, "cbcce6d5-2d9d-4878-93ae-de75b96ad14d");
        parameters.put(SessionParameter.USER, "admin");
        parameters.put(SessionParameter.PASSWORD, "secret");

        // create the session
        Session session = SessionFactoryImpl.newInstance().createSession(parameters);

        File file = new File(args[0]);
        String space = args[1];
       
        FileNameMap fileNameMap = URLConnection.getFileNameMap();
        String mimetype = fileNameMap.getContentTypeFor(file.getName());
       
        FileInputStream fis = new FileInputStream(file);
        BigInteger bi = new BigInteger(file.length() + "");
        ContentStream contentStream = new ContentStreamImpl(file.getName(), bi, mimetype, fis);
       
        Map<String,String> newDocProps = new HashMap<String, String>();
        newDocProps.put(PropertyIds.OBJECT_TYPE_ID, BaseTypeId.CMIS_DOCUMENT.value());
        newDocProps.put(PropertyIds.NAME, file.getName());
       
        ((Folder)session.getObjectByPath(session.getRootFolder().getPath() + space))
                        .createDocument(newDocProps, contentStream, VersioningState.NONE);

        System.out.println("Hecho!");
    }   
}


De esta manera ejecutamos el comando en la terminal:

java -jar CMISUploaderAlfresco.jar /home/cesar/sinadura.pdf test

y esto subirá el fichero sinadura.pdf a /Espacio Raiz/test

Hay que tener en cuenta que en alfresco debemos exponer el
repositorio en alfresco-global.properties

#
# CMIS Repo
#
repo.remote.endpoint.url=http://alfie.zylk.net:8080/alfresco/service/cmis


Y es necesario obtener el uid del repositorio, ya sea a través de:

http://alfie.zylk.net:8080/alfresco/service/cmis/index.html


o bien via curl:

curl -u admin:secret
"http://alfie.zylk.net:8080/alfresco/s/cmis" | grep repositoryId

Más entradas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *