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]

Reply via email to