/*
* Created on 4.3.2004
*/
package is.idega.idegaweb.golf.clubs.presentation;
import is.idega.idegaweb.golf.presentation.GolfBlock;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
import com.idega.presentation.IWContext;
import com.idega.presentation.Image;
import com.idega.presentation.Table;
import com.idega.presentation.text.Link;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.Window;
import com.idega.util.LocaleUtil;
import com.idega.util.text.TextSoap;
/**
* @author laddi
*/
public class MembersOverview extends GolfBlock {
Connection Conn;
Statement stmt;
ResultSet RS;
public void main(IWContext modinfo) throws Exception {
try {
Conn = getConnection();
createTable(modinfo);
}
catch (Exception e) {
e.printStackTrace(System.err);
}
finally {
if (stmt != null) {
stmt.close();
}
if (RS != null) {
try {
RS.close();
}
catch (SQLException sql) {
log(sql);
}
}
if (Conn != null) {
freeConnection(Conn);
}
}
}
public void getResultSetAlphabetOrderedMembersInUnion(String findLike, String unionId, String orderBy, String status) throws SQLException {
findLike = findLike + "%";
if (orderBy != null)
orderBy = " order by " + orderBy;
StringBuffer strSQL = new StringBuffer("select member.member_id,member.first_name,member.middle_name,member.last_name,");
strSQL.append("member.email,member_info.handicap,member_info.handicap, address.street,union_member_info.member_status");
strSQL.append(" from member,member_address,address,union_member_info,member_info where ");
if (findLike.length() <= 2) {
strSQL.append("member.first_name like '");
strSQL.append(findLike);
strSQL.append("' and ");
}
strSQL.append(" union_member_info.union_id=");
strSQL.append(unionId);
strSQL.append(" and union_member_info.member_status='");
strSQL.append(status);
strSQL.append("' ");
strSQL.append("and member_info.member_id = member.member_id ");
strSQL.append("and member_address.member_id = member.member_id ");
strSQL.append("and member_address.address_id = address.address_id ");
strSQL.append("and member.member_id = union_member_info.member_id ");
strSQL.append(orderBy);
stmt = Conn.createStatement();
RS = stmt.executeQuery(strSQL.toString());
}
public int getCount(String findLike, String unionId, String orderBy) throws SQLException {
findLike = findLike + "%";
if (orderBy != null)
orderBy = " order by " + orderBy;
StringBuffer strSQL = new StringBuffer("select count(member_id)");
strSQL.append(" from member,member_address,address,union_member_info,member_info where ");
if (findLike.length() <= 2) {
strSQL.append("member.first_name like '");
strSQL.append(findLike);
strSQL.append("' and ");
}
strSQL.append(" union_member_info.union_id=");
strSQL.append(unionId);
strSQL.append(" and union_member_info.member_status='A' ");
strSQL.append("and member_info.member_id = member.member_id ");
strSQL.append("and member_address.member_id = member.member_id ");
strSQL.append("and member_address.address_id = address.address_id ");
strSQL.append("and member.member_id = union_member_info.member_id ");
strSQL.append(orderBy);
Statement stmt2 = Conn.createStatement();
ResultSet RS2 = stmt2.executeQuery(strSQL.toString());
RS2.next();
return RS2.getInt(1);
}
public void createTable(IWContext modinfo) throws Exception {
boolean admin = isAdmin();
Table table = null;
Locale locale = modinfo.getCurrentLocale();
String alphabet = null;
if (locale.equals(LocaleUtil.getIcelandicLocale())) {
alphabet = "A�BCDE�FGHI�JKLMNO�PQRSTU�VWXY�Z���";
}
else {
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
}
String toOrder = "A";
String status = "A";
String unionId = modinfo.getRequest().getParameter("union_id");
if (unionId == null) {
unionId = (String) modinfo.getSession().getAttribute("golf_union_id");
}
String[] colNames = new String[]{getResourceBundle().getLocalizedString("member.name", "Name"), getResourceBundle().getLocalizedString("member.address", "Address"), getResourceBundle().getLocalizedString("member.email", "Email"), getResourceBundle().getLocalizedString("member.handicap", "Handicap")};
/*if (admin)
colNames = new String[]{getResourceBundle().getLocalizedString("member.name", "Name"), getResourceBundle().getLocalizedString("member.address", "Address"), getResourceBundle().getLocalizedString("member.email", "Email"), getResourceBundle().getLocalizedString("member.handicap", "Handicap"), getResourceBundle().getLocalizedString("member.delete", "Delete"), getResourceBundle().getLocalizedString("member.more", "More")};
else
colNames = new String[]{getResourceBundle().getLocalizedString("member.name", "Name"), getResourceBundle().getLocalizedString("member.address", "Address"), getResourceBundle().getLocalizedString("member.email", "Email"), getResourceBundle().getLocalizedString("member.handicap", "Handicap")};
*/
Text text = null;
Image greittImage = getBundle().getImage("shared/clubs/members/greitt.gif");
Image infoImage = getBundle().getImage("shared/clubs/members/info.gif");
Text noHandicap = new Text("-");
noHandicap.setFontSize(2);
int colNum = 4;
if (admin)
colNum = 6;
Text headerText = new Text(getResourceBundle().getLocalizedString("member.members", "Members"), true, false, false);
headerText.setFontSize(3);
headerText.setFontColor("#FFFFFF");
Form form = new Form();
if (modinfo.isParameterSet("toOrder"))
toOrder = modinfo.getParameter("toOrder");
if (modinfo.isParameterSet("statusdrp"))
status = modinfo.getParameter("statusdrp");
else if (modinfo.isParameterSet("status"))
status = modinfo.getParameter("status");
getResultSetAlphabetOrderedMembersInUnion(toOrder, unionId, "first_name, middle_name, last_name", status);
table = new Table();
table.setWidth("100%");
table.mergeCells(1, 1, colNum, 1);
table.mergeCells(1, 2, colNum, 2);
table.mergeCells(1, 3, colNum, 3);
table.setAlignment(1, 1, "left");
table.setAlignment(1, 3, "center");
table.setAlignment(colNum, 3, "right");
table.setColor(1, 1, "#FFFFFF");
table.setColor(1, 2, "#336660");
table.setRowColor(3, "#CEDFD0");
table.add(headerText, 1, 2);
table.add(new HiddenInput("toOrder", toOrder));
table.add(new HiddenInput("status", status));
table.add(new HiddenInput("union_id", unionId));
Table alphabetTable = new Table(3, 1);
alphabetTable.setWidth(Table.HUNDRED_PERCENT);
alphabetTable.setWidth(2, 1, 20);
alphabetTable.setAlignment(1, 1, Table.HORIZONTAL_ALIGN_CENTER);
alphabetTable.setAlignment(3, 1, Table.HORIZONTAL_ALIGN_RIGHT);
table.add(alphabetTable, 1, 3);
for (int i = 0; i < alphabet.length(); i++) {
Character charToString = new Character(alphabet.charAt(i));
Link link = new Link(charToString.toString());
link.addParameter("toOrder", charToString.toString());
link.addParameter("status", status);
link.addParameter("union_id", unionId);
alphabetTable.add(link, 1, 1);
alphabetTable.add("-", 1, 1);
}
Link link = new Link(getResourceBundle().getLocalizedString("member.all", "All"));
link.addParameter("toOrder", "all");
link.addParameter("union_id", unionId);
link.addParameter("status", status);
table.add(link, 1, 3);
if (admin) {
DropdownMenu drp = statusDropdown("statusdrp", status);
drp.setToSubmit();
alphabetTable.add(drp, 3, 1);
}
for (int i = 0; i < colNum; i++) {
table.setColor(i + 1, 4, "#ADCAB1");
if (i < colNames.length) {
text = new Text(colNames[i]);
text.setBold();
table.add(text, i + 1, 4);
}
}
String memberId = "";
String email;
String address;
String handicap;
String lastMember = "0";
DecimalFormat handicapFormat = new DecimalFormat("0.0");
DecimalFormatSymbols symbols = handicapFormat.getDecimalFormatSymbols();
symbols.setDecimalSeparator('.');
handicapFormat.setDecimalFormatSymbols(symbols);
int i = 5;
while (RS.next()) {
lastMember = memberId;
memberId = RS.getString("member_id");
if (!lastMember.equalsIgnoreCase(memberId)) {
email = RS.getString("email") != null ? RS.getString("email") : "-";
address = RS.getString("street") != null ? RS.getString("street") : "-";
handicap = RS.getString("handicap") != null ? RS.getString("handicap") : "100.0";
if (handicap.equals("100.0"))
handicap = "-";
else
handicap = TextSoap.singleDecimalFormat(handicap);
if (address.length() > 15)
address = address.substring(0, 15);
if (email.length() > 15)
email = email.substring(0, 15);
StringBuffer nameBuffer = new StringBuffer();
nameBuffer.append(RS.getString("first_name"));
nameBuffer.append(" ");
if (RS.getString("middle_name") != null)
nameBuffer.append(RS.getString("middle_name"));
nameBuffer.append(" ");
if (RS.getString("last_name") != null)
nameBuffer.append(RS.getString("last_name"));
table.add(bodyText(nameBuffer.toString()), 1, i);
table.add(bodyText(address), 2, i);
table.add(bodyText(email), 3, i);
table.add(bodyText(handicap), 4, i);
if (admin) {
table.setAlignment(5, i, "center");
table.add(insertInfoImageLink(getBundle().getImage("shared/handicap/trash.gif"), "member_id", memberId, MemberDelete.class), 5, i);
table.setAlignment(6, i, "center");
table.add(insertInfoImageLink(infoImage, "member_id", memberId, MemberEditor.class), 6, i);
}
i++;
}
}
if (admin) {
Link newMember = new Link(getResourceBundle().getImage("tabs/newmember1.gif"));
newMember.setWindowToOpen(MemberEditor.class);
table.add(newMember, 1, 1);
Window tarifWindow = new Window(getResourceBundle().getLocalizedString("member.payments", "Payments"), 600, 600, "/tarif/tarif.jsp");
tarifWindow.setLocation(true);
tarifWindow.setStatus(true);
tarifWindow.setResizable(true);
Link linkur = new Link(getResourceBundle().getImage("tabs/payments1.gif"), tarifWindow);
Window listWindow = new Window(getResourceBundle().getLocalizedString("member.lists", "Lists"), 600, 600, "/reports/index.jsp");
listWindow.setLocation(false);
listWindow.setStatus(true);
listWindow.setResizable(true);
listWindow.setMenubar(true);
Link linkur3 = new Link(getResourceBundle().getImage("tabs/lists1.gif"), listWindow);
Window searchWindow = new Window("", 400, 280);
searchWindow.add(new MemberSearcher());
searchWindow.setResizable(true);
Image selectMemberImage = getResourceBundle().getImage("tabs/search1.gif");
Link selectMember = new Link(selectMemberImage, searchWindow);
selectMember.clearParameters();
table.add(linkur, 1, 1);
table.add(linkur3, 1, 1);
table.add(selectMember, 1, 1);
}
form.add(table);
add(form);
}
public Link insertInfoImageLink(Image image, String URLParamName, String URLParamValue, Class windowClass) {
image.setBorder(0);
Link myLink = new Link(image);
myLink.setWindowToOpen(windowClass);
myLink.addParameter(URLParamName, URLParamValue);
return myLink;
}
public Text bodyText(String s) {
Text T = new Text();
if (s != null) {
T = new Text(s);
//T.setFontColor("#000000");
//T.setFontSize(1);
}
return T;
}
public DropdownMenu statusDropdown(String name, String selected) {
DropdownMenu drp = new DropdownMenu(name);
drp.addMenuElement("A", getResourceBundle().getLocalizedString("member.active", "Virkur"));
drp.addMenuElement("I", getResourceBundle().getLocalizedString("member.inactive", "�virkur"));
drp.addMenuElement("W", getResourceBundle().getLocalizedString("member.waiting", "� bi�"));
drp.addMenuElement("Q", getResourceBundle().getLocalizedString("member.retired", "H�ttur"));
drp.addMenuElement("D", getResourceBundle().getLocalizedString("member.deceased", "L�tinn"));
drp.setSelectedElement(selected);
return drp;
}
public Text bodyText(int i) {
return bodyText(String.valueOf(i));
}
}