/* * 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 . * * 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 , * 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