package is.idega.idegaweb.campus.block.phone.presentation;
import is.idega.idegaweb.campus.block.allocation.data.Contract;
import is.idega.idegaweb.campus.block.phone.business.PhoneFinder;
import is.idega.idegaweb.campus.presentation.CampusBlock;
import java.rmi.RemoteException;
import java.text.DateFormat;
import java.util.Collection;
import java.util.Iterator;
import java.util.StringTokenizer;
import javax.ejb.FinderException;
import com.idega.block.building.data.ApartmentView;
import com.idega.block.building.data.ApartmentViewHome;
import com.idega.business.IBOLookup;
import com.idega.data.IDOLookup;
import com.idega.presentation.IWContext;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.Table;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
import com.idega.user.business.UserBusiness;
import com.idega.user.data.User;
/**
* 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 PhoneContracts extends CampusBlock {
private DateFormat df;
private UserBusiness ub;
protected boolean isAdmin = false;
public String getLocalizedNameKey(){
return "phone_contracts";
}
public String getLocalizedNameValue(){
return "Phone Contracts";
}
protected void control(IWContext iwc)throws RemoteException{
//debugParameters(iwc);
if(isAdmin){
add(getSeachForm(iwc));
if (iwc.isParameterSet("numbers")){
add(getPhoneTable(iwc,parseNumbers(iwc.getParameter("numbers"))));
}
}
else
add(getNoAccessObject(iwc));
//add(String.valueOf(iSubjectId));
}
public String[] parseNumbers(String numbers){
StringTokenizer tokener = new StringTokenizer(numbers,",;: ");
String[] nums = new String[tokener.countTokens()];
for (int i = 0; i < nums.length; i++) {
nums[i] = tokener.nextToken();
}
return nums;
}
public PresentationObject makeLinkTable(int menuNr){
Table LinkTable = new Table(6,1);
return LinkTable;
}
private PresentationObject getSeachForm(IWContext iwc){
Form F = new Form();
Table T = new Table();
TextInput numberInput = new TextInput("numbers");
if(iwc.isParameterSet("numbers"))
numberInput.setContent(iwc.getParameter("numbers"));
SubmitButton search = new SubmitButton("Search");
T.add(numberInput,1,1);
T.add(search,2,1);
F.add(T);
return F;
}
private PresentationObject getPhoneTable(IWContext iwc,String[] phoneNumbers)throws RemoteException{
Table T = new Table();
int row = 1;
if(phoneNumbers!=null){
ApartmentViewHome avh =(ApartmentViewHome)IDOLookup.getHome(ApartmentView.class);
for (int i = 0; i < phoneNumbers.length; i++) {
Collection contracts = PhoneFinder.listOfPhoneContracts(phoneNumbers[i]);
if(contracts!=null){
Contract contract;
User user;
Iterator iter = contracts.iterator();
T.add(getHeader( phoneNumbers[i]),1,row++);
while(iter.hasNext()){
try {
contract = (Contract) iter.next();
user = (User) ub.getUser(contract.getUserId().intValue());
T.add(getText(user.getName()),2,row);
T.add(getText(df.format(contract.getValidFrom())+" - "+df.format(contract.getValidTo())),3,row);
T.add(getText(avh.findByPrimaryKey(contract.getApartmentId()).getApartmentString(" ")),4,row);
row++;
}
catch (FinderException e) {
e.printStackTrace();
}
}
}
row++;row++;
}
}
return T;
}
public void main(IWContext iwc)throws RemoteException{
isAdmin = iwc.hasEditPermission(this);
df = DateFormat.getDateInstance(DateFormat.SHORT,iwc.getCurrentLocale());
ub = (UserBusiness)IBOLookup.getServiceInstance(iwc,UserBusiness.class);
control(iwc);
}
}