package com.idega.block.finance.presentation; import java.rmi.RemoteException; import java.sql.SQLException; import java.text.DateFormat; import java.util.Collection; import java.util.Iterator; import java.util.Vector; import javax.ejb.CreateException; import javax.ejb.FinderException; import javax.ejb.RemoveException; import com.idega.block.finance.data.TariffIndex; 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; import com.idega.util.IWTimestamp; /** * Title: Description: Copyright: Copyright (c) 2001 Company: idega multimedia * * @author <a href="mailto:aron@idega.is">aron@idega.is</a> * @version 1.0 */ public class TariffIndexEditor extends Finance { public static String strAction = "ti_action"; public static String RentType = com.idega.block.finance.data.TariffIndexBMPBean.RENT_TYPE_A; public static String ElType = com.idega.block.finance.data.TariffIndexBMPBean.RENT_TYPE_B; public static String HeatType = com.idega.block.finance.data.TariffIndexBMPBean.RENT_TYPE_C; public static String[] Types = { RentType, ElType, HeatType }; protected final int ACT1 = 1, ACT2 = 2, ACT3 = 3, ACT4 = 4, ACT5 = 5; public String getLocalizedNameKey() { return "indices"; } public String getLocalizedNameValue() { return "Indices"; } protected void control(IWContext iwc) { if (this.isAdmin) { try { PresentationObject MO = new Text("nothing"); if (iwc.getParameter(strAction) == null) { MO = getMainTable(iwc, this.iCategoryId); } if (iwc.getParameter(strAction) != null) { String sAct = iwc.getParameter(strAction); int iAct = Integer.parseInt(sAct); switch (iAct) { case ACT1: MO = getMainTable(iwc, this.iCategoryId); break; case ACT2: MO = getChangeTable(iwc, this.iCategoryId); break; case ACT3: MO = doUpdate(iwc, this.iCategoryId); break; default: MO = getMainTable(iwc, this.iCategoryId); break; } } setLocalizedTitle("tariff_index_editor", "Tariff index editor"); setSearchPanel(makeLinkTable(1, this.iCategoryId)); setMainPanel(MO); } catch (Exception S) { S.printStackTrace(); } } else { add(this.iwrb.getLocalizedString("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(this.iwrb.getLocalizedString("view", "View"))); Link1.addParameter(TariffIndexEditor.strAction, String .valueOf(this.ACT1)); // Link1.addParameter(Finance.getCategoryParameter(iCategoryId)); Link Link2 = new Link(getHeader(this.iwrb.getLocalizedString("change", "Change"))); Link2.addParameter(TariffIndexEditor.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; } protected PresentationObject getMainTable(IWContext iwc, int iCategoryId) { DateFormat dfLong = DateFormat.getDateInstance(DateFormat.LONG, iwc .getCurrentLocale()); Collection L = getIndices(iCategoryId); int count = 0; if (L != null) { count = L.size(); } Table keyTable = new Table(6, count + 1); keyTable.setWidth("100%"); keyTable.setHorizontalZebraColored(getZebraColor1(), getZebraColor2()); keyTable.setRowColor(1, getHeaderColor()); keyTable.setCellpadding(2); keyTable.setCellspacing(1); // keyTable.setColumnAlignment(3, "right"); keyTable.add(getHeader("Nr"), 1, 1); keyTable.add(getHeader(this.iwrb.getLocalizedString("name", "Name")), 2, 1); keyTable.add(getHeader(this.iwrb.getLocalizedString("info", "Info")), 3, 1); keyTable.add(getHeader(this.iwrb.getLocalizedString("index", "Index")), 4, 1); keyTable.add(getHeader(this.iwrb.getLocalizedString("date", "date")), 5, 1); keyTable.add(getHeader(this.iwrb.getLocalizedString("type", "Type")), 6, 1); if (this.isAdmin) { if (count > 0) { int row = 2; int rowcount = 1; for (Iterator iter = L.iterator(); iter.hasNext();) { TariffIndex ti = (TariffIndex) iter.next(); keyTable.add(getText(String.valueOf(rowcount++)), 1, row); keyTable.add(getText(ti.getName()), 2, row); keyTable.add(getText(ti.getInfo()), 3, row); keyTable.add(getText(Double.toString(ti.getIndex())), 4, row); keyTable.add(getText(dfLong.format(ti.getDate())), 5, row); keyTable.add(getText(ti.getType()), 6, row); row++; } } } return (keyTable); } protected PresentationObject getChangeTable(IWContext iwc, int iCategoryId) throws SQLException { Collection L = getIndices(iCategoryId); String t = com.idega.block.finance.data.TariffIndexBMPBean.indexType; int count = 0; if (L != null) { count = L.size(); } int inputcount = count + 5; DataTable inputTable = getDataTable(); inputTable.setUseBottom(false); inputTable.setUseTop(false); inputTable.setTitlesHorizontal(true); inputTable.setWidth("100%"); inputTable.add(getHeader("Nr"), 1, 1); inputTable.add(getHeader(localize("name", "Name")), 2, 1); inputTable.add(getHeader(localize("description", "Description")), 3, 1); inputTable.add(getHeader(localize("index", "Index")), 4, 1); inputTable.add(getHeader(localize("type", "Type")), 5, 1); inputTable.add(getHeader(localize("delete", "Delete")), 6, 1); Iterator iter = L.iterator(); for (int i = 1; i <= inputcount; i++) { String rownum = String.valueOf(i); TextInput nameInput, infoInput, indexInput; HiddenInput idInput; CheckBox delCheck; DropdownMenu typeDrp; // int pos; if (i <= count && iter.hasNext()) { // pos = i-1; TariffIndex ti = (TariffIndex) iter.next(); nameInput = getTextInput("ti_nameinput" + i, (ti.getName())); infoInput = getTextInput("ti_infoinput" + i, (ti.getInfo())); indexInput = getTextInput("ti_indexinput" + i, (String .valueOf(ti.getIndex()))); typeDrp = typeDrop("ti_typedrp" + i, ti.getType()); idInput = new HiddenInput("ti_idinput" + i, ti.getPrimaryKey() .toString()); delCheck = getCheckBox("ti_delcheck" + i, "true"); inputTable.add(delCheck, 6, i + 1); } else { nameInput = getTextInput("ti_nameinput" + i); infoInput = getTextInput("ti_infoinput" + i); indexInput = getTextInput("ti_indexinput" + i); typeDrp = typeDrop("ti_typedrp" + i, String.valueOf(t .charAt(i - 1))); idInput = new HiddenInput("ti_idinput" + i, "-1"); } typeDrp = (DropdownMenu) setStyle(typeDrp, STYLENAME_INTERFACE); nameInput.setSize(20); infoInput.setSize(40); indexInput.setSize(10); inputTable.add(getText(rownum), 1, i + 1); inputTable.add(nameInput, 2, i + 1); inputTable.add(infoInput, 3, i + 1); inputTable.add(indexInput, 4, i + 1); inputTable.add(typeDrp, 5, i + 1); inputTable.add(idInput); } inputTable.add(new HiddenInput("ti_count", String.valueOf(inputcount))); inputTable.add(new HiddenInput(TariffIndexEditor.strAction, String .valueOf(this.ACT3))); inputTable.add(Finance.getCategoryParameter(iCategoryId)); inputTable.addButton(new SubmitButton("save", "Save")); return (inputTable); } protected PresentationObject doUpdate(IWContext iwc, int iCategoryId) throws SQLException { int count = Integer.parseInt(iwc.getParameter("ti_count")); String sName, sInfo, sDel, sIndex, sType; Integer ID; double findex = 0; TariffIndex ti = null; for (int i = 1; i < count + 1; i++) { sName = iwc.getParameter("ti_nameinput" + i).trim(); sInfo = iwc.getParameter("ti_infoinput" + i).trim(); sIndex = iwc.getParameter("ti_indexinput" + i).trim(); sDel = iwc.getParameter("ti_delcheck" + i); sType = iwc.getParameter("ti_typedrp" + i).trim(); ID = Integer.valueOf(iwc.getParameter("ti_idinput" + i)); java.sql.Timestamp stamp = IWTimestamp.getTimestampRightNow(); if (!"".equals(sIndex)) { sIndex = sIndex.replace(',', '.'); findex = Double.parseDouble(sIndex); } try { if (ID != null && ID.intValue() > 0) { // ti = FinanceFinder.getInstance().getTariffIndex(ID) ; ti = getFinanceService().getTariffIndexHome() .findByPrimaryKey(ID); double oldvalue = ti.getNewValue(); if (sDel != null && sDel.equalsIgnoreCase("true")) { // FinanceBusiness.deleteTariffIndex(ID); getFinanceService().removeTariffIndex(ID); } else if (!sName.equalsIgnoreCase(ti.getName()) || !sInfo.equalsIgnoreCase(ti.getInfo()) || !sType.equalsIgnoreCase(ti.getType()) || !(findex == ti.getIndex())) { // FinanceBusiness.saveTariffIndex(-1,sName,sInfo,sType,findex,oldvalue,stamp,iCategoryId); getFinanceService().createOrUpdateTariffIndex(null, sName, sInfo, sType, findex, oldvalue, stamp, getFinanceCategoryId()); } } else if (!"".equalsIgnoreCase(sName) && !"".equals(sIndex)) { getFinanceService().createOrUpdateTariffIndex(null, sName, sInfo, sType, findex, findex, stamp, getFinanceCategoryId()); // FinanceBusiness.saveTariffIndex(-1,sName,sInfo,sType,findex,findex,stamp,iCategoryId); } } catch (RemoteException e) { e.printStackTrace(); } catch (FinderException e) { e.printStackTrace(); } catch (RemoveException e) { e.printStackTrace(); } catch (CreateException e) { e.printStackTrace(); } }// for loop return getMainTable(iwc, iCategoryId); } private DropdownMenu typeDrop(String name, String selected) { DropdownMenu drp = new DropdownMenu(name); String s = com.idega.block.finance.data.TariffIndexBMPBean.indexType; int len = s.length(); for (int i = 0; i < len; i++) { drp.addMenuElement(String.valueOf(s.charAt(i))); } drp.setSelectedElement(selected); return drp; } private Collection getIndices(int iCategoryId) { try { /* * Vector V = new Vector(); for (int i = 0; i < * com.idega.block.finance.data.TariffIndexBMPBean.indexType.length(); * i++) { TariffIndex ti= * FinanceFinder.getInstance().getTariffIndex(String.valueOf(com.idega.block.finance.data.TariffIndexBMPBean.indexType.charAt(i)),iCategoryId); * if(ti!= null) V.add(ti); } return V; */ return getFinanceService().getTariffIndexHome() .findLastTypeGrouped(); } catch (RemoteException e) { e.printStackTrace(); } catch (FinderException e) { e.printStackTrace(); } return new Vector(); } public void main(IWContext iwc) { control(iwc); } }// class TariffKeyEditor