chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreu Serra" <andr...@limit.es>
Subject Set CmisExtensionElement value with Apache Chemistry libs
Date Wed, 20 May 2015 15:10:52 GMT
Hi, it´s the first time I use Alfresco. I have to save a custom object with
extended properties defined. Im able to upload a document to the repository,
and then, see the list of Aspects and properties, but i´m not capable to set
the values before saving the document. (setting them in the ContentStream as
a list of CmisExtensionElement), maybe this is not thw way to do this, i´m a
little lost.

 

Maybe with the code it becomes clearer:

 

How I save the document:

 

public static void createDocument(AnnexCustody document, String fileName,
String fileType, String es, String numReg) throws FileNotFoundException {

 

Session cmisSession = getCmisSession();

Folder parentFolder = null;

String carpetaParePath =
getPathCarpetaDocs()+"/"+FileUtils.getActualYear()+"/"+es+"/"+numReg;

 

try {

parentFolder = (Folder) cmisSession.getObjectByPath(carpetaParePath);

}catch (CmisObjectNotFoundException onfEx) {

parentFolder =
createFoldersPath("/"+FileUtils.getActualYear()+"/"+es+"/"+numReg);

}

 

// properties (minim: name i object type id) 

Map properties = new HashMap();

properties.put(PropertyIds.OBJECT_TYPE_ID, "D:APBRegistro:anexo");

properties.put(PropertyIds.NAME, fileName);

 

byte[] content = document.getData();

InputStream stream = new ByteArrayInputStream(content);

ContentStream contentStream = new ContentStreamImpl(fileName,
BigInteger.valueOf(content.length), fileType, stream);

 

parentFolder.createDocument(properties, contentStream,
VersioningState.MAJOR);

}

 

This code, uploads a custom object into the repository, and then i can list
the extensions, with this other code:

 

