/* * Created on 5.3.2004 */ package is.idega.idegaweb.golf.tournament.presentation; import is.idega.idegaweb.golf.access.AccessControl; import is.idega.idegaweb.golf.entity.Member; import is.idega.idegaweb.golf.entity.Union; import is.idega.idegaweb.golf.presentation.GolfBlock; import java.rmi.RemoteException; import java.sql.SQLException; import java.util.StringTokenizer; import java.util.Vector; import com.idega.data.IDOLookup; import com.idega.idegaweb.IWResourceBundle; import com.idega.presentation.IWContext; import com.idega.presentation.Table; import com.idega.presentation.text.Link; import com.idega.presentation.ui.CheckBox; import com.idega.presentation.ui.Form; import com.idega.presentation.ui.GenericButton; import com.idega.presentation.ui.HiddenInput; import com.idega.presentation.ui.SubmitButton; import com.idega.presentation.ui.TextArea; import com.idega.util.IWTimestamp; /** * @author gimmi */ public class MemberSearch extends GolfBlock { public void main(IWContext modinfo) throws Exception { IWResourceBundle iwrb = getResourceBundle(); String action = modinfo.getParameter("action"); if (action == null) action = ""; if (action.equals("") || action.equals("getSearch")) { add("<br>"); searchByName(modinfo, iwrb); searchBySocialSecurityNumber(modinfo, iwrb); } else if (action.equals("searchBySocialSecurityNumber")) { searchBySocialSecurityNumber(modinfo, iwrb); } else if (action.equals("getSearchBySocialSecurityNumberResults")) { getSearchBySocialSecurityNumberResults(modinfo, iwrb); } else if (action.equals("searchByName")) { searchByName(modinfo, iwrb); } else if (action.equals("getSearchByNameResults")) { getSearchByNameResults(modinfo, iwrb); } else { } } public void searchBySocialSecurityNumber(IWContext modinfo, IWResourceBundle iwrb) throws SQLException { Form form = new Form(); Table table2 = new Table(2, 3); table2.setWidth(200); table2.setAlignment("center"); table2.setAlignment(2, 3, "right"); table2.add(iwrb.getLocalizedString("tournament.enter_social_security_number", "Enter social security number"), 1, 1); table2.mergeCells(1, 1, 2, 1); table2.mergeCells(1, 2, 2, 2); TextArea numberInput = new TextArea("socialSecurityNumbers"); numberInput.setWidth(30); numberInput.setHeight(5); //SubmitButton socialResult = new // SubmitButton("Leita","action","getSearchBySocialSecurityNumberResults"); HiddenInput hidden = new HiddenInput("action", "getSearchBySocialSecurityNumberResults"); table2.add(numberInput, 1, 2); table2.add(hidden, 1, 3); GenericButton leitaButton = getButton(new SubmitButton(localize("tournament.search","Search"))); table2.add(leitaButton, 2, 3); if (AccessControl.isClubAdmin(modinfo)) { int union_id = ((Member) (AccessControl.getMember(modinfo))).getMainUnionID(); CheckBox checkBox = new CheckBox("search_for_member_in_union_id", "" + union_id); table2.add(iwrb.getLocalizedString("tournament.search_in_club", "Search in club only") + " ", 1, 3); table2.add(checkBox, 1, 3); } form.add(table2); add(form); } public void searchByName(IWContext modinfo, IWResourceBundle iwrb) throws SQLException { Form form = new Form(); Table table2 = new Table(2, 3); table2.setWidth(200); table2.setAlignment("center"); table2.setAlignment(2, 3, "right"); table2.mergeCells(1, 1, 2, 1); table2.mergeCells(1, 2, 2, 2); table2.add(iwrb.getLocalizedString("tournament.enter_name", "Enter name:"), 1, 1); TextArea numberInput = new TextArea("name"); numberInput.setWidth(30); numberInput.setHeight(5); HiddenInput hidden = new HiddenInput("action", "getSearchByNameResults"); table2.add(numberInput, 1, 2); table2.add(hidden, 1, 2); if (AccessControl.isClubAdmin(modinfo)) { int union_id = ((Member) (AccessControl.getMember(modinfo))).getMainUnionID(); CheckBox checkBox = new CheckBox("search_for_member_in_union_id", "" + union_id); table2.add(iwrb.getLocalizedString("tournament.search_in_club", "Search in club only") + " ", 1, 3); table2.add(checkBox, 1, 3); } GenericButton leitaButton = getButton(new SubmitButton(localize("tournament.search","Search"))); table2.add(leitaButton, 2, 3); form.add(table2); add(form); } public void getSearchByNameResults(IWContext modinfo, IWResourceBundle iwrb) throws SQLException, RemoteException { String names = modinfo.getParameter("name"); Member[] theMembers = this.findMembersByName(modinfo, names); drawTableWithMembers(modinfo, theMembers, iwrb); } public void getSearchBySocialSecurityNumberResults(IWContext modinfo, IWResourceBundle iwrb) throws SQLException, RemoteException { String socialSecurityNumbers = modinfo.getParameter("socialSecurityNumbers"); Member[] theMembers = this.findMembersBySocialSecurityNumber(modinfo, socialSecurityNumbers); drawTableWithMembers(modinfo, theMembers, iwrb); } public void drawTableWithMembers(IWContext modinfo, Member[] theMembers, IWResourceBundle iwrb) throws RemoteException { int tableHeight = 5; int numberOfMember = 0; if (theMembers != null) { numberOfMember = theMembers.length; } if (theMembers != null) { tableHeight += theMembers.length; } Form form = new Form(); Table table = new Table(); table.setBorder(0); table.setCellpadding(2); table.setCellspacing(0); table.setWidth(2, "20"); table.setWidth(4, "20"); table.setWidth(6, "20"); // table.setWidth(200); table.setAlignment("center"); table.setAlignment(1, tableHeight, "center"); table.mergeCells(1, 1, 8, 1); table.add(iwrb.getLocalizedString("tournament.search_results", "Search results"), 1, 1); form.add(table); Member member = null; Union union = null; Member[] members = null; CheckBox checker = null; boolean error = false; boolean notFound = false; boolean doSearch = true; String memberSocialNumber; String memberName; Link link = null; int memberId; int row = 1; ++row; table.add("<u>" + iwrb.getLocalizedString("tournament.social_security_number", "Social security number") + "</u>", 1, row); table.add("<u>" + iwrb.getLocalizedString("tournament.name", "Name") + "</u>", 3, row); table.add("<u>" + iwrb.getLocalizedString("tournament.club", "Club") + "</u>", 5, row); table.add("<u>" + iwrb.getLocalizedString("tournament.handicap", "Handicap") + "</u>", 7, row); if (theMembers != null) { if (theMembers.length > 0) { for (int i = 0; i < theMembers.length; i++) { ++row; memberSocialNumber = theMembers[i].getSocialSecurityNumber(); memberName = theMembers[i].getName(); memberId = theMembers[i].getID(); checker = new CheckBox("checkedMemberId_" + memberId); link = new Link("Skr� � m�t", modinfo.getRequestURI()); link.addParameter("action", "registermarkedmembers"); link.addParameter("checker", "true"); link.addParameter("member_id", memberId + ""); table.add(memberSocialNumber, 1, row); table.add(memberName, 3, row); try { union = is.idega.idegaweb.golf.business.GolfCacher.getCachedUnion(theMembers[i].getMainUnionID()); table.add(union.getAbbrevation(), 5, row); } catch (Exception e) { e.printStackTrace(System.err); table.add("-", 5, row); } try { table.add(Float.toString(theMembers[i].getHandicap()), 7, row); } catch (Exception ex) { ex.printStackTrace(System.err); table.add("-", 7, row); } //table.add(link,7,row); //table.add(checker,8,row); table.add(new HiddenInput("member_id", memberId + ""), 2, row); table.setAlignment(8, row, "right"); } ++row; ++row; table.add(getTournamentBusiness(modinfo).getBackLink(modinfo), 1, row); // table.add(this.skraButton,5,row); table.add(new HiddenInput("action", "registermarkedmembers")); table.setAlignment(5, row, "right"); table.mergeCells(5, row, 8, row); } else { ++row; table.add(iwrb.getLocalizedString("tournament.no_one_was_found", "No one was found"), 1, row); ++row; ++row; table.add(getTournamentBusiness(modinfo).getBackLink(modinfo), 1, row); } } else { ++row; table.add(iwrb.getLocalizedString("tournament.no_one_was_found", "No one was found"), 1, row); ++row; ++row; table.add(getTournamentBusiness(modinfo).getBackLink(modinfo), 1, row); } add(form); } public Member[] findMembersBySocialSecurityNumber(IWContext modinfo, String socialSecurityNumbers) throws SQLException { StringTokenizer token = new StringTokenizer(socialSecurityNumbers, " \n\r\t\f,;:.+abcdefghijklmnopqrstuvwxyz"); Vector vector = new Vector(); while (token.hasMoreTokens()) { vector.addElement(token.nextToken()); } return findMembersBySocialSecurityNumber(modinfo, vector); } public Member[] findMembersByName(IWContext modinfo, String socialSecurityNumbers) throws SQLException { StringTokenizer token = new StringTokenizer(socialSecurityNumbers, "\n\r\t\f,;:.+"); Vector vector = new Vector(); while (token.hasMoreTokens()) { vector.addElement(token.nextToken()); } return findMembersByName(modinfo, vector); } public Member[] findMembersByName(IWContext modinfo, Vector name) throws SQLException { Member[] members = null; Member[] tempMembers = null; StringTokenizer nameParts; String fullName = ""; String firstName = ""; String middleName = ""; String lastName = ""; int manyNames = 0; int numberInserted = 0; String union_id = modinfo.getParameter("search_for_member_in_union_id"); String SQLString = "Select * from member where "; String tempSQLString = ""; for (int i = 0; i < name.size(); i++) { try { manyNames = 0; fullName = ""; firstName = ""; middleName = ""; lastName = ""; tempSQLString = ""; fullName = (String) name.elementAt(i); nameParts = new StringTokenizer(fullName, " "); manyNames = nameParts.countTokens(); for (int j = 0; j < manyNames; j++) { if (j == 0) { firstName = nameParts.nextToken(); } else if (j == manyNames - 1) { lastName = nameParts.nextToken(); } else { middleName += nameParts.nextToken(); if (j != manyNames - 2) { middleName += " "; } } } switch (manyNames) { case 0 : break; case 1 : tempSQLString = "Select * from member, union_member_info where member.member_id = union_member_info.member_id AND first_name like '" + firstName + "%'"; break; case 2 : tempSQLString = "Select * from member, union_member_info where member.member_id = union_member_info.member_id AND first_name like '" + firstName + "%' and (last_name like '" + lastName + "%' OR middle_name like '" + lastName + "%')"; break; default : tempSQLString = "Select * from member, union_member_info where member.member_id = union_member_info.member_id AND first_name like '" + firstName + "%' and middle_name like '" + middleName + "%' and last_name like '" + lastName + "%'"; break; } if (!tempSQLString.equalsIgnoreCase("")) { if (union_id != null) { tempSQLString += " AND union_member_info.union_id = " + union_id + " AND union_member_info.MEMBERSHIP_TYPE = 'main'"; } tempMembers = (Member[]) ((Member) IDOLookup.instanciateEntity(Member.class)).findAll(tempSQLString); for (int g = 0; g < tempMembers.length; g++) { if (numberInserted != 0) { SQLString += " OR "; } ++numberInserted; SQLString += " member_id = " + tempMembers[g].getID(); //System.out.println("Me�limur n�mer "+tempMembers[g].getID()+" // fundinn : "+idegaTimestamp.RightNow().toSQLTimeString()); } } } catch (Exception e) { } } if (union_id != null) { } if (numberInserted != 0) { SQLString += " order by first_name, last_name, middle_name"; members = (Member[]) ((Member) IDOLookup.instanciateEntity(Member.class)).findAll(SQLString); System.out.println("Done printing array" + IWTimestamp.RightNow().toSQLTimeString()); } return members; } public Member[] findMembersBySocialSecurityNumber(IWContext modinfo, Vector socialSecurityNumbers) throws SQLException { Member[] members = null; String securityNumber; String union_id = modinfo.getParameter("search_for_member_in_union_id"); String SQLString = "Select m.* from member m, union_member_info umi where m.member_id = umi.member_id AND umi.MEMBERSHIP_TYPE = 'main' AND ("; int numberInserted = 0; for (int i = 0; i < socialSecurityNumbers.size(); i++) { try { securityNumber = (String) socialSecurityNumbers.elementAt(i); if (securityNumber.equals("")) { securityNumber = "idega_engin_kennitala"; } members = (Member[]) ((Member) IDOLookup.instanciateEntity(Member.class)).findAll("Select * from member where social_security_number like '" + securityNumber + "%' "); if (members.length > 0) { for (int j = 0; j < members.length; j++) { if (numberInserted != 0) { SQLString += " OR "; } else { ++numberInserted; } SQLString += "m.member_id = " + members[j].getID(); } } } catch (SQLException s) { s.printStackTrace(System.err); } } SQLString += ")"; if (union_id != null) { SQLString += " AND union_member_info.union_id = " + union_id + " AND union_member_info.MEMBER_STATUS = 'A'"; } //SQLString += "order by first_name,last_name,middle_name"; SQLString += " order by m.social_security_number"; try { members = (Member[]) ((Member) IDOLookup.instanciateEntity(Member.class)).findAll(SQLString); } catch (SQLException s) { } return members; } }