001 /*************************************************************************************************** 002 * MODULE DESCRIPTION 003 **************************************************************************************************** 004 * 005 * NAME: PersonSearch.java 006 * LANGUAGE: Java2 007 * DATE: 9.12.2002 008 * AUTHOR: Miika Nurminen, Jyväskylän yliopisto 009 * 010 **************************************************************************************************** 011 * COPYRIGHT (C) KIURU-PROJEKTIRYHMÄ 012 * Limited rights granted. Please refer to license 013 **************************************************************************************************** 014 * 015 **************************************************************************************************** 016 * UPDATES 017 **************************************************************************************************** 018 * 019 * 5.12.2002 Initial release 020 * 14.1.2003 /mn 021 * part of functionality generalized to SearchHadler 022 * 023 ****************************************************************************************************/ 024 package kiurubeans; 025 026 import kotkabeans.*; 027 import kiurubeans.*; 028 029 /** 030 * Used for searches on the person table. 031 */ 032 public class PersonSearch extends SearchHandler { 033 034 // Attributes 035 036 /** 037 * Search string. Value for SQL ordering 038 */ 039 private String name; 040 041 // Constructors 042 043 /** Constructs a new instance of PersonSearch. Defines ordeding. */ 044 public PersonSearch() { 045 Field[] s = {new TextField("p.lastname"), 046 new TextField("p.firstnames"), 047 new TextField("ot.name")}; 048 setVisibleFields(s); // organisationname 049 assignDefaultOrder(); 050 } 051 052 053 054 // Access methods 055 056 /** 057 * Getter for attribute name 058 * @return person name used in query string 059 */ 060 public String getPersonName() { 061 if (name==null) return ""; 062 return this.name; 063 } 064 065 /** 066 * Setter for attribute name 067 * @param name person name used in query string 068 */ 069 public void setPersonName(String name) { 070 this.name = kotkabeans.Encoder.SQLEncode(name).trim(); 071 } 072 073 074 // Operations 075 076 /** 077 * Implementation for SUBMIT_SEARCH 078 */ 079 public void submitSearch() { 080 if (this.name==null) setPersonName(""); 081 } 082 083 /** 084 * Implementation for RESET_SEARCH 085 */ 086 public void resetSearch() { 087 this.name=null; 088 } 089 090 /** 091 * Returns person information for given spacegroup. 092 * 093 * @param spacegroupid spacegroup to be searched 094 * @throws Exception if problems with db connection 095 * @return (personid,accesslevel,modifyright) 096 */ 097 public static RS2 getPersonIdsFromSpaceGroup(int spacegroupid) throws java.lang.Exception { 098 return SimpleDb.simpleQuery("Personsearch getReserverPersonsFromSpaceGroup", 099 "select sgp.personid, sgp.accesslevel, sgp.modifyright "+ 100 "from person as p, spacegroupperson as sgp "+ 101 "where p.deleted=false and sgp.deleted=false and sgp.personid=p.personid "+ 102 "and sgp.spacegroupid="+Integer.toString(spacegroupid)); 103 } 104 105 /** 106 * Returns person information for given spacegroup. 107 * 108 * @param spacegroupid spacegroup to be searched 109 * @throws Exception if problems with db connection 110 * @return (personid,personname,personfirstname,organisationname,accesslevel,modifyright) 111 */ 112 public RS2 getPersonsFromSpaceGroup(int spacegroupid) throws java.lang.Exception { 113 return SimpleDb.simpleQuery("Personsearch getReserverPersonsFromSpaceGroup", 114 "select p.personid, p.lastname as personname,p.firstnames as personfirstname, ot.name as organisationname, sgp.accesslevel, sgp.modifyright "+ 115 "from person as p, spacegroupperson as sgp, organisationtranslation as ot "+ 116 "where p.deleted=false and sgp.deleted=false and sgp.personid=p.personid "+ 117 "and ot.organisationid=p.homeorganisationid and sgp.spacegroupid="+Integer.toString(spacegroupid)+ 118 " and ot.languageid="+getLangId()+ 119 getOrderClause()); 120 } 121 122 123 /** Returns all persons with code match. Note! This might be called automatically 124 * within performaction. Currently must be called manually. 125 * @throws Exception if problems with db connection 126 * @return matched spaces (code,spaceid,spacetypename) 127 */ 128 public RS2 getPersons() throws Exception { 129 if (this.name==null) return null; // getpersonname clears null away... 130 String t=SimpleDb.formatSearchString("p.lastname", getPersonName()); 131 return SimpleDb.simpleQuery("PersonSearch getPersons","select p.personid, p.lastname as personName,p.firstnames as personfirstname, ot.name as organisationName "+ 132 "from person as p, organisationtranslation as ot "+ 133 "where p.deleted=false and ot.organisationid=p.homeorganisationid "+ 134 "and ot.languageid="+getLangId()+" "+t+ 135 getOrderClause()); 136 } 137 138 /** Default implementation of clearing action state. Descendant classes may 139 * override this. 140 * @see SearchHandler#doClearActionState(HttpServletRequest) 141 * @param request The request-object of the JSP. 142 */ 143 protected void doClearActionState(javax.servlet.http.HttpServletRequest request) { 144 if ((getEnumState()==KiuruHandler.NO_ACTION) && (this.name!=null)) 145 setEnumState(SUBMIT_SEARCH); // because of a bug in Mozilla when pressing enter in searchfield. 146 else super.doClearActionState(request); 147 } 148 149 /** Ensures empty request parameters are cleared when entity is posted. 150 * <p> 151 * If bean is used in a JSP, this should be called in the beginning of page. 152 * If form content is "" or null it is not sent via HTTP, so those fields 153 * must be cleared manually. 154 * 155 * @param request HTTP request with parameters 156 * @see SearchHandler#clearEmptyParameters(HttpServletRequest) 157 */ 158 protected void doClearEmptyParameters(javax.servlet.http.HttpServletRequest request) { 159 if ((request.getParameter("personName")!=null) && (request.getParameter("personName").equals("") && this.name!=null)) { 160 setPersonName(""); 161 } 162 } 163 164 } 165 /*************************************************************************************************** 166 * COPYRIGHT (C) KIURU-PROJEKTIRYHMÄ 167 * Limited rights granted. Please refer to license 168 ****************************************************************************************************/