/* * Created on 4.3.2004 */ package is.idega.idegaweb.golf.clubs.presentation; import java.io.PrintWriter; import java.util.StringTokenizer; import java.util.Vector; import com.idega.data.IDOLookup; import com.idega.presentation.IWContext; import com.idega.presentation.Table; import com.idega.presentation.ui.Form; import com.idega.presentation.ui.RadioButton; import com.idega.presentation.ui.SubmitButton; import com.idega.presentation.ui.TextInput; import com.idega.presentation.text.Link; import com.idega.presentation.text.Text; import is.idega.idegaweb.golf.entity.Family; import is.idega.idegaweb.golf.entity.Member; import is.idega.idegaweb.golf.presentation.GolfBlock; /** * @author laddi */ public class MemberFamily extends GolfBlock { public void main(IWContext modinfo) throws Exception { try { if (modinfo.getRequest().getParameter("rdbFamily") == null) showFamilyList(modinfo); if (modinfo.getRequest().getParameter("cmd") != null) { String familyId = modinfo.getRequest().getParameter("rdbFamily"); if (modinfo.getRequest().getParameter("cmd").equals("submit")) { modinfo.getSession().setAttribute("family_id", familyId); getParentPage().close(); } } } catch (Exception e) { System.out.print(e.getMessage()); } } public void showFamilyList(IWContext modinfo) throws Exception { Vector vError = new Vector(); boolean isResult = true; int length = 0; Family[] famArr = new Family[0]; Form form = new Form(); String orderName = null; String unionId = null; Table table = null; Table searchTable = new Table(2, 2); RadioButton rbName = new RadioButton("rdbToFind", "nafn"); rbName.keepStatusOnAction(); RadioButton rbKt = new RadioButton("rdbToFind", "kennitala"); rbKt.keepStatusOnAction(); TextInput input = new TextInput("toFind"); input.keepStatusOnAction(); searchTable.add(input, 1, 2); searchTable.add(rbName, 1, 1); searchTable.add("Nafn", 1, 1); searchTable.add(rbKt, 1, 1); searchTable.add("Kennitala", 1, 1); searchTable.add(new SubmitButton("Leita"), 2, 2); // searchTable.setBorder(1); String alphabet = "A�BCDE�FGHI�JKLMNO�PQRSTUVXY�Z���"; PrintWriter out = modinfo.getResponse().getWriter(); if (modinfo.getSession().getAttribute("golf_union_id") == null) { vError.addElement("F�lagsn�mer"); //modinfo.getRequest().getSession().setAttribute("error", vError); //modinfo.getResponse().sendRedirect("membererror.jsp"); } else unionId = (String) modinfo.getSession().getAttribute("golf_union_id"); orderName = modinfo.getRequest().getParameter("letter"); if (modinfo.getRequest().getParameter("rdbToFind") == null) rbName.setSelected(); if (orderName != null) famArr = findAllFamilies(modinfo, unionId, orderName); else if (modinfo.getRequest().getParameter("toFind") != null) { if (modinfo.getRequest().getParameter("rdbToFind").equalsIgnoreCase("nafn")) famArr = this.findByMemberName(modinfo.getRequest().getParameter("toFind"), unionId); else famArr = this.findBySocialSecurityNumber(modinfo.getRequest().getParameter("toFind"), unionId); } //skipta array-inu upp i tvo jafna helminga length = famArr.length / 2; //ef �tkoman �r deilingunni var oddatala, �� b�ta 1 vi� if ((famArr.length % 2) > 0) length++; Text text = new Text("Fj�lskyldur", true, true, false); text.setFontSize(3); text.setFontColor("red"); table = new Table(4, length + 5); table.mergeCells(1, 1, 4, 1); table.add(searchTable, 1, 1); table.setHorizontalZebraColored("white", "#ADBDB3"); table.mergeCells(1, 2, 4, 2); table.add(text, 1, 2); table.setAlignment("center"); Table outerTable = new Table(1, 1); table.setCellpadding(0); table.setCellspacing(0); //table.setBorder(1); //outerTable.setBorder(1); for (int i = 0; i < alphabet.length(); i++) { Character charToString = new Character(alphabet.charAt(i)); outerTable.add(new Link(charToString.toString(), modinfo.getRequest().getRequestURI() + "?letter=" + charToString.toString()), 1, 1); if (i != alphabet.length() - 1) outerTable.add("-", 1, 1); } outerTable.add(table, 1, 1); outerTable.setAlignment("center"); //fyrri helmingur arraysins fer � fyrstu tvo d�lkana int i = 0; for (; i < length; i++) { table.add(new RadioButton("rdbFamily", String.valueOf(famArr[i].getID())), 1, i + 4); table.add(famArr[i].getName(), 2, i + 4); } //n�sti helmingur arraysins fer � fyrstu tvo n�stu d�lkana int j = 0; for (; i < famArr.length; j++) { table.add(new RadioButton("rdbFamily", String.valueOf(famArr[i].getID())), 3, j + 4); table.add(famArr[i].getName(), 4, j + 4); i++; } table.setRowAlignment(j + 5, "right"); if (famArr.length > 0) table.add(new SubmitButton("Velja"), 4, j + 5); form.add(outerTable); form.setAction(modinfo.getRequest().getRequestURI() + "?cmd=submit"); add(form); } private Family[] findAllFamilies(IWContext modinfo, String unionId, String nameLike) { Family family = (Family) IDOLookup.instanciateEntity(Family.class); Family[] famArr = null; try { famArr = (Family[]) family.findAllByColumnOrdered("union_id", unionId, "name", nameLike + "%", "name"); } catch (Exception e) { try { modinfo.getResponse().getWriter().print(e.getMessage()); } catch (Exception err) { err.printStackTrace(System.err); } } return famArr; } private Family[] findBySocialSecurityNumber(String num) throws Exception { Member member = (Member) IDOLookup.instanciateEntity(Member.class); Member[] memberArr = null; Family[] familyArr = null; try { memberArr = (Member[]) member.findAllByColumnEquals("social_security_number", num); familyArr = getFamilies(memberArr); } catch (Exception e) { e.printStackTrace(); return null; } return familyArr; } private Family[] findBySocialSecurityNumber(String num, String unionId) throws Exception { Member member = (Member) IDOLookup.instanciateEntity(Member.class); Member[] memberArr = null; Family[] familyArr = null; try { memberArr = (Member[]) member.findAll("select distinct * from member, family where member.family_id = family.family_id and family.union_id = '" + unionId + "' and member.social_security_number = '" + num + "'"); familyArr = getFamilies(memberArr); } catch (Exception e) { e.printStackTrace(); return null; } return familyArr; } private Family[] findByMemberName(String name, String unionId) throws Exception { Member member = (Member) IDOLookup.instanciateEntity(Member.class); Member[] memberArr = null; Family[] familyArr = null; String firstName = ""; String middleName = ""; String lastName = ""; StringTokenizer token = new StringTokenizer(name); try { if (token.countTokens() > 2) { firstName = (String) token.nextElement(); middleName = (String) token.nextElement(); lastName = (String) token.nextElement(); memberArr = (Member[]) member.findAll("select * from member, family where member.family_id = family.family_id and family.union_id = '" + unionId + "' and member.first_name like '" + firstName + "' and member.middle_name like '" + middleName + "' and member.last_name like '" + lastName + "'"); familyArr = getFamilies(memberArr); } else if (token.countTokens() > 1) { firstName = (String) token.nextElement(); lastName = (String) token.nextElement(); Member[] tmpArr = (Member[]) member.findAll("select * from member, family where member.family_id = family.family_id and family.union_id = '" + unionId + "' and member.first_name like '" + firstName + "' and member.middle_name like '" + lastName + "%'"); memberArr = (Member[]) member.findAll("select * from member, family where member.family_id = family.family_id and family.union_id = '" + unionId + "' and member.first_name like '" + firstName + "' and member.last_name like '" + lastName + "%'"); memberArr = (Member[]) joinArrays(tmpArr, memberArr); familyArr = getFamilies(memberArr); } else if (token.countTokens() > 0) { firstName = (String) token.nextElement(); memberArr = (Member[]) member.findAll("select * from member, family where member.family_id = family.family_id and family.union_id = '" + unionId + "' and member.first_name like '" + firstName + "%'"); familyArr = getFamilies(memberArr); } } catch (Exception e) { e.printStackTrace(); } return familyArr; } public Member[] joinArrays(Member[] p1, Member[] p2) throws Exception { int size = (p1.length + p2.length); Member[] returnEntity = new Member[size]; int i = 0; try { for (; i < p1.length; i++) { returnEntity[i] = p1[i]; } i++; for (int j = 0; j < p2.length; j++) { returnEntity[i] = p2[j]; i++; } } catch (ArrayIndexOutOfBoundsException e) { e.printStackTrace(); } return returnEntity; } public Family[] getFamilies(Member[] memberArr) { if (memberArr == null) return new Family[0]; Family[] familyArr = new Family[memberArr.length]; for (int i = 0; i < memberArr.length; i++) { //familyArr[i] = memberArr[i].getFamily(); } return familyArr; } }