AnsweredAssumed Answered

añadir varios aspectos a un nodo

Question asked by magno_6045 on Aug 2, 2010
Latest reply on Aug 18, 2010 by fegor
Buenas!
estoy teniendo un problema al intentar crear un documento a traves de la api de web services. El caso es que yo quiero crear un documento y darle por un lado los aspectos de TITLED, que tienen como propiedades titulo y descripcion y por otro el aspecto VERSIONABLE que tiene otras tantas propiedades y el aspecto INLINEEDITABLE que tambien tiene sus propias propiedades…
Total, que yo pensaba que lo que habia que hacer es crear el nodo, darle los aspectos, con el addAspect de cada uno y guardarlo, pero veo que solo me guarda el ultimo aspecto que le he dado…he probado a intentar actualizarlo despues de crear cada aspecto, pero entonces me casca…os pongo el codigo porque creo que lo que me esta fallando es la forma de actualizar(si es que hay que hacerlo asi)
Yo basicamente lo que hago es una vez construido el cmlBlock, le añado los aspectos y luego hago un update…pero asi , solo me guarda el aspecto inlineEditable, que casualmente es el ultimo que le meto…
A ver si alguien me puede echar una mano, porque me urge un poco y no encuentro nada de añadir varios aspectos a la vez…GRACIAS!
// Comienza la construcción de nodo   
                      NamedValue[] contentProps = new NamedValue[1];  
                      contentProps[0] = Utils.createNamedValue(Constants.PROP_NAME, name);  
                      CMLCreate create = new CMLCreate("1", companyHomeParent, null, null, null, Constants.TYPE_CONTENT, contentProps); 
                     
                      // Añadimos aspectos al nodo 
                                          //[b]ASPECTO TITLED[/b]
                      NamedValue[] titledProps = new NamedValue[2]; 
                      titledProps[0] = Utils.createNamedValue(Constants.PROP_TITLE, titulo); 
                      titledProps[1] = Utils.createNamedValue(Constants.PROP_DESCRIPTION, descripción); 
                      CMLAddAspect addAspect = new CMLAddAspect(createQNameString("http://www.alfresco.org/model/content/1.0", "titled"), titledProps, null, "1");
                     
                     
                      //[b]aspecto versionable[/b]
                      CMLAddAspect addAspectVersionable=null;
                         if (version){
                         //añado aspectos versionable
                         NamedValue[] versionable=new NamedValue[3];
                         versionable[0]=Utils.createNamedValue(createQNameString("http://www.alfresco.org/model/content/1.0", "initialVersion"), "1.0");
                         versionable[1]=Utils.createNamedValue(createQNameString("http://www.alfresco.org/model/content/1.0", "autoVersionOnUpdateProps"), "true");
                         versionable[2]=Utils.createNamedValue(createQNameString("http://www.alfresco.org/model/content/1.0", "autoVersion"), "true");
                        addAspectVersionable = new CMLAddAspect(createQNameString("http://www.alfresco.org/model/content/1.0", "versionable"), versionable, null, "1"); 
                         }
                          // [b]ASPECTO INLINEEDITABLE[/b]
                        CMLAddAspect addAspectInline=null;
                        if (editInline){
                        //añado aspecto editar online
                        NamedValue[] inline=new NamedValue[1];
                        inline[0]=Utils.createNamedValue(createQNameString("http://www.alfresco.org/model/application/1.0", "editInline"), "true");
                        addAspectInline=new CMLAddAspect(createQNameString("http://www.alfresco.org/model/application/1.0", "inlineeditable"), inline, null, "1"); 
                        }
                          
                      // Contruimos CML Block, con el nodo y sus aspectos 
                      CML cml = new CML(); 
                      cml.setCreate(new CMLCreate[] {create}); 
                                          //DOY LOS ASPECTOS
                      cml.setAddAspect(new CMLAddAspect[] {addAspect});
                       
                      if (version){
                            cml.setAddAspect(new CMLAddAspect[] {addAspectVersionable});
                          }
               
                     if (editInline){
                            cml.setAddAspect(new CMLAddAspect[] {addAspectInline}); 
                          }
                 // Creamos y recuperamos el contenido vía Repository Web Service 
                      UpdateResult[]  result = WebServiceFactory.getRepositoryService().update(cml); 
                      Reference content = result[0].getDestination();
                     
                     
                     
                      // Escribimos el contenido 
                      ContentServiceSoapBindingStub contentService = WebServiceFactory.getContentService(); 
                      String text = textoHTML; 
                      // hay que darle el formato segun el tipo!!!
                      ContentFormat contentFormat=null;
                    
                      if (tipo.equalsIgnoreCase("html")){
                         contentFormat = new ContentFormat("application/msword", "UTF-8");
                      }
                      if (tipo.equalsIgnoreCase("txt")){
                         contentFormat = new ContentFormat("text/plain", "UTF-8");
                      }
                      System.out.println("formato del contentFormat–>"+contentFormat.getMimetype());
                     
                     
                      contentService.write(content, Constants.PROP_CONTENT, text.getBytes(), contentFormat); 
                     

Outcomes