AnsweredAssumed Answered

Upload file con metadata custom via API

Question asked by monocromo on Dec 17, 2012
Latest reply on Jan 4, 2013 by monocromo
Ciao a tutti, dopo essere riuscito a scrivere del codice java che mi esegue correttamente l'upload di un file generico, voglio migliorare la procedura in modo che mi permetta l'upload di un file con un content-type custom.
Putroppo non riesco a farlo.

Ho creato un modello con questo namespace:

<namespace uri="http://www.prova.it/model/content/1.0" prefix="fe" />

Questo è il mio content che eredita docCommerciale


      <type name="fe:fattura">
         <title>Fattura</title>
         <parent>fe:docCommerciale</parent>
         <properties>
            <property name="fe:importo">
               <type>d:float</type>
               <mandatory>true</mandatory>
            </property>
            <property name="fe:dataScadenza">
               <type>d:date</type>
               <mandatory>true</mandatory>
            </property>            
         </properties>
      </type>

e questa è la procedura che esegue l'upload:

// Referenza al nodo padre in cui inserire il documento
            Store storeRef = new Store(Constants.WORKSPACE_STORE, "SpacesStore");
            ParentReference companyHomeParent = new ParentReference(storeRef, null, percorsoRepository,    Constants.ASSOC_CONTAINS, null);
                   
            //Richiesta del repository service e del contet service
            RepositoryServiceSoapBindingStub repositoryService = WebServiceFactory.getRepositoryService();
            ContentServiceSoapBindingStub contentService = WebServiceFactory.getContentService();
           
            // Nome del documento
            companyHomeParent.setChildName("cm:" + fileName);
           
            //Vettori delle proprietà
           NamedValue[] contentProps = new NamedValue[1];
          NamedValue[] titledProps = new NamedValue[2];
          
          //Assegnazione ai vettori delle proprietà
            contentProps[0] = Utils.createNamedValue(Constants.PROP_NAME, fileName);            
            titledProps[0] = Utils.createNamedValue(Constants.PROP_TITLE, fileName);
            titledProps[1] = Utils.createNamedValue(Constants.PROP_DESCRIPTION, "");
           
            //Costrutto CML per aggiungere titolo al file
            CMLAddAspect addAspect = new CMLAddAspect(Constants.ASPECT_TITLED, titledProps, null, "1");
           
            CMLCreate create = new CMLCreate("1", companyHomeParent, companyHomeParent.getUuid(), Constants.ASSOC_CONTAINS, null, Constants.PROP_CONTENT, contentProps);
                                  
            // Blocco create CML
            CML cml = new CML();
            cml.setCreate(new CMLCreate[] {create});
            cml.setAddAspect(new CMLAddAspect[] {addAspect});
           
            //Creazione effettiva del nodo
            UpdateResult[] result = WebServiceFactory.getRepositoryService().update(cml);    
            Reference content = result[0].getDestination();
                                         
            //Scrittura del contenuto           
            ContentFormat contentFormat = new ContentFormat(this.mimeType(fileName), "UTF-8");
            Content contentRef = contentService.write(content, Constants.PROP_CONTENT, this.readFromFile(new File(percorsoFile + fileName)), contentFormat);

            System.out.println("File caricato: " + fileName);

Come posso modificare la procedura di upload in modo da specificare il tipo di content-type e relative proprietà?
Ho provato a vedere questa soluzione https://forums.alfresco.com/en/viewtopic.php?f=27&t=27700 ma sembra non funzionare.

Grazie e saluti

Outcomes