Problemas recuperar metadatos después de CMLCopy

cancel
Showing results for 
Search instead for 
Did you mean: 
bolaverde
Member II

Problemas recuperar metadatos después de CMLCopy

Buenos días,

Si realizamos un copy a través del api con CMLCopy y posteriormente intentamos acceder a los metadatos del objeto copiado, no obtenemos dichos metadatos. Si accedemos a Alfresco directamente, editamos metadatos del objeto copiado (Solo pulsamos sobre Editar y OK, no modificamos ningún metadato) e intentamos de nuevo obtener los metadatos, si los obtenemos correctamente.

Los pasos que seguimos:

1- Start session.
2- Copy con CMLCopy.
3- End Session
4-Start session
5-          Reference reference = new Reference(STORE, nodeRef, null);
           
           Predicate predicate = new Predicate();
           predicate.setNodes(new Reference[] { reference });
           Node[] nodes = repositoryService.get(predicate);
           NamedValue[] namedValue = nodes[0].getProperties();
6- End Sesion

7- No obtenemos metadatos
8- Entramos en Alfresco y editamos los metadatos del objeto copiado (Solo pulsamos sobre Editar y OK, no modificamos ningún metadato). Todos los metadatos están informados correctamente.
9-Start session
10-          Reference reference = new Reference(STORE, nodeRef, null);
           
           Predicate predicate = new Predicate();
           predicate.setNodes(new Reference[] { reference });
           Node[] nodes = repositoryService.get(predicate);
           NamedValue[] namedValue = nodes[0].getProperties();
11- End Sesion
12- obtenemos metadatos correctamente

¿Sabeis porque puede ocurrir esto?
6 Replies
pjcaracuel_2349
Active Member II

Re: Problemas recuperar metadatos después de CMLCopy

Buenas,

la unica cosa que se me ocurre (porque lo he visto alguna vez) es que no esteis ejecutando el metodo save al copiar el documento. Trazalo y mira si una vez cumplimenta los metadatos, hace un save de los mismos.

Saludos
bolaverde
Member II

Re: Problemas recuperar metadatos después de CMLCopy

El documento lo copio utilizando:

CMLCopy copy = new CMLCopy();
copy.setTo(parentReference);
copy.setWhere(predicate);
copy.setChildren(true);
cml.setCopy(new CMLCopy[]{copy});

UpdateResult[] results = WebServiceFactory.getRepositoryService().update(cml);

Despues de realizar el copy desde la aplicación veo todo correctamente, pero al consultar los metadatos desde mi aplicacion no me los devuelve. Para los no copiados si funciona la consulta de metadatos.
uridium
Member II

Re: Problemas recuperar metadatos después de CMLCopy

Hola bolaverde,

En este caso no puedo ayudarte, pero quizas tu a mi si, estoy tratando de leer los metadatos de un contenido y me estoy volviendo un poco loco.

Te agradeceria si me puedes indicar como puedo leerlos a traves de la API de Java.

Muchas gracias.
pablo_zapico
Member II

Re: Problemas recuperar metadatos después de CMLCopy

Metodo para recuperar metadatos y content en bytes[]

      
Reference reference = new Reference(STORE, document.getId(), path);   
            
Content[] readResult = contentRepository.read(new Predicate(new Reference[]{reference}, STORE, null), Constants.PROP_CONTENT);
byte[] contentBytes = null;
if(readResult!=null){
    Content content = (Content) readResult[0];         
    contentBytes = UtilsFile.getByteContent(content);
    document.setContent(contentBytes);         
}
Predicate predicate = new Predicate(new Reference[]{reference}, null, null);   
    Node[] nodes = repository.get(predicate);
      
    // Se recupera la propiedad FileName
    AlfrescoDatosEspecificosVO datosEspecificosVO = (AlfrescoDatosEspecificosVO) document.getDatosEspecificos();
      
    Map metadata = new HashMap();
    if (nodes != null){
       for(int i=0;i<nodes.length;i++){
          Node node = nodes[i];
          NamedValue[] prop = node.getProperties();    
          for(int f=0;f<prop.length;f++){
             NamedValue namedValue = (NamedValue)prop[f];
             String name = namedValue.getName().split("}")[1];
             AlfrescoDatosEspecificosValueVO alfrescoDatosEspecificosValueVO = null;         
             alfrescoDatosEspecificosValueVO = (AlfrescoDatosEspecificosValueVO) datosEspecificosVO.getValues().get(name);
                        if (alfrescoDatosEspecificosValueVO!=null)
                        {
                        //document.setName(namedValue.getValue());
                           
                            alfrescoDatosEspecificosValueVO.setValue(namedValue.getValue());
                           metadata.put(name, alfrescoDatosEspecificosValueVO);
                        }
                }
            }
        }     
       AlfrescoDatosEspecificosValueVO alfrescoDatosEspecificosValueVO =(AlfrescoDatosEspecificosValueVO)metadata.get(datosEspecificosVO.getFileKey());
       datosEspecificosVO.setValues(metadata);
       document.setName(alfrescoDatosEspecificosValueVO.getValue());
       return document;



No menciono que hay establecer la conexion y demas con el api…
uridium
Member II

Re: Problemas recuperar metadatos después de CMLCopy

Muchas Gracias !!
sances1704
Member II

Re: Problemas recuperar metadatos después de CMLCopy

Buenas, me gustaría saber si conseguiste arreglar el problema.
Resulta que yo tengo un problema parecido. Tengo que renombrar una carpeta con otro nombre, y lo que hago es crear una nueva carpeta con el nuevo nombre y copiarme via CMLCopy todas las subcarpetas asociadas a la primera. Al parecer va todo bien, y si me meto en Cliente de alfresco veo que ha ido todo bien, sinembargo, cuando desde mi aplicacion intento acceder a alguna de las subcarpetas copiadas, no me las encuentra, y lo peor de todo es que si intento insertarla de nuevo me da un error diciendo que dicha subcarpeta ya esta creada.

Si alguien puede ayudarme?

Muchas gracias de antemano.