Author: kcardineaud Date: 2011-07-04 16:56:03 +0200 (Mon, 04 Jul 2011) New Revision: 157 Url: http://nuiton.org/repositories/revision/scmwebeditor/157 Log: The search function load svn by directory Modified: trunk/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java trunk/src/main/webapp/Search.jsp Modified: trunk/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java 2011-07-01 15:27:37 UTC (rev 156) +++ trunk/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java 2011-07-04 14:56:03 UTC (rev 157) @@ -2,8 +2,10 @@ import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; +import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -23,7 +25,6 @@ import org.tmatesoft.svn.core.wc.SVNWCUtil; import com.opensymphony.xwork2.Action; -import com.opensymphony.xwork2.ActionContext; public class SearchAction extends ScmWebEditorBaseAction { @@ -39,13 +40,14 @@ String address; LinkedList<UrlSvnFile> files; + Map<String,String> directories; String username; String pw; String error; - - + + int numberOfFile; String info; String list; @@ -69,6 +71,11 @@ public LinkedList<UrlSvnFile> getFiles() { return files; } + + + public Map<String,String> getDirectories() { + return directories; + } public String getInfo() { @@ -79,8 +86,7 @@ public String getAddress() { return address; } - - + public void setAddress(String address) { this.address = address; } @@ -104,9 +110,18 @@ this.pw = pw; } + public int getNumberOfFile() { + return numberOfFile; + } + public String search() { + if(log.isInfoEnabled()) { + log.info("Enter in search action"); + } + + DAVRepositoryFactory.setup(); String url = address; @@ -121,8 +136,8 @@ } files = new LinkedList<UrlSvnFile>(); + directories = new HashMap<String,String>(); - if(address.endsWith("/")) { address = address.substring(0, address.length()-1); } @@ -154,8 +169,12 @@ error="The entry is a file while a directory was expected."; return Action.SUCCESS; } - + numberOfFile=0; listEntries( repository , "" ); + if(log.isInfoEnabled()) { + log.info("Nombre de fichier : "+files.size()); + } + Collections.sort(files); } catch (SVNAuthenticationException authexep) { @@ -185,34 +204,37 @@ } Iterator<?> iterator = entries.iterator(); + while (iterator.hasNext()) { SVNDirEntry entry = (SVNDirEntry) iterator.next(); - if(log.isInfoEnabled()) { - log.info("/" + (path.equals("") ? "" : path + "/") + entry.getName()+ "\n"); + if(log.isDebugEnabled()) { + log.debug("/" + (path.equals("") ? "" : path + "/") + entry.getName()+ "\n"); } String fichier = address+"/" + (path.equals("") ? "" : path + "/") + entry.getName(); if ( entry.getKind() == SVNNodeKind.DIR ) { - listEntries(repository, (path.equals("")) ? entry.getName() : path + "/" + entry.getName()); + directories.put(getAddressUnique(fichier),fichier); + + //listEntries(repository, (path.equals("")) ? entry.getName() : path + "/" + entry.getName()); } else { - // On ajoute dans la liste files seulement les fichiers et pas les répertoires files.add(new UrlSvnFile(fichier)); - } } } - - static public SearchAction getAction() { - return (SearchAction) ActionContext.getContext() - .get(CONTEXT_ACTION_KEY); + + public String getAddressUnique(String leFichier) { + String result = leFichier.replaceAll("/|:", ""); + log.info("Result of getAddressUnique : "+result); + return result; } + public static String replaceLast(String string, String toReplace, String replacement) { int pos = string.lastIndexOf(toReplace); if (pos > -1) { @@ -225,7 +247,6 @@ } - } Modified: trunk/src/main/webapp/Search.jsp =================================================================== --- trunk/src/main/webapp/Search.jsp 2011-07-01 15:27:37 UTC (rev 156) +++ trunk/src/main/webapp/Search.jsp 2011-07-04 14:56:03 UTC (rev 157) @@ -1,23 +1,42 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@page import="org.nuiton.scmwebeditor.actions.SearchAction"%> +<%@page import="java.util.LinkedList" %> +<%@page import="java.util.Iterator" %> + + <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib prefix="sj" uri="/struts-jquery-tags"%> - <sj:head jquerytheme="default"/> + <sj:head debug="true" jquerytheme="default"/> -<div id="search"> - <s:form action="search"> - - <s:if test="!files.empty"> - <p>Files on the repository : </p> + <!--<s:if test="!files.empty">--> <table> <s:iterator value="files"> <tr><td><a href="checkout.action?address=<s:property/>"><s:property/> <s:property value="level"/></a></td></tr> </s:iterator> + + + <s:iterator value="directories" var="directory" > + <tr><td> + + <sj:a + id="%{key}Button" + targets="htmlcontent%{key}" + href="search.action?address=%{value}" + > + ${directory.value} + </sj:a> + + + <div id="htmlcontent${directory.key}" ></div> + + </td></tr> + </s:iterator> + + </table> - </s:if> + <!--</s:if>--> <s:label name="error"></s:label> - </s:form> - -</div> \ No newline at end of file +