Tutorial
Búsqueda recursiva
15/02/2007

Codigo con el que podemos realizar una busqueda recursiva.

Código:
<%@ page import="org.opencms.file.CmsObject"%>
<%@ page import="org.opencms.jsp.CmsJspActionElement"%>
<%@ page import="org.opencms.file.CmsFolder"%>
<%@ page import="org.opencms.file.CmsFile"%>
<%@ page import="org.opencms.main.CmsException" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>

<%!
        public boolean firstExec = true;
        public Vector listFilesRecursive(CmsObject cms, String path) throws CmsException
        {

            CmsFolder cmsfolder = null;
            CmsFile cmsfile = null;
            CmsFile CmsFileNoDir = null;

            String pathDir = "";
            String pathFile = "";

            List listFiles = null;

            List listFolders = cms.getSubFolders(path);

            Vector filesfolders = new Vector();

            if (firstExec == true)
           {
                   List listFilesNoDir = cms.getFilesInFolder(path, org.opencms.file.CmsResourceFilter.requireType(109));

                   for(int m=0; m<listFilesNoDir.size(); m++)
                  {
                          CmsFileNoDir = (CmsFile) listFilesNoDir.get(m);
                          pathFile = path + CmsFileNoDir.getName();

                          if (pathFile.indexOf("/sites/Web")!=-1)
                         {
                             String sinWeb[] = pathFile.split("/sites/Web");
                             pathFile = sinWeb[1];
                         }

                        filesfolders.addElement(pathFile);
                   }
                  firstExec = false;
            }  


           for(int i=0; i<listFolders.size(); i++)
          {
               cmsfolder = (CmsFolder) listFolders.get(i);

               pathDir = cmsfolder.getRootPath();

               if (pathDir.indexOf("/sites/Web")!=-1)
               {
                       String sinToro[] = pathDir.split("/sites/Toro");
                       pathDir = sinToro[1];
               }

              //filesfolders.addElement(pathDir);

              listFiles = cms.getFilesInFolder(pathDir, org.opencms.file.CmsResourceFilter.requireType(109));

              for(int k=0; k<listFiles.size(); k++)
              {
                  cmsfile = (CmsFile) listFiles.get(k);
                  path = pathDir + cmsfile.getName();
                  filesfolders.addElement(path);
              }

             Vector aVector = listFilesRecursive(cms, pathDir);
             int j = 0;

             while (j < aVector.size())
             {
                  filesfolders.addElement(aVector.get(j));
                  j++;
             }

     }

     return filesfolders;
}

%>

<%

try

        CmsJspActionElement cmsActionElem = new CmsJspActionElement(pageContext, request, response);

        CmsObject cms = cmsActionElem.getCmsObject();

        Vector filesfolders = new Vector();

        filesfolders = listFilesRecursive(cms, "/CARPETA_LISTAR/");

        int j=0;

        for(j=0; j<filesfolders.size(); j++)
        {
              out.println(filesfolders.get(j) + "<br>");
        }

out.println("<BR>"+j);

}

catch (CmsException e)

     out.println(e);
}
%>