package is.idega.idegaweb.golf.service;
import is.idega.idegaweb.golf.entity.Group;
import is.idega.idegaweb.golf.entity.GroupHome;
import is.idega.idegaweb.golf.entity.Member;
import is.idega.idegaweb.golf.entity.Union;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Vector;
import javax.ejb.FinderException;
import com.idega.data.IDOLookup;
import com.idega.presentation.IWContext;
import com.idega.presentation.Table;
import com.idega.presentation.ui.CloseButton;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HeaderTable;
import com.idega.presentation.ui.Parameter;
import com.idega.presentation.ui.SelectionBox;
import com.idega.presentation.ui.SubmitButton;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author �gir
* @version 1.0
*/
public class GroupMemberRemoveWindow extends com.idega.presentation.ui.Window{
private Member member = null;
private Union union;
private SelectionBox selectGroups;
private String headerText = "F�ra �r flokki";
private boolean isAdministrator = false;
private String[] selectGroupsValues = new String[0];
public GroupMemberRemoveWindow(Member mem, Union uni, boolean isAdmin)throws java.sql.SQLException {
construct(mem, uni, isAdmin);
setTitle("F�ra �r flokki");
setWidth(170);
this.setHeight(255);
setScrollbar(false);
}
public SelectionBox getSelectionGroups() {
return this.selectGroups;
}
public void main(IWContext modinfo) {
this.empty();
add(getInputTable(modinfo));
}
public Form getInputTable(IWContext modinfo){
Form form = new Form();
try {
//form.setAction(modinfo.getRequest().getRequestURI()+"?cmd=remove");
form.add(new Parameter("cmd","remove"));
HeaderTable hTable = new HeaderTable();
hTable.setHeaderText(headerText);
Table table = new Table(2, 2);
table.mergeCells(1, 1, 2, 1);
table.add(new CloseButton("Loka"), 1, 2);
hTable.add(table);
if(member.getGroups().length > 0) {
table.add(selectGroups, 1, 1);
table.add(new SubmitButton("Sl�ta fr�"), 2, 2);
}
else {
table.add("Enginn flokkur skr��ur", 1, 1);
}
if(modinfo.getRequest().getParameter("cmd") != null) {
remove(modinfo);
setParentToReload();
close();
}
form.add(hTable);
}
catch(Exception e) {
e.printStackTrace();
}
return form;
}
public void remove(IWContext modinfo)throws SQLException, IOException, FinderException {
selectGroupsValues = modinfo.getRequest().getParameterValues(((Group)IDOLookup.instanciateEntity(Group.class)).getEntityName());
for(int i = 0; i < selectGroupsValues.length; i++) {
Group gr = ((GroupHome) IDOLookup.getHomeLegacy(Group.class)).findByPrimaryKey(Integer.parseInt(selectGroupsValues[i]));
gr.removeFrom(member);
}
}
private void construct(Member mem, Union uni, boolean isAmin) {
try
{
member = mem;
union = uni;
isAdministrator = isAmin;
Group group = (Group) IDOLookup.instanciateEntity(Group.class);
Group[] groupArr = null;
Group[] grArr = null;
if(isAdministrator) {
grArr = (Group[]) group.findAll("select group_.* from group_, union_group, group_member where member_id = '"+member.getID()+"' and group_.group_id = group_member.group_id and union_group.group_id = group_member.group_id and union_group.union_id = 3");
}
else {
grArr = (Group[]) group.findAll("select group_.* from group_, union_group, group_member where member_id = '"+member.getID()+"' and group_.group_id = group_member.group_id and union_group.group_id = group_member.group_id and union_group.union_id = 3 and group_.group_type not like 'accesscontrol'");
}
groupArr = (Group[]) group.findAll("select group_.* from group_, union_group, group_member where member_id = '"+member.getID()+"' and group_.group_id = group_member.group_id and union_group.group_id = group_member.group_id and union_group.union_id = "+union.getID());
groupArr = joinArrays(grArr, groupArr);
selectGroups = new SelectionBox(groupArr);
selectGroups.setHeight(10);
groupArr = member.getGroups();
}
catch(Exception e ) {
e.printStackTrace();
}
}
public Group[] joinArrays(Group[] p1, Group[] p2) {
Vector v = new Vector();
for(int i = 0; i < p1.length; i++) {
v.add(p1[i]);
}
for(int i = 0; i < p2.length; i++) {
v.add(p2[i]);
}
Group[] returnEntity = new Group[v.size()];
for(int i = 0; i < v.size(); i++) {
returnEntity[i] = (Group) v.get(i);
}
return returnEntity;
}
}