package is.idega.idegaweb.travel.presentation; import java.rmi.RemoteException; import java.util.Collection; import java.util.Iterator; import java.util.List; import javax.ejb.FinderException; import com.idega.block.trade.stockroom.business.ProductBusinessBean; import com.idega.block.trade.stockroom.data.Product; import com.idega.block.trade.stockroom.data.TravelAddress; import com.idega.core.location.data.Address; import com.idega.core.location.data.PostalCode; import com.idega.core.location.data.PostalCodeHome; import com.idega.data.IDOException; import com.idega.data.IDOFinderException; import com.idega.data.IDOLookup; import com.idega.presentation.IWContext; import com.idega.presentation.Table; import com.idega.presentation.text.Text; import com.idega.presentation.ui.BooleanInput; import com.idega.presentation.ui.CheckBox; 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.presentation.ui.TimeInput; import com.idega.util.IWTimestamp; /** * Title: idegaWeb TravelBooking * Description: * Copyright: Copyright (c) 2001 * Company: idega * @author <a href="mailto:gimmi@idega.is">Grimur Jonsson</a> * @version 1.0 */ public class AddressAdder extends TravelWindow { public static String _parameterProductId = "parameterProductId"; private static String _parameterAddressId = "parameterAddressId"; private static String _parameterDelete = "parameterDelete"; private static String parameterDeparture = "addressAdderDeparture"; private static String _PARAMETER_POSTAL_CODE_NAME = "parPCN"; private static String parameterArrival = "addressAdderArrival"; private static String parameterRefill = "addressAdderRefill"; private String sAction = "addressAdderAction"; private String parameterSave = "addressAdderSave"; private String parameterClose = "addressAdderClose"; private String textInputNameAddress = "addressAddress"; private String parameterTime = "addressAdderTime"; private Product _product; private int _productId = -1; private int extraFields = 3; public AddressAdder() { super.setWidth(700); super.setTitle("idegaWeb Travel"); } public void main(IWContext iwc) throws Exception{ super.main(iwc); init(iwc); if (_product != null) { String action = iwc.getParameter(sAction); if (action == null) action = ""; if (action.equals("")) { drawForm(iwc); }else if (action.equals(parameterSave)) { if (saveDepartureAddress(iwc)) { drawForm(iwc); }else { error(iwc); } }else if (action.equals(parameterClose)) { super.close(true); } }else { error(iwc); } } private void init(IWContext iwc) throws RemoteException{ try { String sProductId = iwc.getParameter(_parameterProductId); if (sProductId != null) { _productId = Integer.parseInt(sProductId); _product = getProductBusiness(iwc).getProduct(_productId); } }catch (FinderException sql) { sql.printStackTrace(); } } private void error(IWContext iwc) { add("error"); } private boolean saveDepartureAddress(IWContext iwc) throws RemoteException, IDOException{ PostalCodeHome pch = (PostalCodeHome) IDOLookup.getHome(PostalCode.class); boolean returner = true; String[] name = iwc.getParameterValues(textInputNameAddress); String[] ids = iwc.getParameterValues(_parameterAddressId); int counter = 0; String time = ""; String refill = ""; String pc = ""; for (int i = 0; i < name.length; i++) { try { ++counter; time = iwc.getParameter(parameterTime+counter); refill = iwc.getParameter(parameterRefill+counter); pc = iwc.getParameter(_PARAMETER_POSTAL_CODE_NAME+counter); if (ids[i].equals("-1") ) { if (!name[i].equals("")) { PostalCode pCode = null; if (pc != null && !"-1".equals(pc)) { pCode = pch.findByPrimaryKey(new Integer(pc)); } Address newAddress = ((com.idega.core.location.data.AddressHome)com.idega.data.IDOLookup.getHomeLegacy(Address.class)).createLegacy(); newAddress.setStreetName(name[i]); newAddress.setAddressTypeID(com.idega.core.location.data.AddressTypeBMPBean.getId(ProductBusinessBean.uniqueDepartureAddressType)); if (pCode != null) { newAddress.setPostalCode(pCode); } newAddress.insert(); TravelAddress tAddress = ((com.idega.block.trade.stockroom.data.TravelAddressHome)com.idega.data.IDOLookup.getHomeLegacy(TravelAddress.class)).createLegacy(); tAddress.setAddressId(newAddress.getID()); tAddress.setAddressTypeId(com.idega.block.trade.stockroom.data.TravelAddressBMPBean.ADDRESS_TYPE_DEPARTURE); tAddress.setTime(new IWTimestamp("2001-01-01 "+time)); if (refill.equals("Y")) { tAddress.setRefillStock(true); }else { tAddress.setRefillStock(false); } tAddress.insert(); getProductBusiness(iwc).addTravelAddress(_product, tAddress); // _product.addTravelAddress(tAddress); } }else { if (iwc.getParameter(this._parameterDelete+ids[i]) != null) { PostalCode pCode = null; if (pc != null && !"-1".equals(pc)) { pCode = pch.findByPrimaryKey(new Integer(pc)); } TravelAddress tAddress = ((com.idega.block.trade.stockroom.data.TravelAddressHome)com.idega.data.IDOLookup.getHomeLegacy(TravelAddress.class)).findByPrimaryKeyLegacy(Integer.parseInt(ids[i])); Address newAddress = ((com.idega.core.location.data.AddressHome)com.idega.data.IDOLookup.getHomeLegacy(Address.class)).findByPrimaryKeyLegacy(tAddress.getAddressId()); // tAddress.removeFrom(_product); getProductBusiness(iwc).removeTravelAddress(_product, tAddress); // _product.removeTravelAddress(tAddress); tAddress.delete(); newAddress.delete(); }else if (!name[i].equals("")) { PostalCode pCode = null; if (pc != null && !"-1".equals(pc)) { pCode = pch.findByPrimaryKey(new Integer(pc)); } TravelAddress tAddress = ((com.idega.block.trade.stockroom.data.TravelAddressHome)com.idega.data.IDOLookup.getHomeLegacy(TravelAddress.class)).findByPrimaryKeyLegacy(Integer.parseInt(ids[i])); tAddress.setTime(new IWTimestamp("2001-01-01 "+time)); if (refill.equals("Y")) { tAddress.setRefillStock(true); }else { tAddress.setRefillStock(false); } Address newAddress = ((com.idega.core.location.data.AddressHome)com.idega.data.IDOLookup.getHomeLegacy(Address.class)).findByPrimaryKeyLegacy(tAddress.getAddressId()); newAddress.setStreetName(name[i]); if (pCode != null) { newAddress.setPostalCode(pCode); } else { newAddress.setPostalCode(null); } newAddress.update(); tAddress.update(); } } }catch (Exception e) { // Error, nenni ekki a� ey�a loggnum � svona vitleysu } } return true; } private void drawForm(IWContext iwc) throws RemoteException{ Form form = new Form(); form.maintainParameter(_parameterProductId); Table table = new Table(); form.add(table); table.setAlignment("center"); table.setBorder(0); table.setCellpadding(2); table.setCellspacing(1); int row = 1; Text nameTxt = (Text) text.clone(); nameTxt.setText(iwrb.getLocalizedString("travel.address","Address")); nameTxt.setFontColor(TravelManager.WHITE); nameTxt.setBold(true); Text timeTxt = (Text) text.clone(); timeTxt.setText(iwrb.getLocalizedString("travel.time","Time")); timeTxt.setFontColor(TravelManager.WHITE); timeTxt.setBold(true); Text refillTxt = (Text) text.clone(); refillTxt.setText(iwrb.getLocalizedString("travel.refill_stock","Refill stock")); refillTxt.setFontColor(TravelManager.WHITE); refillTxt.setBold(true); Text pcTxt = (Text) text.clone(); pcTxt.setText(iwrb.getLocalizedString("travel.postal_cdoe","Postal code")); pcTxt.setFontColor(TravelManager.WHITE); pcTxt.setBold(true); Text delTxt = (Text) text.clone(); delTxt.setText(iwrb.getLocalizedString("travel.delete","delete")); delTxt.setFontColor(TravelManager.WHITE); delTxt.setBold(true); try { List addresses = getProductBusiness(iwc).getDepartureAddresses(_product, true); int addressesSize = addresses.size(); TravelAddress tAddress; Address address; PostalCode pCode; PostalCodeHome pch = (PostalCodeHome) IDOLookup.getHome(PostalCode.class); Collection coll = pch.findAllOrdererByCode(); DropdownMenu menu2clone = new DropdownMenu(_PARAMETER_POSTAL_CODE_NAME); menu2clone.addMenuElementFirst("-1",iwrb.getLocalizedString("travel.unspecified", "Unspecified")); DropdownMenu pc; if (coll != null && !coll.isEmpty()) { Iterator iter = coll.iterator(); PostalCode pcTemp; while (iter.hasNext()) { pcTemp = (PostalCode) iter.next(); menu2clone.addMenuElement(pcTemp.getPrimaryKey().toString(), pcTemp.getPostalCode() + " "+pcTemp.getName()); } } TextInput nameInp = new TextInput(textInputNameAddress); BooleanInput refill; CheckBox del; TimeInput timeInp; table.add(nameTxt, 1, row); table.add(timeTxt, 2, row); table.add(refillTxt, 3, row); table.add(pcTxt, 4, row); table.add(delTxt, 5, row); table.setAlignment(5,row, "center"); table.setRowColor(row, TravelManager.backgroundColor); IWTimestamp timestamp; int counter = 0; for (int i = 0; i < addressesSize; i++) { ++row; ++counter; tAddress = (TravelAddress) addresses.get(i); address = tAddress.getAddress(); pc = (DropdownMenu) menu2clone.clone(); pc.setName(_PARAMETER_POSTAL_CODE_NAME+counter); if (address != null) { pCode = address.getPostalCode(); if (pCode != null) { pc.setSelectedElement(pCode.getPrimaryKey().toString()); } } nameInp = new TextInput(textInputNameAddress); nameInp.setContent(tAddress.getStreetName()); del = new CheckBox(this._parameterDelete+tAddress.getID()); del.setChecked(false); timestamp = new IWTimestamp(tAddress.getTime()); refill = new BooleanInput(this.parameterRefill+counter); refill.setSelected(tAddress.getRefillStock()); timeInp = new TimeInput(this.parameterTime+counter); timeInp.setHour(timestamp.getHour()); timeInp.setMinute(timestamp.getMinute()); table.add(nameInp, 1,row); table.add(timeInp, 2,row); table.add(refill, 3, row); table.add(pc, 4, row); table.add(del, 5,row); table.setAlignment(3,row, "center"); table.setAlignment(5,row, "center"); table.add(new HiddenInput(this._parameterAddressId, Integer.toString(tAddress.getID()))); table.setRowColor(row, TravelManager.GRAY); } for (int i = 0; i < extraFields; i++) { ++row; ++counter; nameInp = new TextInput(textInputNameAddress); timeInp = new TimeInput(this.parameterTime+counter); refill = new BooleanInput(this.parameterRefill+counter); pc = (DropdownMenu) menu2clone.clone(); pc.setName(_PARAMETER_POSTAL_CODE_NAME+counter); table.add(new HiddenInput(this._parameterAddressId, "-1")); table.add(nameInp, 1,row); table.add(timeInp , 2, row); table.add(refill, 3, row); table.setAlignment(3,row, "center"); table.add(pc, 4, row); table.setRowColor(row, TravelManager.GRAY); } SubmitButton saveBtn = new SubmitButton(iwrb.getImage("buttons/save.gif"),sAction,parameterSave); SubmitButton closeBtn = new SubmitButton(iwrb.getImage("buttons/close.gif"),sAction,parameterClose); ++row; table.add(closeBtn,1,row); table.add(saveBtn,3,row); table.mergeCells(3, row, 5, row); table.setAlignment(3,row,"right"); table.setRowColor(row, TravelManager.GRAY); }catch (IDOFinderException ido) { ido.printStackTrace(System.err); error(iwc); } catch (FinderException e) { // TODO Auto-generated catch block e.printStackTrace(); } add(form); } }