public static void printMetadataCMISobject(Document docmnt, ExtensionLevel
eLvl) {

 

if (eLvl!=null) {

 

List extensions = docmnt.getExtensions(eLvl);

 

System.out.println("#### IMPRIMIENDO EXTENSIONES DEL NIVEL "+eLvl.value() +
" ####");

 

if (extensions!=null) {

 

for(CmisExtensionElement ext: extensions) {

 

System.out.println("Extension --> Name: " + ext.getName());

System.out.println("Extension --> NameSpace: " + ext.getNamespace());

System.out.println("Extension --> Value: " + ext.getValue());

 

for(CmisExtensionElement child: ext.getChildren()) {

 

System.out.println(" - Extension Nvl2 --> Clild Name: " + child.getName());

System.out.println(" - Extension Nvl2 --> Clild NS: " +
child.getNamespace());

System.out.println(" - Extension Nvl2 --> Clild Value: " +
child.getValue());

 

for(CmisExtensionElement p_child: child.getChildren()) {

 

System.out.println(" - Property --> Clild Name: " + p_child.getName());

System.out.println(" - Property --> Clild NS: " + p_child.getNamespace());

System.out.println(" - Property --> Clild Value: " + p_child.getValue());

 

Iterator attribs = p_child.getAttributes().keySet().iterator();

while(attribs.hasNext()) {

String att_key = attribs.next();

System.out.println(" - Attribute --> "+att_key+"=" +
p_child.getAttributes().get(att_key));

}

}

}

}

}

 

System.out.println("#### FIN EXTENSIONES DEL NIVEL "+eLvl.value() + "
####");

}

}

 

Wich generates the following output:

 

16:21:10,491 INFO [STDOUT] #### IMPRIMIENDO EXTENSIONES DEL NIVEL properties
####

16:21:10,491 INFO [STDOUT] Extension --> Name: aspects

16:21:10,491 INFO [STDOUT] Extension --> NameSpace: http://www.alfresco.org

16:21:10,491 INFO [STDOUT] Extension --> Value: null

16:21:10,491 INFO [STDOUT] - Extension Nvl2 --> Clild Name: appliedAspects

16:21:10,491 INFO [STDOUT] - Extension Nvl2 --> Clild NS:
http://www.alfresco.org

16:21:10,491 INFO [STDOUT] - Extension Nvl2 --> Clild Value:
P:cm:thumbnailModification

16:21:10,491 INFO [STDOUT] - Extension Nvl2 --> Clild Name: appliedAspects

16:21:10,491 INFO [STDOUT] - Extension Nvl2 --> Clild NS:
http://www.alfresco.org

16:21:10,492 INFO [STDOUT] - Extension Nvl2 --> Clild Value: P:cm:titled

16:21:10,492 INFO [STDOUT] - Extension Nvl2 --> Clild Name: appliedAspects

16:21:10,492 INFO [STDOUT] - Extension Nvl2 --> Clild NS:
http://www.alfresco.org

16:21:10,492 INFO [STDOUT] - Extension Nvl2 --> Clild Value: P:cm:author

16:21:10,492 INFO [STDOUT] - Extension Nvl2 --> Clild Name: appliedAspects

16:21:10,492 INFO [STDOUT] - Extension Nvl2 --> Clild NS:
http://www.alfresco.org

16:21:10,492 INFO [STDOUT] - Extension Nvl2 --> Clild Value:
P:rn:renditioned

16:21:10,492 INFO [STDOUT] - Extension Nvl2 --> Clild Name: appliedAspects

16:21:10,492 INFO [STDOUT] - Extension Nvl2 --> Clild NS:
http://www.alfresco.org

16:21:10,492 INFO [STDOUT] - Extension Nvl2 --> Clild Value: P:sys:localized

16:21:10,492 INFO [STDOUT] - Extension Nvl2 --> Clild Name: appliedAspects

16:21:10,492 INFO [STDOUT] - Extension Nvl2 --> Clild NS:
http://www.alfresco.org

16:21:10,502 INFO [STDOUT] - Extension Nvl2 --> Clild Value:
P:APBRegistro:d_anexo

16:21:10,502 INFO [STDOUT] - Extension Nvl2 --> Clild Name: properties

16:21:10,512 INFO [STDOUT] - Extension Nvl2 --> Clild NS:
http://www.alfresco.org

16:21:10,512 INFO [STDOUT] - Extension Nvl2 --> Clild Value: null

16:21:10,512 INFO [STDOUT] -     Property --> Clild Name: propertyString

16:21:10,512 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,512 INFO [STDOUT] -     Property --> Clild Value: 

16:21:10,512 INFO [STDOUT] - Attribute --> localName=policyText

16:21:10,512 INFO [STDOUT] - Attribute --> queryName=cmis:policyText

16:21:10,512 INFO [STDOUT] - Attribute -->
propertyDefinitionId=cmis:policyText

16:21:10,512 INFO [STDOUT] - Attribute --> displayName=Policy Text

16:21:10,512 INFO [STDOUT] -     Property --> Clild Name: propertyString

16:21:10,512 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,512 INFO [STDOUT] -     Property --> Clild Value: null

16:21:10,512 INFO [STDOUT] - Attribute -->
localName=lastThumbnailModification

16:21:10,522 INFO [STDOUT] - Attribute -->
queryName=cm:lastThumbnailModification

16:21:10,522 INFO [STDOUT] - Attribute -->
propertyDefinitionId=cm:lastThumbnailModification

16:21:10,522 INFO [STDOUT] - Attribute --> displayName=Last thumbnail
modifcation data

16:21:10,522 INFO [STDOUT] -     Property --> Clild Name: propertyString

16:21:10,522 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,522 INFO [STDOUT] -     Property --> Clild Value: 

16:21:10,522 INFO [STDOUT] - Attribute --> localName=description

16:21:10,522 INFO [STDOUT] - Attribute --> queryName=cm:description

16:21:10,522 INFO [STDOUT] - Attribute -->
propertyDefinitionId=cm:description

16:21:10,522 INFO [STDOUT] - Attribute --> displayName=Description

16:21:10,522 INFO [STDOUT] -     Property --> Clild Name: propertyString

16:21:10,522 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,522 INFO [STDOUT] -     Property --> Clild Value: 

16:21:10,522 INFO [STDOUT] - Attribute --> localName=title

16:21:10,522 INFO [STDOUT] - Attribute --> queryName=cm:title

16:21:10,522 INFO [STDOUT] - Attribute --> propertyDefinitionId=cm:title

16:21:10,522 INFO [STDOUT] - Attribute --> displayName=Title

16:21:10,522 INFO [STDOUT] -     Property --> Clild Name: propertyString

16:21:10,522 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,522 INFO [STDOUT] -     Property --> Clild Value: null

16:21:10,522 INFO [STDOUT] - Attribute --> localName=author

16:21:10,522 INFO [STDOUT] - Attribute --> queryName=cm:author

16:21:10,522 INFO [STDOUT] - Attribute --> propertyDefinitionId=cm:author

16:21:10,522 INFO [STDOUT] - Attribute --> displayName=Author

16:21:10,522 INFO [STDOUT] -     Property --> Clild Name: propertyString

16:21:10,522 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,522 INFO [STDOUT] -     Property --> Clild Value: 

16:21:10,522 INFO [STDOUT] - Attribute --> localName=dr_validez

16:21:10,532 INFO [STDOUT] - Attribute --> queryName=APBRegistro:dr_validez

16:21:10,532 INFO [STDOUT] - Attribute -->
propertyDefinitionId=APBRegistro:dr_validez

16:21:10,532 INFO [STDOUT] - Attribute --> displayName=Validez

16:21:10,532 INFO [STDOUT] -     Property --> Clild Name: propertyString

16:21:10,532 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,532 INFO [STDOUT] -     Property --> Clild Value: 

16:21:10,532 INFO [STDOUT] - Attribute --> localName=dr_obsAlfresco

16:21:10,532 INFO [STDOUT] - Attribute -->
queryName=APBRegistro:dr_obsAlfresco

16:21:10,532 INFO [STDOUT] - Attribute -->
propertyDefinitionId=APBRegistro:dr_obsAlfresco

16:21:10,532 INFO [STDOUT] - Attribute --> displayName=Observaciones
Alfresco

16:21:10,532 INFO [STDOUT] -     Property --> Clild Name: propertyString

16:21:10,532 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,532 INFO [STDOUT] -     Property --> Clild Value: 

16:21:10,532 INFO [STDOUT] - Attribute --> localName=dr_tipDocumento

16:21:10,532 INFO [STDOUT] - Attribute -->
queryName=APBRegistro:dr_tipDocumento

16:21:10,532 INFO [STDOUT] - Attribute -->
propertyDefinitionId=APBRegistro:dr_tipDocumento

16:21:10,532 INFO [STDOUT] - Attribute --> displayName=Tipo de documento

16:21:10,532 INFO [STDOUT] -     Property --> Clild Name: propertyString

16:21:10,532 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,532 INFO [STDOUT] -     Property --> Clild Value: 

16:21:10,532 INFO [STDOUT] - Attribute --> localName=dr_tipDocumental

16:21:10,532 INFO [STDOUT] - Attribute -->
queryName=APBRegistro:dr_tipDocumental

16:21:10,532 INFO [STDOUT] - Attribute -->
propertyDefinitionId=APBRegistro:dr_tipDocumental

16:21:10,532 INFO [STDOUT] - Attribute --> displayName=Tipo documental

16:21:10,532 INFO [STDOUT] -     Property --> Clild Name: propertyString

16:21:10,532 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,532 INFO [STDOUT] -     Property --> Clild Value: 

16:21:10,542 INFO [STDOUT] - Attribute --> localName=dr_formato

16:21:10,542 INFO [STDOUT] - Attribute --> queryName=APBRegistro:dr_formato

16:21:10,542 INFO [STDOUT] - Attribute -->
propertyDefinitionId=APBRegistro:dr_formato

16:21:10,542 INFO [STDOUT] - Attribute --> displayName=Formato

16:21:10,542 INFO [STDOUT] -     Property --> Clild Name: propertyString

16:21:10,542 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,542 INFO [STDOUT] -     Property --> Clild Value: 

16:21:10,542 INFO [STDOUT] - Attribute --> localName=dr_origen

16:21:10,542 INFO [STDOUT] - Attribute --> queryName=APBRegistro:dr_origen

16:21:10,542 INFO [STDOUT] - Attribute -->
propertyDefinitionId=APBRegistro:dr_origen

16:21:10,542 INFO [STDOUT] - Attribute --> displayName=Origen

16:21:10,542 INFO [STDOUT] -     Property --> Clild Name: propertyString

16:21:10,542 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,542 INFO [STDOUT] -     Property --> Clild Value: 

16:21:10,542 INFO [STDOUT] - Attribute --> localName=dr_ofiAnexa

16:21:10,542 INFO [STDOUT] - Attribute --> queryName=APBRegistro:dr_ofiAnexa

16:21:10,542 INFO [STDOUT] - Attribute -->
propertyDefinitionId=APBRegistro:dr_ofiAnexa

16:21:10,542 INFO [STDOUT] - Attribute --> displayName=Oficina que lo anexa

16:21:10,542 INFO [STDOUT] -     Property --> Clild Name: propertyString

16:21:10,542 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,542 INFO [STDOUT] -     Property --> Clild Value: 

16:21:10,542 INFO [STDOUT] - Attribute --> localName=dr_obsRegistro

16:21:10,542 INFO [STDOUT] - Attribute -->
queryName=APBRegistro:dr_obsRegistro

16:21:10,542 INFO [STDOUT] - Attribute -->
propertyDefinitionId=APBRegistro:dr_obsRegistro

16:21:10,542 INFO [STDOUT] - Attribute --> displayName=Observaciones
Registro

16:21:10,542 INFO [STDOUT] -     Property --> Clild Name: propertyDateTime

16:21:10,542 INFO [STDOUT] -     Property --> Clild NS:
http://docs.oasis-open.org/ns/cmis/core/200908/

16:21:10,542 INFO [STDOUT] -     Property --> Clild Value: 

16:21:10,552 INFO [STDOUT] - Attribute --> localName=dr_fecEntrada

16:21:10,552 INFO [STDOUT] - Attribute -->
queryName=APBRegistro:dr_fecEntrada

16:21:10,552 INFO [STDOUT] - Attribute -->
propertyDefinitionId=APBRegistro:dr_fecEntrada

16:21:10,552 INFO [STDOUT] - Attribute --> displayName=Fecha de entrada en
el sistema

16:21:10,552 INFO [STDOUT] #### FIN EXTENSIONES DEL NIVEL properties ####

 

How can I set the properties like APBRegistro:dr_fecEntrada or
APBRegistro:dr_obsRegistro, before (or after) upload the document?

 

I, ve tried bi setting as a property in the properties Map but alwais gave
me the error: Property XXX is not valid for this type or one of the
secondary types!

Also i have tried this code for setting an aspect in the ContentStream
before saving the document:

 

             List<CmisExtensionElement> extensions = new
ArrayList<CmisExtensionElement>();

             String ns =
System.getProperty("es.caib.regweb.annex.plugins.documentcustody.alfresco.ex
tensions.ns");

              

 

               CmisExtensionElement valueElem = new
CmisExtensionElementImpl(ns, "value", null, "Accounting");

 

               List<CmisExtensionElement> valueElems = new
ArrayList<CmisExtensionElement>();

 

               valueElems.add(valueElem);

 

        

 

               List<CmisExtensionElement> children = new
ArrayList<CmisExtensionElement>();

 

               Map<String, String> attributes = new HashMap<String,
String>();

 

               attributes.put("propertyDefinitionId",
"APBRegistro:dr_obsAlfresco");

               attributes.put("displayName", "Observaciones Alfresco");

               attributes.put("queryName", "APBRegistro:dr_obsAlfresco");

               attributes.put("localName", "dr_obsAlfresco");

 

               children.add(new CmisExtensionElementImpl(ns,
"propertyString", attributes, valueElems));

 

        

 

               List<CmisExtensionElement> propertyValuesExtension = new
ArrayList<CmisExtensionElement>();

 

               propertyValuesExtension.add(new CmisExtensionElementImpl(ns,
"properties", null, children));

 

        

 

               CmisExtensionElement setAspectsExtension = new
CmisExtensionElementImpl(ns, "aspects", null, propertyValuesExtension);

 

               extensions.add(setAspectsExtension);          

             

               contentStream.setExtensions(extensions);

 

 

Thank you in advance.

 

Pd.: I´n using chemistry-opencmis-client-impl v0.13.0 with an Alfresco
Enterprise 4.2.3.3

 

       <dependency>

           <groupId>org.apache.chemistry.opencmis</groupId>

           <artifactId>chemistry-opencmis-client-impl</artifactId>

           <version>0.13.0</version>

        </dependency>

        

       <dependency>

             <groupId>org.apache.chemistry.opencmis</groupId>

             <artifactId>chemistry-opencmis-client-bindings</artifactId>

             <version>0.13.0</version>

       </dependency>

 




Andreu Serra

Dept. Programació.

 

  
 

 

 


logo degradat fons blanc petit.PNG
Límit Tecnologies S.L.

EmpresaExcellent
C/ Bas 3 - 07500 Manacor

                                                             Tel 971 84 45
53 - Fax 971 84 57 73

              www.limit.es         

  _____  

Aquest missatge es dirigeix exclusivament al seu destinatari i pot incloure
dades confidencials i/o de caràcter personal, la difusió de les quals es
regula mitjançant la Llei orgànica de protecció de dades. Si no sou la
persona destinatària (o la responsable de lliurar-l’hi), en cap cas heu de
copiar aquest missatge ni lliurar-lo a terceres persones. Si heu rebut
aquest missatge per error, us preguem que ens ho comuniqueu immediatament
per aquesta mateixa via i que l’elimineu de manera permanent.

P Abans d’imprimir aquest missatge, pensi en el medi ambient i asseguri’s
que és necessari.

Este mensaje se dirige exclusivamente a su destinatario y puede incluir
datos confidenciales y/o de carácter personal, la difusión de los cuales se
regula mediante la Ley orgánica de protección de datos. Si no es la persona
destinataria (o la responsable de entregárselo), en ningún caso debe copiar
este mensaje ni entregarlo a terceras personas. Si ha recibido este mensaje
por error, le rogamos que nos lo comunique inmediatamente por esta misma vía
y que lo elimine de manera permanente.

P Antes de imprimir este mensaje, piense en el medio ambiente y asegúrese
que es necesario.


Mime
  • Unnamed multipart/related (inline, None, 0 bytes)
View raw message