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]