package com.idega.block.finance.presentation; import java.rmi.RemoteException; import java.sql.SQLException; import java.util.Collection; import java.util.Iterator; import javax.ejb.CreateException; import javax.ejb.FinderException; import javax.ejb.RemoveException; import com.idega.block.finance.data.AccountKey; import com.idega.block.finance.data.TariffKey; 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.CheckBox; import com.idega.presentation.ui.DataTable; import com.idega.presentation.ui.DropdownMenu; import com.idega.presentation.ui.HiddenInput; import com.idega.presentation.ui.SubmitButton; import com.idega.presentation.ui.TextInput; /** * Title: idegaclasses * Description: * Copyright: Copyright (c) 2001 * Company: * @author <a href="mailto:aron@idega.is">aron@idega.is * @version 1.0 */ public class AccountKeyEditor extends Finance { public String strAction = "ake_action"; protected final int ACT1 = 1,ACT2 = 2, ACT3 = 3,ACT4 = 4,ACT5 = 5; public String getLocalizedNameKey(){ return "accountkey"; } public String getLocalizedNameValue(){ return "Accountkey"; } protected void control(IWContext iwc){ if(this.isAdmin){ try{ PresentationObject MO = new Text(); if(iwc.getParameter(this.strAction) == null){ MO = getMain(iwc); } if(iwc.getParameter(this.strAction) != null){ String sAct = iwc.getParameter(this.strAction); int iAct = Integer.parseInt(sAct); switch (iAct) { case ACT1 : MO = getMain(iwc); break; case ACT2 : MO = getChange(iwc); break; case ACT3 : MO = doUpdate(iwc); break; default: MO = getMain(iwc); break; } } setLocalizedTitle("account_key_editor","Account key editor"); setSearchPanel(makeLinkTable(1,this.iCategoryId)); setMainPanel(MO); } catch(Exception S){ S.printStackTrace(); } } else { add(getErrorText(localize("access_denied","Access denies"))); } } protected PresentationObject makeLinkTable(int menuNr,int iCategoryId){ Table LinkTable = new Table(3,1); int last = 3; LinkTable.setWidth("100%"); LinkTable.setCellpadding(2); LinkTable.setCellspacing(1); LinkTable.setWidth(last,"100%"); Link Link1 = new Link(getHeader(localize("view","View"))); Link1.addParameter(this.strAction,String.valueOf(this.ACT1)); // Link1.addParameter(Finance.getCategoryParameter(iCategoryId)); Link Link2 = new Link(getHeader(localize("change","Change"))); Link2.addParameter(this.strAction,String.valueOf(this.ACT2)); //Link2.addParameter(Finance.getCategoryParameter(iCategoryId)); if(this.isAdmin){ LinkTable.add(Link1,1,1); LinkTable.add(Link2,2,1); } return LinkTable; } private PresentationObject getMain(IWContext iwc){ Table keyTable = new Table(); Collection keys = null; java.util.Map hk = null; try { keys = getFinanceService().getAccountKeyHome().findByCategory(getFinanceCategoryId());; hk = getFinanceService().getAccountBusiness().getTariffKeyMap(); } catch (RemoteException e) { e.printStackTrace(); } catch (FinderException e) { e.printStackTrace(); } //List keys = FinanceFinder.getInstance().listOfAccountKeys(iCategoryId); if(keys !=null && hk!=null){ int count = keys.size(); keyTable = new Table(5,count+1); keyTable.setWidth("100%"); keyTable.setHorizontalZebraColored(getZebraColor1(),getZebraColor2()); keyTable.setRowColor(1,getHeaderColor()); keyTable.setCellpadding(2); keyTable.setCellspacing(1) ; keyTable.add(getHeader("Nr"),1,1); keyTable.add(getHeader(localize("name","Name")),2,1); keyTable.add(getHeader(localize("info","Info")),3,1); keyTable.add(getHeader(localize("tariff_key","Tariff key")),4,1); keyTable.add(getHeader(localize("ordinal","Ordinal")),5,1); //java.util.Map hk = FinanceFinder.getInstance().mapOfTariffKeys(iCategoryId); if(this.isAdmin){ if(count > 0){ AccountKey key; int row = 2; int rowcount = 1; for (Iterator iter = keys.iterator(); iter.hasNext();) { key = (AccountKey) iter.next(); keyTable.add(getText(String.valueOf(rowcount++)),1,row); keyTable.add(getText(key.getName()),2,row); keyTable.add(getText(key.getInfo()),3,row); Integer tkid = new Integer(key.getTariffKeyId()); if(hk.containsKey(tkid)) { keyTable.add( getText( ((TariffKey)hk.get( tkid)).getName() ),4,row); } if(key.getOrdinal()!=null) { keyTable.add(getText(key.getOrdinal().toString()),5,row); } row++; } } } } return(keyTable); } private PresentationObject getChange(IWContext iwc) throws SQLException{ Collection keys = null; Collection Tkeys = null; try { keys = getFinanceService().getAccountKeyHome().findByCategory(getFinanceCategoryId()); Tkeys = getFinanceService().getTariffKeyHome().findByCategory(getFinanceCategoryId()); } catch (RemoteException e) { e.printStackTrace(); } catch (FinderException e) { e.printStackTrace(); } int count = 0; if(keys !=null && Tkeys!=null) { count = keys.size(); } int inputcount = count+5; DataTable inputTable = getDataTable(); inputTable.setUseBottom(false); inputTable.setUseTop(false); inputTable.setTitlesHorizontal(true); inputTable.setWidth(Table.HUNDRED_PERCENT); inputTable.add(getHeader("Nr"),1,1); inputTable.add(getHeader(localize("name","Name")),2,1); inputTable.add(getHeader(localize("info","Inro")),3,1); inputTable.add(getHeader(localize("tariff_key","Tariff key")),4,1); inputTable.add(getHeader(localize("ordinal","Ordinal")),5,1); inputTable.add(getHeader(localize("delete","Delete")),6,1); AccountKey key; Iterator iter = keys.iterator(); for (int i = 1; i <= inputcount ;i++){ String rownum = String.valueOf(i); TextInput nameInput, infoInput,ordinalInput; HiddenInput idInput; CheckBox delCheck; DropdownMenu iDrp = keyDrp(Tkeys); iDrp.setName("ake_keydrp"+i); iDrp = (DropdownMenu) setStyle(iDrp,STYLENAME_INTERFACE); //int pos; if(i <= count && iter.hasNext()){ //pos = i-1; key = (AccountKey) iter.next(); nameInput = getTextInput("ake_nameinput"+i,(key.getName())); infoInput = getTextInput("ake_infoinput"+i,(key.getInfo())); ordinalInput = getTextInput("ake_ordinput"+i,key.getOrdinal()!=null?(key.getOrdinal().toString()):""); String sId = key.getPrimaryKey().toString(); idInput = new HiddenInput("ake_idinput"+i,sId); delCheck = getCheckBox("ake_delcheck"+i,"true"); iDrp.setSelectedElement(String.valueOf(key.getTariffKeyId())); inputTable.add(delCheck,6,i+1); } else{ nameInput = getTextInput("ake_nameinput"+i); infoInput = getTextInput("ake_infoinput"+i); idInput = new HiddenInput("ake_idinput"+i,"-1"); ordinalInput = getTextInput("ake_ordinput"+i); } nameInput.setSize(20); infoInput.setSize(40); ordinalInput.setSize(3); inputTable.add(getText(rownum),1,i+1); inputTable.add(nameInput,2,i+1); inputTable.add(infoInput,3,i+1); inputTable.add(iDrp,4,i+1); inputTable.add(ordinalInput,5,i+1); inputTable.add(idInput); } inputTable.add(new HiddenInput("ake_count", String.valueOf(inputcount) )); inputTable.add(new HiddenInput(this.strAction,String.valueOf(this.ACT3 ))); inputTable.add(Finance.getCategoryParameter(this.iCategoryId)); SubmitButton save = new SubmitButton(localize("save","Save")); save = (SubmitButton) setStyle(save,STYLENAME_INTERFACE_BUTTON); inputTable.addButton(save); return (inputTable); } private PresentationObject doUpdate(IWContext iwc){ int count = Integer.parseInt(iwc.getParameter("ake_count")); String sName,sInfo,sDel,sTKid,sOrd; Integer ID,TKid,ordinal=null; for (int i = 1; i < count+1 ;i++){ ordinal = null; sName = iwc.getParameter("ake_nameinput"+i ).trim(); sInfo = iwc.getParameter("ake_infoinput"+i).trim(); sDel = iwc.getParameter("ake_delcheck"+i); sTKid = iwc.getParameter("ake_keydrp"+i); sOrd = iwc.getParameter("ake_ordinput"+i); TKid = Integer.valueOf(sTKid); ID = Integer.valueOf(iwc.getParameter("ake_idinput"+i)); try { ordinal = Integer.valueOf(sOrd); } catch (NumberFormatException e1) { } try { if(sDel != null && sDel.equalsIgnoreCase("true")){ getFinanceService().removeAccountKey(ID); } else if(!sName.equalsIgnoreCase("")){ getFinanceService().createOrUpdateAccountKey(ID,sName,sInfo,TKid,ordinal,getFinanceCategoryId()); } } catch (RemoteException e) { e.printStackTrace(); } catch (FinderException e) { e.printStackTrace(); } catch (RemoveException e) { e.printStackTrace(); } catch (CreateException e) { e.printStackTrace(); } }// for loop return getMain(iwc); } private DropdownMenu keyDrp(Collection TK){ DropdownMenu drp = new DropdownMenu(); drp.addMenuElement(0,"--"); if(TK != null) { drp.addMenuElements(TK); } return drp; } public void main(IWContext iwc){ control(iwc); } }// class AccountKeyEditor