Ejemplo de como iterar los nodos en la Busqueda -CMIS

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

Ejemplo de como iterar los nodos en la Busqueda -CMIS

Tengo dudas de como iterar para extraer la informacion de un documento mediante CMIS

este es el codigo:

<code>
   
   public void searchDoc(String docName, String folderName){
      
      
    try {
      
          String queryString = "Select * from cmis:document where cmis:name = '" + docName + "'  ";
         ItemIterable<QueryResult> results = autenticar.getSession().query(queryString, false);

         System.out.println(" size"+results.getTotalNumItems());
         
         int index=0;
         for (QueryResult result : results) { 
            
            List<PropertyData<?>> properties = result.getProperties();      
              
            
               for (PropertyData<?> property : properties)
               {
                  
                  System.out.println(index + ": " + property.getQueryName() + " => " + property.getValues().toString());
               
               }
            
            
            
            
          index++;   
         }
         
      
      
       } catch (Exception e) {
      // TODO: handle exception
      }
   
      
      
      
   }

Como puedo extraer de cada row sus datos (personalizados)???

<code>
4 Replies
americanolinhar
Active Member

Re: Ejemplo de como iterar los nodos en la Busqueda -CMIS

Maybe it can help:


   private static void performMetadataExport(Session session, ItemIterable<QueryResult> results){
      
      try {
         

            for (QueryResult result : results){
               String[] valueList = new String[8];
               
               valueList[0] = (String)result.getPropertyValueByQueryName("cmis:name");
               valueList[1] = (String)result.getPropertyValueByQueryName("cmis:createdBy");
               valueList[2] = (String)result.getPropertyValueByQueryName("cmis:lastModifiedBy");
               valueList[3] = (String)result.getPropertyValueByQueryName("cmis:objectId");
               valueList[4] = (String)result.getPropertyValueByQueryName("cmis:versionLabel");
               //valueList[5] = (String)result.getPropertyValueByQueryName("cmis:objectTypeId");
               //valueList[6] = (String)result.getPropertyValueByQueryName("cmis:parentTypeId ");
      
                  
               

            }
            LOGGER.info("CmisMetadataExport: Exported: " + results.getTotalNumItems() + " items.");
   
            
         }
         catch(Exception e){
            LOGGER.error(e.toString());
         }   
         LOGGER.info("CmisMetadataExport: Export Complete.");
   }
juanvzla
Member II

Re: Ejemplo de como iterar los nodos en la Busqueda -CMIS

Hola mi modelo esta definido por tipo y el tipo tiene un aspecto ejemplo:


<code>


  <type name = "rg:test">
     <title>Tipo test</title>
     <parent>cm:content</parent>         
     <properties>
          <property name="rg:numTest">
       
              <title>Número test</title>
              <type>d:text</type>          
              <mandatory>false</mandatory>
         
          </property>
     </properties>
        <mandatory-aspects>
            <aspect>rg:aspectoRelacionRegitroCivil</aspect>
      </mandatory-aspects>
   
   </type>


<aspects>
    <aspect name="rg:aspectoTest">
         <title> Metadatos relacional </title>      
         <properties>
             <property name="rg:campo1">
                    <title>campo 1</title>
                    <type>d:text</type>
                    <mandatory>false</mandatory>
             </property>
           <property name="rg:campo2">
                    <title>campo 2</title>
                    <type>d:text</type>
                    <mandatory>false</mandatory>
             </property>
         
         </properties>
      </aspect>
   </aspects>

Este es el metodo que me imprime los datos nativos de alfresco

  String queryString = "Select * from cmis:document where cmis:name = '" + docName + "'  ";
  ItemIterable<QueryResult> results = autenticar.getSession().query(queryString, false);
  for (QueryResult result : results) {
   String name = result.getPropertyValueByQueryName("cmis:name");
   String id =result.getPropertyValueByQueryName("cmisSmiley SurprisedbjectId");
   String author =   result.getPropertyValueByQueryName("cmisSmiley SurprisedbjectId");
   List<String> tags =     result.getPropertyMultivalueByQueryName("rg:campo1");

      
Deseo imprimir los metadatos personalizados que le cree a mi tipo(aspecto y metadatos que estan dentro de mi tipo como lo hago??

    Tendra algo que ver en el select??
Actualmente le indico que busque esto:  "Select * from cmis:document where cmis:name = '" + docName + "'  ";

Con esto quiero decirle que me busque el documentos y me muestre toda su metadata(nativa y personalizada) que tenga el nombre xxxx


            
         
<code>
angelborroy
Alfresco Employee

Re: Ejemplo de como iterar los nodos en la Busqueda -CMIS

Puedes hacer una query directa sobre los tipos y aspectos:
<CODE>select * from rg:test</CODE>
<CODE>select * from rg:aspectoTest</CODE>
Hyland Developer Evangelist
juanvzla
Member II

Re: Ejemplo de como iterar los nodos en la Busqueda -CMIS

Si muchas gracias , casualmente luego de algunas pruebas note que se podia.