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






