247 lines
6.8 KiB
Java
247 lines
6.8 KiB
Java
/*
|
|
* The contents of this file are subject to the Mozilla Public License Version 1.1
|
|
* (the "License"); you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
|
|
*
|
|
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
|
|
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
|
|
* language governing rights and limitations under the License.
|
|
*
|
|
* The Original Code is the Venice Web Communities System.
|
|
*
|
|
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
|
|
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
|
|
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
*/
|
|
package com.silverwrist.venice.servlets.format;
|
|
|
|
import java.util.*;
|
|
import javax.servlet.*;
|
|
import com.silverwrist.util.StringUtil;
|
|
import com.silverwrist.venice.core.*;
|
|
import com.silverwrist.venice.except.*;
|
|
|
|
public class AdminFindUser implements JSPRender, SearchMode
|
|
{
|
|
/*--------------------------------------------------------------------------------
|
|
* Static data members
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
// Attribute name for request attribute
|
|
protected static final String ATTR_NAME = "com.silverwrist.venice.content.AdminFindUser";
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* Attributes
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
private VeniceEngine engine;
|
|
private int field = -1;
|
|
private int mode = -1;
|
|
private String term = null;
|
|
private int offset = 0;
|
|
private List results = null;
|
|
private int find_count = -1;
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* Constructor
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
public AdminFindUser(VeniceEngine engine)
|
|
{
|
|
this.engine = engine;
|
|
|
|
} // end constructor
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* Internal functions
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
private static int getParamInt(ServletRequest request, String name, int default_val)
|
|
{
|
|
String str = request.getParameter(name);
|
|
if (str==null)
|
|
return -1;
|
|
|
|
try
|
|
{ // parse the integer value
|
|
return Integer.parseInt(str);
|
|
|
|
} // end try
|
|
catch (NumberFormatException nfe)
|
|
{ // in case of conversion error, return default
|
|
return default_val;
|
|
|
|
} // end catch
|
|
|
|
} // end getParamInt
|
|
|
|
private static boolean isImageButtonClicked(ServletRequest request, String name)
|
|
{
|
|
String val = request.getParameter(name + ".x");
|
|
return (val!=null);
|
|
|
|
} // end isImageButtonClicked
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* External static functions
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
public static AdminFindUser retrieve(ServletRequest request)
|
|
{
|
|
return (AdminFindUser)(request.getAttribute(ATTR_NAME));
|
|
|
|
} // end retrieve
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* Implementations from interface VeniceContent
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
public String getPageTitle(RenderData rdat)
|
|
{
|
|
return "User Account Management";
|
|
|
|
} // end getPageTitle
|
|
|
|
public String getPageQID()
|
|
{
|
|
return "sysadmin?cmd=UF";
|
|
|
|
} // end getPageQID
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* Implementations from interface JSPRender
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
public void store(ServletRequest request)
|
|
{
|
|
request.setAttribute(ATTR_NAME,this);
|
|
|
|
} // end store
|
|
|
|
public String getTargetJSPName()
|
|
{
|
|
return "admin_find.jsp";
|
|
|
|
} // end getTargetJSPName
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* External operations
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
public int getSearchField()
|
|
{
|
|
return field;
|
|
|
|
} // end getSearchField
|
|
|
|
public boolean searchFieldIs(int value)
|
|
{
|
|
return (value==field);
|
|
|
|
} // end searchFieldIs
|
|
|
|
public int getSearchMode()
|
|
{
|
|
return mode;
|
|
|
|
} // end getSearchMode
|
|
|
|
public boolean searchModeIs(int value)
|
|
{
|
|
return (value==mode);
|
|
|
|
} // end searchModeIs
|
|
|
|
public String getSearchTerm()
|
|
{
|
|
return term;
|
|
|
|
} // end getSearchTerm
|
|
|
|
public List getResultsList()
|
|
{
|
|
return results;
|
|
|
|
} // end getResultsList
|
|
|
|
public int getNumResultsDisplayed()
|
|
{
|
|
return engine.getStdNumSearchResults();
|
|
|
|
} // end getNumResultsDisplayed
|
|
|
|
public int getFindCount()
|
|
{
|
|
return find_count;
|
|
|
|
} // end getFindCount
|
|
|
|
public int getOffset()
|
|
{
|
|
return offset;
|
|
|
|
} // end getOffset
|
|
|
|
public void loadGet()
|
|
{
|
|
field = FIELD_USER_NAME;
|
|
mode = SEARCH_PREFIX;
|
|
term = "";
|
|
|
|
} // end loadGet
|
|
|
|
public void loadPost(ServletRequest request) throws ValidationException, DataException
|
|
{
|
|
int catid = -1;
|
|
|
|
// Retrieve all the posted parameters from the form and validate them.
|
|
field = getParamInt(request,"field",FIELD_USER_NAME);
|
|
if ( (field!=FIELD_USER_NAME) && (field!=FIELD_USER_DESCRIPTION) && (field!=FIELD_USER_GIVEN_NAME)
|
|
&& (field!=FIELD_USER_FAMILY_NAME))
|
|
throw new ValidationException("The field search parameter is not valid.");
|
|
mode = getParamInt(request,"mode",SEARCH_PREFIX);
|
|
if ((mode!=SEARCH_PREFIX) && (mode!=SEARCH_SUBSTRING) && (mode!=SEARCH_REGEXP))
|
|
throw new ValidationException("The search mode parameter is not valid.");
|
|
term = request.getParameter("term");
|
|
if (term==null)
|
|
term = "";
|
|
|
|
// Retrieve the offset and find count parameters.
|
|
offset = getParamInt(request,"ofs",0);
|
|
find_count = getParamInt(request,"fcount",-1);
|
|
|
|
// Adjust the search return offset based on the command button click.
|
|
int count = getNumResultsDisplayed();
|
|
if (isImageButtonClicked(request,"search"))
|
|
offset = 0;
|
|
else if (isImageButtonClicked(request,"previous"))
|
|
{ // adjust the offset in the reverse direction
|
|
offset -= count;
|
|
if (offset<0)
|
|
offset = 0;
|
|
|
|
} // end else if
|
|
else if (isImageButtonClicked(request,"next"))
|
|
offset += count; // go forwards instead
|
|
else
|
|
throw new ValidationException("Unable to determine what action triggered the form.");
|
|
|
|
// Run the actual search.
|
|
results = engine.searchForUsers(field,mode,term,offset,count);
|
|
if (find_count<0)
|
|
find_count = engine.getSearchUserCount(field,mode,term);
|
|
|
|
} // end loadPost
|
|
|
|
} // end class AdminFindUser
|