taylor 2005/03/23 11:38:37 Modified: applications/gems/src/java/org/apache/portals/gems/browser BrowserPortlet.java Log: added basic search(find) functionality to gems browser Revision Changes Path 1.8 +60 -4 jakarta-jetspeed-2/applications/gems/src/java/org/apache/portals/gems/browser/BrowserPortlet.java Index: BrowserPortlet.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/applications/gems/src/java/org/apache/portals/gems/browser/BrowserPortlet.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- BrowserPortlet.java 23 Mar 2005 00:04:39 -0000 1.7 +++ BrowserPortlet.java 23 Mar 2005 19:38:37 -0000 1.8 @@ -17,6 +17,7 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.Vector; @@ -55,7 +56,10 @@ protected static final String POOLNAME = "poolname"; protected static final String START = "start"; - + protected static final String FIND = "find"; + protected static final String SEARCH_STRING = "searchString"; + protected static final String SEARCH_COLUMN = "searchColumn"; + protected static final String CUSTOMIZE_TEMPLATE = "customizeTemplate"; protected static final String WINDOW_SIZE = "WindowSize"; @@ -152,10 +156,17 @@ String sortColName = request.getParameter(SORT_COLUMN_NAME); int start = getStartVariable(request, START, sortColName, iterator); + PortletPreferences prefs = request.getPreferences(); windowSize = Integer.parseInt(prefs.getValue(WINDOW_SIZE, "10")); + StatusMessage message = (StatusMessage)PortletMessaging.consume(request, "DatabaseBrowserPortlet", "action"); + if (message != null) + { + this.getContext(request).put("statusMsg", message); + } + try { if (iterator == null) @@ -271,11 +282,31 @@ { clearBrowserIterator(request); } - String start = request.getParameter("start"); + String start = request.getParameter(START); if (start != null) { - response.setRenderParameter("start", start); + response.setRenderParameter(START, start); } + String searchString = request.getParameter(SEARCH_STRING); + if (searchString != null) + { + String searchColumn = request.getParameter(SEARCH_COLUMN); + int index = find(this.getBrowserIterator(request), searchString, searchColumn); + if (index == -1) + { + try + { + StatusMessage sm = new StatusMessage("Could not find match for: " + searchString, StatusMessage.ALERT); + PortletMessaging.publish(request, "DatabaseBrowserPortlet", "action", sm); + } + catch (Exception e) + {} + } + else + { + response.setRenderParameter(START, Integer.toString(index)); + } + } } } } @@ -328,7 +359,8 @@ int start = -1; // if users want to overwrite how the sorting affects the cursor for // the window - if (sortColName != null) start = getStartIndex(); + if (sortColName != null) + start = getStartIndex(); if (start < 0) { @@ -508,4 +540,28 @@ System.err.println("Failed to publish message: " + e); } } + + public int find(BrowserIterator iterator, String searchString, String searchColumn) + { + int index = 0; + int column = 1; + + if (searchColumn != null) + column = Integer.parseInt(searchColumn); + + Iterator it = iterator.getResultSet().iterator(); + while (it.hasNext()) + { + // TODO: this only works on String columns + List row = (List)it.next(); + String item = (String)row.get(column); + if (item.startsWith(searchString)) + { + return index; + } + index++; + } + + return -1; + } } \ No newline at end of file
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]