/* * $Id: SupplierBrowserSearch.java,v 1.10 2005/09/23 11:32:42 gimmi Exp $ * Created on Aug 16, 2005 * * Copyright (C) 2005 Idega Software hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. * Use is subject to license terms. */ package is.idega.idegaweb.travel.presentation; import is.idega.idegaweb.travel.block.search.presentation.AbstractSearchForm; import is.idega.idegaweb.travel.business.SupplierBrowserBusiness; import is.idega.idegaweb.travel.business.SupplierBrowserBusinessBean; import is.idega.idegaweb.travel.data.SupplierBrowserSearchForm; import java.io.File; import java.rmi.RemoteException; import java.util.Collection; import java.util.Iterator; import javax.ejb.FinderException; import com.idega.business.IBOLookup; import com.idega.business.IBOLookupException; import com.idega.business.IBORuntimeException; import com.idega.data.IDOLookup; import com.idega.presentation.IWContext; import com.idega.presentation.Layer; import com.idega.presentation.text.Heading2; import com.idega.presentation.text.Paragraph; import com.idega.presentation.ui.DropdownMenu; import com.idega.presentation.ui.FieldSet; import com.idega.presentation.ui.Form; import com.idega.presentation.ui.Label; import com.idega.presentation.ui.ResetButton; import com.idega.presentation.ui.SubmitButton; import com.idega.user.data.Group; import com.idega.user.data.GroupHome; import com.idega.util.IWTimestamp; import com.idega.xml.XMLDocument; import com.idega.xml.XMLElement; import com.idega.xml.XMLParser; public class SupplierBrowserSearch extends TravelBlock { private static final String PARAMETER_FORM = "sbs_prm_f"; private Group supplierManager = null; private String maindiv = "bookingform"; private String inputdiv = "sbs_input_div"; private String separatordiv = "sbs_separator_div"; private String engineDefinitionFile = null; private String currentForm = null; private String formDropdownStyleClass = null; private String CACHE_KEY = "sbs_ck"; private int supplierManagerId = -1; private File engineXML = null; private String engineName = null; private XMLElement engineHeading = null; private String engineStyleClass = null; private String defaultSearchForm = null; private String defaultParameterName = null; private String defaultParameterValue = null; public SupplierBrowserSearch() { setCacheable(getCacheKey(),0); maindiv = "bookingform box"; } public void main(IWContext iwc) throws Exception { super.main(iwc); if (engineDefinitionFile != null) { if (supplierManagerId > 0) { GroupHome gHome = (GroupHome) IDOLookup.getHome(Group.class, super.getDatasource()); supplierManager = gHome.findByPrimaryKey(new Integer(supplierManagerId)); } if (supplierManager != null) { addSearchForm(iwc); } else { add(getResourceBundle().getLocalizedString("travel.supplier_manager_not_found","Supplier manager not found.")); } } else { add(getResourceBundle().getLocalizedString("travel.engine_deinition_not_found","Engine definition not found.")); } } protected boolean isCacheable(IWContext iwc) { return true; // getCacheState(iwc, "removeme please"); // return false; } public String getCacheKey(){ return CACHE_KEY; } protected String getCacheState(IWContext iwc, String cacheStatePrefix){ String returnString = ""; try { if (engineDefinitionFile != null) { returnString += engineDefinitionFile; engineXML = new File(engineDefinitionFile); XMLParser parser = new XMLParser(); XMLDocument doc = parser.parse(engineXML); XMLElement el = doc.getRootElement(); engineName = el.getAttributeValue(SupplierBrowserBusinessBean.ATTRIBUTE_NAME); engineHeading = el.getChild(SupplierBrowserBusinessBean.ELEMENT_HEADING); engineStyleClass = el.getAttributeValue(SupplierBrowserBusinessBean.ATTRIBUTE_STYLE_CLASS); XMLElement sfChild = el.getChild(SupplierBrowserBusinessBean.ELEMENT_SEARCH_FORM); if (sfChild != null) { currentForm = (sfChild).getAttributeValue(SupplierBrowserBusinessBean.ATTRIBUTE_LOCALIZATION_KEY); } formDropdownStyleClass = sfChild.getAttributeValue(SupplierBrowserBusinessBean.ATTRIBUTE_STYLE_CLASS); String form = iwc.getParameter(PARAMETER_FORM); if (form != null) { currentForm = form; } else if (defaultSearchForm != null){ currentForm = defaultSearchForm; } Collection coll = getSupplierBrowserBusiness(iwc).getParameters(engineName, currentForm); if (coll != null) { Iterator iter = coll.iterator(); while (iter.hasNext()) { String p = (String) iter.next(); returnString+= "_"+iwc.getParameter(p); } } String sName = iwc.getParameter(AbstractSearchForm.PARAMETER_SUPPLIER_NAME); returnString += AbstractSearchForm.PARAMETER_SUPPLIER_NAME+"_"+sName; returnString += engineName+"_"+currentForm; returnString += defaultParameterName+"_"+defaultParameterValue; } else { returnString += Double.toString(Math.random()); System.out.println("[SupplierBrowserSerach] CacheState = "+returnString); } } catch (Exception e) { e.printStackTrace(); } return cacheStatePrefix+returnString+IWTimestamp.RightNow().toSQLDateString(); } private void addSearchForm(IWContext iwc) throws Exception { Collection forms = getSupplierBrowserBusiness(iwc).parseXML(supplierManager, engineXML); SupplierBrowserSearchForm sf = null; DropdownMenu formSelector = new DropdownMenu(PARAMETER_FORM); formSelector.setToSubmit(); Iterator fIter = forms.iterator(); while (fIter.hasNext()) { SupplierBrowserSearchForm tmp = (SupplierBrowserSearchForm) fIter.next(); formSelector.addMenuElement(tmp.getLocalizationKey(), getResourceBundle().getLocalizedString(tmp.getLocalizationKey(), tmp.getLocalizationKey())); if (tmp.getLocalizationKey().equals(currentForm)) { sf = tmp; } } formSelector.setSelectedElement(currentForm); Form form2 = new Form(); Paragraph p2 = new Paragraph(); p2.setStyleClass(formDropdownStyleClass); Label lab = new Label(); lab.setLabel(getResourceBundle().getLocalizedString("travel.search_for","Search for")); p2.add(lab); p2.add(formSelector); form2.maintainAllParameters(); form2.add(p2); Collection ps = sf.getParagraphs(); Form form = new Form(); form.maintainParameter(PARAMETER_FORM); form.addParameter(SupplierBrowser.SHOW_SEARCH_INPUTS, Boolean.toString(false)); try { form.setPageToSubmitTo(Integer.parseInt(sf.getPageID())); } catch (NullPointerException e) { e.printStackTrace(); } Iterator it = ps.iterator(); FieldSet fieldSet = new FieldSet(); while (it.hasNext()) { Paragraph p = (Paragraph) it.next(); if (getSupplierBrowserBusiness(iwc).isSeparator(p)) { form.add(fieldSet); fieldSet = new FieldSet(); } else { fieldSet.add(p); } } form.add(fieldSet); Paragraph inputLayer = new Paragraph(); inputLayer.setStyleClass("fi"); inputLayer.add(new SubmitButton(getResourceBundle().getLocalizedString("search","search"))); inputLayer.add(new ResetButton(getResourceBundle().getLocalizedString("reset", "reset"))); fieldSet.add(inputLayer); Layer mainLayer = new Layer(); mainLayer.setStyleClass(maindiv); if (engineHeading != null) { Heading2 h2 = new Heading2(); String engineHeader = engineHeading.getAttributeValue(SupplierBrowserBusinessBean.ATTRIBUTE_LOCALIZATION_KEY); String engineStyle = engineHeading.getAttributeValue(SupplierBrowserBusinessBean.ATTRIBUTE_STYLE_CLASS); h2.setStyleClass(engineStyle); h2.setText(getResourceBundle().getLocalizedString(engineHeader, engineHeader)); mainLayer.add(h2); } Layer l2 = new Layer(); if (engineStyleClass != null) { l2.setStyleClass(engineStyleClass); } FieldSet fs = new FieldSet(); fs.add(form2); l2.add(fs); l2.add(form); mainLayer.add(l2); add(mainLayer); } public void setEngineDefinitionFile(String definition) { engineDefinitionFile = definition; } public void setSupplierManagerID(int supplierManagerId) throws FinderException, RemoteException { this.supplierManagerId = supplierManagerId; } public void setDefaultSearchEngine(String defaultSearchForm) { this.defaultSearchForm = defaultSearchForm; } public void setDefaultParameter(String parameterName, String parameterValue) { this.defaultParameterName = parameterName; this.defaultParameterValue = parameterValue; } public SupplierBrowserBusiness getSupplierBrowserBusiness(IWContext iwc) { try { return (SupplierBrowserBusiness) IBOLookup.getServiceInstance(iwc, SupplierBrowserBusiness.class); } catch (IBOLookupException e) { throw new IBORuntimeException(e); } } }