/*
* Created on 4.3.2004
*/
package is.idega.idegaweb.golf.clubs.presentation;
import is.idega.idegaweb.golf.access.LoginTable;
import is.idega.idegaweb.golf.business.GolfCacher;
import is.idega.idegaweb.golf.entity.Address;
import is.idega.idegaweb.golf.entity.Card;
import is.idega.idegaweb.golf.entity.Group;
import is.idega.idegaweb.golf.entity.Member;
import is.idega.idegaweb.golf.entity.MemberHome;
import is.idega.idegaweb.golf.entity.MemberInfo;
import is.idega.idegaweb.golf.entity.Phone;
import is.idega.idegaweb.golf.entity.Scorecard;
import is.idega.idegaweb.golf.entity.Startingtime;
import is.idega.idegaweb.golf.entity.Stroke;
import is.idega.idegaweb.golf.entity.Tournament;
import is.idega.idegaweb.golf.entity.Union;
import is.idega.idegaweb.golf.entity.UnionMemberInfo;
import is.idega.idegaweb.golf.templates.page.GolfWindow;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import javax.ejb.FinderException;
import com.idega.data.EntityFinder;
import com.idega.data.IDOLookup;
import com.idega.presentation.Editor;
import com.idega.presentation.IWContext;
import com.idega.presentation.Image;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.Table;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.CloseButton;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.RadioButton;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
/**
* @author laddi
*/
public class MemberDelete extends GolfWindow {
public MemberDelete() {
setWidth(690);
setHeight(610);
setTitle("Member editor");
add(new Delete());
}
public class Delete extends Editor {
Member eMember = null;
String OkImageUrl = "/pics/formtakks/saekja.gif";
String SaveImageUrl = "/pics/formtakks/vista.gif";
String CloseImageUrl = "/pics/formtakks/loka.gif";
List eMembers = null;
List eUMIs = null;
String sSocSecNum = null;
protected PresentationObject makeLinkTable(int l) {
return new Text("");
}
protected void control(IWContext modinfo) {
String member_id = modinfo.getParameter("member_id");
String SSN = modinfo.getParameter("ssn");
String hSSN = modinfo.getParameter("hssn");
this.makeView();
if (isAdmin) {
try {
if (modinfo.getParameter("save") != null
|| modinfo.getParameter("save.x") != null) {
if (modinfo.getParameter("rb") != null && hSSN != null) {
/** @todo */
int iMemberId = Integer.parseInt(modinfo.getParameter("rb"));
eMembers = EntityFinder.findAllByColumnEquals((Member) IDOLookup
.instanciateEntity(Member.class), "social_security_number",
hSSN);
if (eMembers != null) {
deleteMembers(eMembers, iMemberId);
eMembers = EntityFinder.findAllByColumnEquals((Member) IDOLookup
.instanciateEntity(Member.class), "social_security_number",
hSSN);
}
}
} else if (modinfo.getParameter("ok") != null
|| modinfo.getParameter("ok.x") != null
|| modinfo.getParameter("ssn") != null) {
String ssn = modinfo.getParameter("ssn").trim();
if (ssn != null && ssn.length() > 5) {
sSocSecNum = ssn;
add(sSocSecNum);
eMembers = EntityFinder.findAllByColumnEquals((Member) IDOLookup
.instanciateEntity(Member.class), "social_security_number",
ssn);
}
} else if (member_id != null) {
eMember = ((MemberHome) IDOLookup.getHomeLegacy(Member.class))
.findByPrimaryKey(Integer.parseInt(member_id));
} else if (SSN != null) {
eMembers = EntityFinder
.findAllByColumnEquals((Member) IDOLookup
.instanciateEntity(Member.class), "social_security_number",
SSN);
} else
add("enginn valinn");
this.addLinks(formatText("F�lagi"));
this.addMain(doView());
this.setBorder(2);
} catch (SQLException sql) {
add("sql vandr��i");
sql.printStackTrace();
} catch (FinderException sql) {
add("sql vandr��i");
sql.printStackTrace();
}
} else
this.addMain(formatText("Ekki R�ttindi"));
}
private PresentationObject doView() {
Table T = new Table();
T.setCellpadding(0);
T.setCellspacing(0);
T.setWidth("100%");
TextInput SSN = new TextInput("ssn");
SSN.setMaxlength(10);
SSN.setLength(10);
T.add(SSN, 1, 1);
if (sSocSecNum != null) T.add(new HiddenInput("hssn", sSocSecNum));
setTextFontColor("#FF0000");
T.add(formatText(" Velji� r�ttan me�lim hinum ver�ur eytt :"), 1, 3);
setTextFontColor(DarkColor);
T.add(getMemberTable(), 1, 5);
SubmitButton ok = new SubmitButton(new Image(OkImageUrl), "ok");
SubmitButton save = new SubmitButton(new Image(SaveImageUrl), "save");
CloseButton close = new CloseButton(new Image(CloseImageUrl));
T.add(ok, 1, 1);
T.add(save, 1, 7);
T.add(close, 1, 7);
Form myForm = new Form();
myForm.add(T);
return myForm;
}
public Table getMemberTable() {
Table bTable = new Table();
bTable.setWidth("100%");
if (eMembers != null) {
int len = eMembers.size();
Table T = new Table(5, len + 1);
T.setCellpadding(0);
T.setCellspacing(3);
T.setColumnAlignment(1, "left");
T.setColumnAlignment(2, "left");
//T.setWidth("100%");
T.add(formatText("Nafn"), 2, 1);
T.add(formatText("Kennitala"), 3, 1);
T.add(formatText("Kl�bbar"), 4, 1);
T.add(formatText("Forgj�f"), 5, 1);
Member eMb;
int iUnId;
String color = DarkColor;
List umis = null;
for (int i = 0; i < len; i++) {
eMb = (Member) eMembers.get(i);
MemberInfo MI = eMb.getMemberInfo();
try {
eUMIs = EntityFinder.findAllByColumn((UnionMemberInfo) IDOLookup
.instanciateEntity(UnionMemberInfo.class), "member_id", eMb
.getID());
} catch (SQLException sql) {
}
RadioButton RB = new RadioButton("rb", String.valueOf(eMb.getID()));
T.add(RB, 1, i + 2);
T.add(formatText(eMb.getName()), 2, i + 2);
T.add(formatText(eMb.getSocialSecurityNumber()), 3, i + 2);
if (eUMIs != null) T.add(getUMItable(eUMIs), 4, i + 2);
if (MI != null)
T.add(formatText(String.valueOf(MI.getHandicap())), 5, i + 2);
eUMIs = null;
}
bTable.add(T);
}
return bTable;
}
private PresentationObject getUMItable(List eUmis) {
int len = eUmis.size();
Table T = new Table(len, 1);
T.setBorder(1);
T.setCellpadding(0);
T.setCellspacing(0);
UnionMemberInfo umi;
Union U;
for (int i = 0; i < len; i++) {
umi = (UnionMemberInfo) eUmis.get(i);
U = GolfCacher.getCachedUnion(umi.getUnionID());
T.add(formatText(U.getAbbrevation() + " "), i + 1, 1);
T.add(formatText(mbsShipMap(umi.getMembershipType())), i + 1, 1);
T.setWidth(i + 1, 1, "70");
}
return T;
}
private void deleteMembers(List eMembers, int notdelete) {
for (int i = 0; i < eMembers.size(); i++) {
Member m = (Member) eMembers.get(i);
if (m.getID() != notdelete) {
try {
//m.debug = true;
delete(m);
} catch (SQLException sql) {
System.err.println("MemberCorrect:");
sql.printStackTrace();
}
}
}
}
private String mbsShipMap(String type) {
if ("main".equalsIgnoreCase(type))
return "A�alkl.";
else if ("sub".equalsIgnoreCase(type))
return "Aukakl.";
else
return "";
}
public Text headerText(String s) {
Text T = new Text();
if (s != null) {
T = new Text(s);
T.setFontColor(this.DarkColor);
T.setFontSize(this.fontSize);
T.setBold();
}
return T;
}
public Text headerText(int i) {
return headerText(String.valueOf(i));
}
public void delete(Member M) throws SQLException {
Connection conn = null;
Statement Stmt = null;
boolean debug = true;
try {
conn = com.idega.util.database.ConnectionBroker.getConnection();
try {
Address address = (Address) IDOLookup
.instanciateEntity(Address.class);
Address[] addresses = (Address[]) M.findReverseRelated(address);
Stmt = conn.createStatement();
Stmt.executeUpdate("delete from "
+ M.getNameOfMiddleTable(M, address) + " where "
+ M.getIDColumnName() + "='" + getID() + "'");
for (int i = 0; i < addresses.length; i++) {
addresses[i].delete();
}
} catch (SQLException ex) {
if (debug) ex.printStackTrace();
}
try {
Phone phone = (Phone) IDOLookup.instanciateEntity(Phone.class);
Phone[] phones = (Phone[]) M.findReverseRelated(phone);
Stmt = conn.createStatement();
Stmt.executeUpdate("delete from " + M.getNameOfMiddleTable(M, phone)
+ " where " + M.getIDColumnName() + "='" + M.getID() + "'");
for (int i = 0; i < phones.length; i++) {
phones[i].delete();
}
} catch (SQLException ex) {
if (debug) ex.printStackTrace();
}
try {
Card card = (Card) IDOLookup.instanciateEntity(Card.class);
Card[] cards = (Card[]) M.findReverseRelated(card);
Stmt = conn.createStatement();
Stmt.executeUpdate("delete from " + M.getNameOfMiddleTable(M, card)
+ " where " + M.getIDColumnName() + "='" + M.getID() + "'");
for (int i = 0; i < cards.length; i++) {
cards[i].delete();
}
} catch (SQLException ex) {
if (debug) ex.printStackTrace();
}
try {
Tournament tournament = (Tournament) IDOLookup
.instanciateEntity(Tournament.class);
Stmt = conn.createStatement();
Stmt.executeUpdate("delete from "
+ M.getNameOfMiddleTable(tournament, M) + " where "
+ M.getIDColumnName() + "='" + M.getID() + "'");
} catch (SQLException ex) {
if (debug) ex.printStackTrace();
}
try {
Group group = (Group) IDOLookup.instanciateEntity(Group.class);
Stmt = conn.createStatement();
Stmt.executeUpdate("delete from " + M.getNameOfMiddleTable(group, M)
+ " where " + M.getIDColumnName() + "='" + M.getID() + "'");
} catch (SQLException ex) {
if (debug) ex.printStackTrace();
}
try {
Union union = (Union) IDOLookup.instanciateEntity(Union.class);
Stmt = conn.createStatement();
Stmt.executeUpdate("delete from " + M.getNameOfMiddleTable(union, M)
+ " where " + M.getIDColumnName() + "='" + M.getID() + "'");
} catch (SQLException ex) {
if (debug) ex.printStackTrace();
}
try {
MemberInfo info = M.getMemberInfo();
//MemberInfo info = new MemberInfo(M.getID());
if (info != null) info.delete();
} catch (SQLException ex) {
if (debug) ex.printStackTrace();
}
//Warn against if there are others with the same family
/*
* try{ Family family = M.getFamily(); family.delete(); }
* catch(SQLException ex){ if(debug) ex.printStackTrace(); }
*/
/*
* try{ ImageEntity image = M.getImage(); image.delete(); }
* catch(SQLException ex){ if(debug) ex.printStackTrace(); }
*/
try {
Scorecard[] scores = (Scorecard[]) ((Scorecard) IDOLookup
.instanciateEntity(Scorecard.class)).findAllByColumnEquals("member_id",
M.getID());
for (int i = 0; i < scores.length; i++) {
Stroke stroke = (Stroke) IDOLookup.instanciateEntity(Stroke.class);
Stroke[] strokes = (Stroke[]) stroke.findAllByColumnEquals(
"scorecard_id", scores[i].getID());
for (int n = 0; n < strokes.length; n++) {
strokes[n].delete();
}
scores[i].delete();
}
} catch (SQLException ex) {
if (debug) ex.printStackTrace();
}
try {
Startingtime time = (Startingtime) IDOLookup
.instanciateEntity(Startingtime.class);
Startingtime[] times = (Startingtime[]) time.findAllByColumnEquals(
"member_id", M.getID());
for (int i = 0; i < times.length; i++) {
int id = times[i].getID();
Stmt = conn.createStatement();
Stmt
.executeUpdate("delete from tournament_startingtime where STARTINGTIME_ID ='"
+ id + "'");
times[i].delete();
}
} catch (SQLException ex) {
if (debug) ex.printStackTrace();
}
try {
LoginTable[] login = (LoginTable[]) ((LoginTable) IDOLookup
.instanciateEntity(LoginTable.class)).findAllByColumnEquals(
"member_id", this.getID());
for (int i = 0; i < login.length; i++) {
login[i].delete();
}
} catch (SQLException ex) {
if (debug) ex.printStackTrace();
}
try {
Member m = ((MemberHome) IDOLookup.getHomeLegacy(Member.class))
.findByPrimaryKey(M.getID());
m.delete();
} catch (FinderException ex) {
if (debug) ex.printStackTrace();
}
} finally {
if (Stmt != null) {
Stmt.close();
}
if (conn != null) {
com.idega.util.database.ConnectionBroker.freeConnection(conn);
}
}
}
}
}