package is.idega.idegaweb.campus.block.building.presentation; import is.idega.idegaweb.campus.presentation.CampusBlock; import java.rmi.RemoteException; import java.util.Collection; import java.util.Iterator; import javax.ejb.EJBException; import javax.ejb.FinderException; import com.idega.block.building.data.Apartment; import com.idega.block.building.data.ApartmentHome; 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.Floor; import com.idega.data.IDOLookup; import com.idega.data.IDOLookupException; import com.idega.presentation.IWContext; import com.idega.presentation.PresentationObject; import com.idega.presentation.Table; import com.idega.presentation.text.Link; import com.idega.presentation.text.Text; import com.idega.presentation.ui.DateInput; 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) 2001 * Company: idega.is * @author 2000 - idega team - <br><a href="mailto:aron@idega.is">Aron Birkir</a><br> * @version 1.0 */ public class ApartmentFreezer extends CampusBlock { private final String strAction = "fin_action"; protected boolean isAdmin = false; public String getLocalizedNameKey(){ return "apartment_freezer"; } public String getLocalizedNameValue(){ return "Freezer"; } protected void control(IWContext iwc){ if(isAdmin){ Table T = new Table(); T.add((makeSearchTable()),1,1); if(iwc.getParameter("search")!= null){ String searchId = iwc.getParameter("ap_search").trim(); T.add(makeResultTable(searchId,iwc),1,2); } else if( iwc.getParameter("apartment_id")!= null){ try { T.add(makeEditTable(Integer.valueOf(iwc.getParameter("apartment_id")),iwc),1,3); } catch (NumberFormatException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } catch (FinderException e) { e.printStackTrace(); } } else if(iwc.getParameter("freeze")!=null){ T.add(this.freezeApartment(iwc),1,3); add("freeze"); } add(T); } else add(new Text("Ekki R�ttindi")); } public PresentationObject makeLinkTable(int menuNr){ Table LinkTable = new Table(6,1); return LinkTable; } public PresentationObject makeSearchTable(){ Table Frame = new Table(3,2); Frame.setCellpadding(0); Frame.setCellspacing(0); Table Left = new Table(); Left.setCellpadding(0); Left.setCellspacing(0); Table Right = new Table(); Right.setCellpadding(0); Right.setCellspacing(0); Frame.add(Left,1,1); Frame.add(Right,3,1); Table T = new Table(2,1); TextInput SearchInput = getTextInput("ap_search"); SubmitButton SearchButton = new SubmitButton("search","Search"); T.add(SearchInput,1,1); T.add(SearchButton,2,1); Form F = new Form(); F.add(T); Right.add(F); return Frame; } public PresentationObject makeResultTable(String searchName,IWContext iwc){ Table Frame = new Table(3,2); Frame.setCellpadding(0); Frame.setCellspacing(0); Table Left = new Table(); Left.setCellpadding(0); Left.setCellspacing(0); Table Right = new Table(); Right.setCellpadding(0); Right.setCellspacing(0); Frame.add(Left,1,1); Frame.add(Right,3,1); try { Collection apartmentViews =((ApartmentViewHome)IDOLookup.getHome(ApartmentViewHome.class)).findByApartmentName(searchName); if(apartmentViews != null &&!apartmentViews.isEmpty()){ Table T = new Table(); int row = 1; ApartmentHome aph = (ApartmentHome)IDOLookup.getHome(Apartment.class); for (Iterator iter = apartmentViews.iterator(); iter.hasNext();) { ApartmentView apView = (ApartmentView) iter.next(); Apartment ap =aph.findByPrimaryKey(apView.getApartmentID()); Link l = new Link(apView.getApartmentName()); l.addParameter("apartment_id",apView.getApartmentID().toString()); T.add(l,1,row); T.add(getText(apView.getFloorName()),2,row); T.add(getText(apView.getBuildingName()),3,row); if(ap.getUnavailableUntil()!=null) T.add(getText((new IWTimestamp(ap.getUnavailableUntil())).getLocaleDate(iwc.getCurrentLocale())),4,row); else T.add(getText("Unfrozen"),4,row); row++; } Right.add(T); } } catch (IDOLookupException e) { e.printStackTrace(); } catch (FinderException e) { e.printStackTrace(); } try { Collection L = getBuildingService(iwc).getApartmentHome().findByName(searchName); if(L != null){ Table T = new Table(); int row = 1; for (Iterator iter = L.iterator(); iter.hasNext();) { Apartment A = (Apartment) iter.next(); Floor F = A.getFloor(); Building B = F.getBuilding(); Link l = new Link(A.getName()); l.addParameter("apartment_id",A.getPrimaryKey().toString()); T.add(l,1,row); T.add(getText(F.getName()),2,row); T.add(getText(B.getName()),3,row); if(A.getUnavailableUntil()!=null) T.add(getText((new IWTimestamp(A.getUnavailableUntil())).getLocaleDate(iwc.getCurrentLocale())),4,row); else T.add(getText("Unfrozen"),4,row); row++; } Right.add(T); } } catch (RemoteException e1) { e1.printStackTrace(); } catch (EJBException e1) { e1.printStackTrace(); } catch (FinderException e1) { e1.printStackTrace(); } return Frame; } private PresentationObject makeEditTable(Integer id,IWContext iwc)throws RemoteException,FinderException{ Table Frame = new Table(3,2); Frame.setCellpadding(0); Frame.setCellspacing(0); ApartmentView aView = ((ApartmentViewHome)IDOLookup.getHome(ApartmentView.class)).findByPrimaryKey(id); Apartment A =((ApartmentHome)IDOLookup.getHome(Apartment.class)).findByPrimaryKey(id); DateInput DI = new DateInput("frozen_date",true); //DI.setIWContext(iwc); if(A.getUnavailableUntil()!=null) DI.setDate(A.getUnavailableUntil()); //else // DI.setToCurrentDate(); HiddenInput hid = new HiddenInput("app_id",String.valueOf(id)); SubmitButton sb = new SubmitButton("freeze","Freeze"); Form myForm = new Form(); Table T = new Table(); T.add(getText(aView.getApartmentName()),1,1); T.add(getText(aView.getFloorName()),2,1); T.add(getText(aView.getBuildingName()),3,1); T.add(DI,4,1); T.add(sb,5,1); T.add(hid,5,1); myForm.add(T); Frame.add(myForm); return Frame; } private PresentationObject freezeApartment(IWContext iwc){ Table T = new Table(); String appId = iwc.getParameter("app_id"); String frozenDate = iwc.getParameter("frozen_date"); try{ if(frozenDate != null && frozenDate.length()==10){ Integer id = Integer.valueOf(appId); Apartment A = ((ApartmentHome)IDOLookup.getHome(Apartment.class)).findByPrimaryKey(id); IWTimestamp iT = new IWTimestamp(frozenDate); A.setUnavailableUntil(iT.getDate()); A.store(); } } catch(Exception e){} return T; } public String getBundleIdentifier(){ return IW_BUNDLE_IDENTIFIER; } public void main(IWContext iwc){ //isStaff = com.idega.core.accesscontrol.business.AccessControl isAdmin = iwc.hasEditPermission(this); control(iwc); } }