AnsweredAssumed Answered

Problema con objeto predicado con .net

Question asked by jclaveria on Apr 20, 2010
Latest reply on Apr 20, 2010 by venzia
Hola,

estoy trabajando en una integración con Alfresco desde una aplicación de escritorio con tecnología .net, en concreto c#

En general el desarrollo está marchando bien pero tengo un problema con operaciones en las que uso un predicado para el objeto cml. Monto todos los objetos, predicado, cml y al llamar a update me devuelve una excepción y no sé cómo atacarla.

Os pongo un ejemplo de un método que he preparado para cambiarle un nombre a una carpeta utilizando un ejemplo de está página

http://wiki.alfresco.com/wiki/IngresTutorial_Alfresco_Web_Service_API_for_Java#Move_a_space

Mi código sería:

ConvertirAPadre: crea un objeto ParentReference de la referencia destino (carpeta en la que queremos dejar el nuevo directorio)

private void MoverDirectorio(Reference directorio, Reference destino, string nombreNuevo, string nombreViejo)
        {
            ParentReference padreDestino = ConvertirAPadre(destino);
            padreDestino.childName = Constantes.crearQNameString(Constantes.NAMESPACE_CONTENT_MODEL, Constantes.normaliza(nombreNuevo));

            CMLMove cmlMover = new CMLMove();
            cmlMover.childName = Constantes.crearQNameString(Constantes.NAMESPACE_CONTENT_MODEL, nombreViejo);
            cmlMover.associationType = Constantes.ASSOC_CONTAINS;
            cmlMover.to = padreDestino;
            Predicate pred = new Predicate();
            pred.Items = new Reference[]{directorio};
            cmlMover.where = pred;
            //move.setWhere(new Predicate(new Reference[] {space},STORE,null));

            NamedValue nvalue = new NamedValue();
            nvalue.name = Constantes.PROP_NAME;
            nvalue.value = nombreNuevo;

            CMLUpdate cmlActualizar = new CMLUpdate();
            cmlActualizar.property = new NamedValue[] { nvalue };
            cmlActualizar.where = pred;
            //cmlActualizar.where_id = this.contenedorCarpetas.address;

            //update.setWhere(new Predicate(new Reference[]{space},STORE,null));

            CML cml  = new CML();
            cml.move = new CMLMove[]{cmlMover};
            cml.update = new CMLUpdate[]{cmlActualizar};
          
          //Execute the CML move and Update statement
            try
            {
             servicioRepository.update(cml);
            }
            catch (Exception e2)
            {   
             throw e2;
            }   
        }
En el ejemplo de la página construyen el objeto predicado pasándole un store general, pero el constructor del predicado no tiene parámetros, así que no sé cómo hacerlo.

Además, ¿hay algún sito de dónde pueda sacar código en c# de ejemplo?

Gracias por vuestra ayuda

Outcomes