package is.idega.idegaweb.campus.block.phone.presentation;
import is.idega.idegaweb.campus.block.phone.business.PhoneFinder;
import is.idega.idegaweb.campus.block.phone.data.CampusPhone;
import is.idega.idegaweb.campus.presentation.CampusBlock;
import java.rmi.RemoteException;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import javax.ejb.FinderException;
import com.idega.block.building.data.Apartment;
import com.idega.block.building.data.ApartmentHome;
import com.idega.block.building.data.ApartmentSubcategory;
import com.idega.block.building.data.ApartmentSubcategoryHome;
import com.idega.block.building.data.ApartmentType;
import com.idega.block.building.data.ApartmentTypeHome;
import com.idega.block.building.data.ApartmentView;
import com.idega.block.building.data.ApartmentViewHome;
import com.idega.block.building.data.Building;
import com.idega.block.building.data.BuildingEntity;
import com.idega.block.building.data.BuildingHome;
import com.idega.block.building.data.Complex;
import com.idega.block.building.data.ComplexHome;
import com.idega.block.building.data.Floor;
import com.idega.block.building.data.FloorHome;
import com.idega.data.IDOLookup;
import com.idega.event.IWPageEventListener;
import com.idega.idegaweb.IWException;
import com.idega.presentation.IWContext;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.Table;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
import com.idega.util.IWTimestamp;
/**
* Title: Description: Copyright: Copyright (c) 2000-2001 idega.is All Rights
* Reserved Company: idega
*
* @author <a href="mailto:aron@idega.is">Aron Birkir</a>
* @version 1.1
*/
public class CampusPhones extends CampusBlock implements IWPageEventListener {
protected final int ACT1 = 1, ACT2 = 2, ACT3 = 3, ACT4 = 4, ACT5 = 5;
private String sCLBU = "-1", sCLFL = "-1", sCLCX = "-1", sCLTP = "-1",
sCLCT = "-1", sORDER = "-1";
private final String prmCx = "cl_clx", prmBu = "cl_bu", prmFl = "cl_fl",
prmCt = "cl_ct", prmTp = "cl_tp", prmOrder = "ct_or";
private final String sessCx = "s_clx2", sessBu = "s_bu2", sessFl = "s_fl2",
sessCt = "s_ct2", sessTp = "s_tp2", sessOrder = "s_or2";
private String[] prmArray = { prmCx, prmBu, prmFl, prmCt, prmTp, prmOrder };
private String[] sessArray = { sessCx, sessBu, sessFl, sessCt, sessTp,
sessOrder };
private Integer[] iValues = { Integer.valueOf(sCLBU),
Integer.valueOf(sCLFL), Integer.valueOf(sCLCX),
Integer.valueOf(sCLCT), Integer.valueOf(sCLTP),
Integer.valueOf(sORDER) };
protected boolean isAdmin = false;
private boolean fetch = false;
public CampusPhones() {
super();
}
public String getLocalizedNameKey() {
return "campus_phones";
}
public String getLocalizedNameValue() {
return "Phones";
}
protected void control(IWContext iwc) {
fetch = false;
for (int i = 0; i < prmArray.length; i++) {
if (iwc.getParameter(prmArray[i]) != null) {
iValues[i] = Integer.valueOf((iwc.getParameter(prmArray[i])));
iwc.setSessionAttribute(sessArray[i], iValues[i]);
fetch = true;
} else if (iwc.getSessionAttribute(sessArray[i]) != null) {
iValues[i] = ((Integer) iwc.getSessionAttribute(sessArray[i]));
fetch = true;
}
}
if (isAdmin) {
try {
add(statusForm());
} catch (RemoteException e) {
e.printStackTrace();
} catch (FinderException e) {
e.printStackTrace();
}
if (fetch)
try {
add(getPhoneTable(iwc));
} catch (RemoteException e1) {
e1.printStackTrace();
} catch (FinderException e1) {
e1.printStackTrace();
}
} else
add(getNoAccessObject(iwc));
// add(String.valueOf(iSubjectId));
}
public PresentationObject makeLinkTable(int menuNr) {
Table LinkTable = new Table(6, 1);
return LinkTable;
}
private Form statusForm() throws RemoteException, FinderException {
Form myForm = new Form();
DropdownMenu complex = drpLodgings(((ComplexHome) IDOLookup
.getHome(Complex.class)).findAll(), prmCx, "--", this.sCLCX
.toString());
DropdownMenu building = drpLodgings(((BuildingHome) IDOLookup
.getHome(Building.class)).findAll(), prmBu, "--", this.sCLBU
.toString());
DropdownMenu floor = drpFloors(prmFl, "--", this.sCLFL.toString(), true);
DropdownMenu cat = drpLodgings(((ApartmentSubcategoryHome) IDOLookup
.getHome(ApartmentSubcategory.class)).findAll(), prmCt, "--",
this.sCLCT.toString());
DropdownMenu type = drpLodgings(((ApartmentTypeHome) IDOLookup
.getHome(ApartmentType.class)).findAll(), prmTp, "--",
this.sCLTP.toString());
DropdownMenu order = orderDrop(prmOrder, "--", this.sORDER.toString());
// Edit.setStyle(status);
Table T = new Table();
T.add(getHeader(localize("complex", "Complex")), 1, 1);
T.add(getHeader(localize("building", "Building")), 2, 1);
T.add(getHeader(localize("floor", "Floor")), 3, 1);
T.add(getHeader(localize("category", "Category")), 4, 1);
T.add(getHeader(localize("type", "Type")), 5, 1);
// T.add(getHeader(localize("order","Order")),2,1);
// T.add(status,1,2);
T.add(complex, 1, 2);
T.add(building, 2, 2);
T.add(floor, 3, 2);
T.add(cat, 4, 2);
T.add(type, 5, 2);
// T.add(order,2,2);
SubmitButton get = (SubmitButton) getSubmitButton("conget", null,
"Get", "get");
T.add(get, 1, 3);
T.setCellpadding(1);
T.setCellspacing(0);
myForm.add(T);
return myForm;
}
private DropdownMenu drpLodgings(Collection buildingEntities, String name,
String display, String selected) {
DropdownMenu drp = new DropdownMenu(name);
if (!"".equals(display))
drp.addDisabledMenuElement("-1", display);
if (buildingEntities != null) {
for (Iterator iter = buildingEntities.iterator(); iter.hasNext();) {
BuildingEntity element = (BuildingEntity) iter.next();
drp.addMenuElement(element.getPrimaryKey().toString(), element
.getName());
}
if (!"".equalsIgnoreCase(selected)) {
drp.setSelectedElement(selected);
}
}
return drp;
}
private DropdownMenu drpFloors(String name, String display,
String selected, boolean withBuildingName) throws RemoteException,
FinderException {
Collection floors = ((FloorHome) IDOLookup.getHome(Floor.class))
.findAll();
BuildingHome bh = (BuildingHome) IDOLookup.getHome(Building.class);
DropdownMenu drp = new DropdownMenu(name);
if (!"".equals(display))
drp.addDisabledMenuElement("-1", display);
for (Iterator iter = floors.iterator(); iter.hasNext();) {
Floor floor = (Floor) iter.next();
if (withBuildingName) {
try {
drp.addMenuElement(floor.getPrimaryKey().toString(), floor
.getName()
+ " "
+ (bh.findByPrimaryKey(new Integer(floor
.getBuildingId())).getName()));
} catch (Exception e) {
}
} else
drp.addMenuElement(floor.getPrimaryKey().toString(), floor
.getName());
}
if (!"".equalsIgnoreCase(selected)) {
drp.setSelectedElement(selected);
}
return drp;
}
private DropdownMenu orderDrop(String name, String display, String selected) {
DropdownMenu drp = new DropdownMenu(name);
if (!"".equals(display)) {
drp.addDisabledMenuElement("-1", display);
}
if (!"".equals(selected))
drp.setSelectedElement(selected);
return drp;
}
private PresentationObject getPhoneTable(IWContext iwc)
throws RemoteException, FinderException {
Form form = new Form();
// int order = Integer.parseInt(iValues[5]);
Collection apartments = ((ApartmentHome) IDOLookup
.getHome(Apartment.class)).findBySearch(iValues[0], iValues[1],
iValues[2], iValues[3], iValues[4], true);
// List L =
// BuildingFinder.listOfApartments(sValues[0],sValues[1],sValues[2],sValues[3],sValues[4],order);
// Map M =
// PhoneFinder.mapOfPhonesByApartmentId(PhoneFinder.listOfPhones(sValues[0],sValues[1],sValues[2],sValues[3],sValues[4],order));
Map M = PhoneFinder
.mapOfPhonesByApartmentId(PhoneFinder.listOfPhones());
CampusPhone P = null;
Apartment A = null;
Building B = null;
Floor F = null;
Complex CX = null;
Table T = new Table();
T.setCellspacing(1);
T.setCellpadding(2);
if (apartments != null) {
int len = apartments.size();
int row = 2;
int col = 1;
int i = 0;
ApartmentViewHome avh = (ApartmentViewHome) IDOLookup
.getHome(ApartmentView.class);
for (Iterator iter = apartments.iterator(); iter.hasNext();) {
A = (Apartment) iter.next();
try {
// ApartmentView aview
// =avh.findByPrimaryKey(A.getPrimaryKey());
col = 1;
Integer ID = (Integer) (A.getPrimaryKey());
TextInput ti = new TextInput("ti_" + i);
T.add(new HiddenInput("apid" + i, ID.toString()));
T.add(getText(String.valueOf(i + 1)), 1, row);
T.add((getApartmentTable(A)), 2, row);
ti.setLength(10);
T.add(ti, 3, row);
if (M != null && M.containsKey(ID)) {
P = (CampusPhone) M.get(ID);
ti.setContent(P.getPhoneNumber());
T
.add(getText(new IWTimestamp(P
.getDateInstalled()).getLocaleDate(iwc
.getCurrentLocale())), 4, row);
T.add(new HiddenInput("phoneid" + i, P.getPrimaryKey()
.toString()), 1, row);
}
row++;
i++;
col = 1;
} catch (Exception ex) {
ex.printStackTrace();
}
}
form.add(new HiddenInput("ap_count", String.valueOf(len)));
T.add(getHeader(localize("apartment", "Apartment")), 2, 1);
T.add(getHeader(localize("number", "Number")), 3, 1);
T.add(getHeader(localize("installed", "Installed")), 4, 1);
T.setHorizontalZebraColored(getZebraColor1(), getZebraColor2());
T.setRowColor(1, getHeaderColor());
T.mergeCells(1, row, 8, row);
T.setWidth(1, "15");
T.add(getText(" "), 1, row);
T.setColumnAlignment(1, "left");
// T.setWidth("100%");
} else
add(getText(localize("no_apartments", "No Apartments")));
form.add(T);
form.add(new SubmitButton("save", localize("save", "Save")));
form.setEventListener(this.getClassName());
return form;
}
private void update(IWContext iwc) {
String sCount = iwc.getParameter("ap_count");
Map M = PhoneFinder.mapOfPhones(PhoneFinder.listOfPhones());
if (sCount != null) {
int iCount = Integer.parseInt(sCount);
if (iCount > 0) {
String sAPId, sPHId, sNumber;
Integer iPHId, iAPId;
for (int i = 0; i < iCount; i++) {
try {
sAPId = iwc.getParameter("apid" + i);
sPHId = iwc.getParameter("phoneid" + i);
sNumber = iwc.getParameter("ti_" + i);
iPHId = new Integer(sPHId != null ? sPHId : "-1");
if (sAPId != null && sNumber != null
&& sNumber.length() > 0) {
iAPId = new Integer(sAPId);
// if updating entity
if (M != null && M.containsKey(iPHId)) {
CampusPhone P = (CampusPhone) M.get(iPHId);
if (!P.getPhoneNumber().equals(sNumber)) {
P.setPhoneNumber(sNumber);
P.setDateInstalled(IWTimestamp.RightNow()
.getDate());
P.store();
}
}
// if new entity
else {
CampusPhone P = ((is.idega.idegaweb.campus.block.phone.data.CampusPhoneHome) com.idega.data.IDOLookup
.getHome(CampusPhone.class)).create();
P.setPhoneNumber(sNumber);
P.setApartmentId(iAPId.intValue());
P.setDateInstalled(IWTimestamp.RightNow()
.getDate());
P.store();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
private PresentationObject getApartmentTable(Apartment A) {
Table T = new Table();
Floor F = A.getFloor();
Building B = F.getBuilding();
Complex C = B.getComplex();
T.add(getText(A.getName()), 1, 1);
T.add(getText(F.getName()), 2, 1);
T.add(getText(B.getName()), 3, 1);
T.add(getText(C.getName()), 4, 1);
return T;
}
public void main(IWContext iwc) {
// isStaff = com.idega.core.accesscontrol.business.AccessControl
isAdmin = iwc.hasEditPermission(this);
control(iwc);
// System.err.println("test is main");
}
public boolean actionPerformed(IWContext iwc) throws IWException {
// System.err.println("test is actionPerformed");
update(iwc);
return true;
}
}