Búsqueda de contenidos a través de JAVA (RESUELTO DE VERDAD)

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

Búsqueda de contenidos a través de JAVA (RESUELTO DE VERDAD)

Hola a todos, en primer lugar disculparme por repetir tema que ya está más que hablado. El problema que tengo es que necesito realizar búsquedas desde un programa en JAVA sobre contenidos en Alfresco. He de decir hasta ahora lo único que he hecho son referencias a nodos, subir y descargar ficheros.

Llevo toda la tarde leyendo la wiki, este foro (en inglés y en español) y no termino de aclararme sobre cómo hacer referencia a Metadatos en las búsquedas. Debo ser un poco torpe Smiley Sad

Encontré éste código que ayuda a entender cómo funciona el tema:

                Query query = new Query(Constants.QUERY_LANG_LUCENE,
                                                      "+PARENT:\"workspace://SpacesStore/"+ nodes[0].getReference().getUuid() + "\" +TEXT:\"" + searchValue + "\"");
               
                // Execute the query
                QueryResult queryResult = repositoryService.query(STORE, query, false);
               
                // Display the results
                ResultSet resultSet = queryResult.getResultSet();
                ResultSetRow[] rows = resultSet.getRows();
               
                if (rows != null)
                {
                    // Get the infomation from the result set
                    for(ResultSetRow row : rows)
                    {
                        String nodeId = row.getNode().getId();
                        ContentResult contentResult = new ContentResult(nodeId);
                        ResultSetRowNode node = row.getNode();
                        Reference ref1 = new Reference(STORE, node.getId(), null);
                        Query query2 = null;
                        Node[] noderesult = null;
                        noderesult = WebServiceFactory.getRepositoryService().get(new Predicate(new Reference[] { ref1 }, STORE, query2));
                      //Recorremos cada nodo-hijo devuelto, normalmente 1.
                        for (int x1 = 0; x1 < noderesult.length; x1++) {
                           Node row1 = noderesult[x1];
                           //Recorremos las Propiedades
                           for (NamedValue namedValue : row1.getProperties())
                           …

Pero me da bastantes errores, como por ejemplo la clase ContentResult que no me la reconoce (tengo todos los jars).

Luego también está este otro código:

                SearchParameters sp = new SearchParameters();
           sp.addStore(getStoreRef());
           sp.setLanguage(SearchService.LANGUAGE_LUCENE);
           sp.setQuery("TYPE:\"{http://www.alfresco.org/model/content/1.0}content\"");
         
           results = serviceRegistry.getSearchService().query(sp);
           for(ResultSetRow row : results){
                   NodeRef currentNodeRef = row.getNodeRef();
               …
           }

Pero líneas en las que aparece getStoreRef() o serviceRegistry me dan error (leí algo de utilizar Spring para que rellene ciertos beans, pero en ese aspecto no sé a qué se refieren).

El caso, que estoy muy perdido, necesito un ejemplo sencillo, si alguien está dispuesto a pegármelo por aquí, para poder empezar.

Supongo que necesite conectarme al servicio de Alfresco, y ejecutar una sentencia (bien en XPath o en Lucene) y obetener los resultados, no??

Siento mi ineptitud, y agradezco cualquier aportación (o una breve explicación).

Muchas gracias de antemano a todos/as!!!
2 Replies
rhakaro
Member II

Re: Búsqueda de contenidos a través de JAVA (RESUELTO DE VERDAD)

A ver, ya lo tengo casi, recogiendo respuestas de todos sitios tengo esto:

………….
                ………….

                Query query = new Query(Constants.QUERY_LANG_LUCENE, "PATH:\"/app:company_home/cm:my_folder//*\" + @cm\\:name:plantilla*");
        
           // Execute the query
           final Store STORE = new Store(Constants.WORKSPACE_STORE, "SpacesStore");
           QueryResult queryResult = repositoryService.query(STORE, query, false);
          
           // Display the results
           ResultSet results = queryResult.getResultSet();
           ResultSetRow[] rows = results.getRows();
          
           System.out.println("La busqueda da algo asi:");
           if(rows != null){
              for(ResultSetRow row : rows){
                                      for (NamedValue namedValue : row.getColumns()){
                                             if (namedValue.getName().endsWith("path") == true)
                                                        System.out.println(namedValue.getValue());
                                              if (namedValue.getName().endsWith(Constants.PROP_CREATED) == true)
                                                        System.out.println(namedValue.getValue());
                                              else if (namedValue.getName().endsWith(Constants.PROP_NAME) == true){
                                                        System.out.println(namedValue.getValue());
                                             else if (namedValue.getName().endsWith(Constants.PROP_DESCRIPTION) == true){
                                                        System.out.println(namedValue.getValue());
                                              
                                               ………….
                                               ………….
                                               ………….
}

Hace lo que preguntaba, así que pongo "resulto" en el título, aunque me surge otra duda. Resulta que el contenido que recojo viene con todos los campos con valor "null" salvo la propiedad "Path".

¿Se os ocurre qué puede estar pasando?

Muchas gracias, un saludo!
rhakaro
Member II

Re: Búsqueda de contenidos a través de JAVA (RESUELTO DE VERDAD)

Hola a todos, al fin "he" conseguido resolver el problema de recuperar los campos (título, autor, fecha de creación, etc) de un Contenido obtenido a través de una búsqueda.

Me han ayudado mucho en el foro en inglés, así que en vez de daros aquí la "chapa" os pego el link, por si alguien lo necesita:

http://forums.alfresco.com/en/viewtopic.php?f=27&t=23085

Muchas gracias a todos por colaborar, qué haríamos muchos sin este foro!

Un saludo!