package com.idega.presentation.ui; import java.util.Collection; import java.util.Iterator; import java.util.Vector; import com.idega.core.location.data.PostalCode; import com.idega.core.location.data.PostalCodeHome; import com.idega.data.IDOLookup; import com.idega.presentation.IWContext; import com.idega.presentation.remotescripting.RemoteScriptCollection; import com.idega.presentation.remotescripting.RemoteScriptHandler; import com.idega.presentation.remotescripting.RemoteScriptingResults; /** * @author gimmi */ public class LocationInputCollectionHandler implements RemoteScriptCollection { public RemoteScriptingResults getResults(IWContext iwc) { String sourceName = iwc.getParameter(RemoteScriptHandler.PARAMETER_SOURCE_PARAMETER_NAME); String action = iwc.getParameter(LocationInput.PARAMETER_ACTION); String sourceID = iwc.getParameter(sourceName); if (LocationInput.ACTION_UPDATE_CITIES.equals(action)) { return handleCityUpdate(sourceName, sourceID); } else if (LocationInput.ACTION_UPDATE_POSTAL_CODE.equals(action)) { return handlePostalCodeUpdate(iwc, sourceName, sourceID); } return null; } private RemoteScriptingResults handleCityUpdate(String sourceName, String countryID) { if (countryID != null) { try { PostalCodeHome pcHome = (PostalCodeHome) IDOLookup.getHome(PostalCode.class); Collection countryZips = pcHome.getUniquePostalCodeNamesByCountryIdOrderedByPostalCodeName(Integer.parseInt(countryID)); Vector ids = new Vector(); Vector names = new Vector(); Iterator itZips = countryZips.iterator(); if (itZips.hasNext()) { ids.add("-1"); names.add("Select"); } while (itZips.hasNext()) { String s = (String) itZips.next(); ids.add(s); names.add(s); } if (countryZips.isEmpty()) { ids.add("-1"); names.add("Unavailable"); } RemoteScriptingResults rsr = new RemoteScriptingResults(RemoteScriptHandler.getLayerName(sourceName, "id"), ids); rsr.addLayer(RemoteScriptHandler.getLayerName(sourceName, "name"), names); return rsr; } catch (Exception e) { e.printStackTrace(); } } return null; } private RemoteScriptingResults handlePostalCodeUpdate(IWContext iwc, String sourceName, String cityName) { if (cityName != null) { try { String parCountryID = iwc.getParameter(LocationInput.PARAMETER_COUNTRY_ID); String countryID = iwc.getParameter(parCountryID); PostalCodeHome pcHome = (PostalCodeHome) IDOLookup.getHome(PostalCode.class); Collection countryZips = pcHome.findByNameAndCountry(cityName, new Integer(countryID)); Vector ids = new Vector(); Vector names = new Vector(); Iterator itZips = countryZips.iterator(); if (itZips.hasNext()) { ids.add("-1"); names.add("Select"); } while (itZips.hasNext()) { PostalCode p = (PostalCode) itZips.next(); ids.add(p.getPrimaryKey().toString()); names.add(p.getPostalAddress()); } if (countryZips.isEmpty()) { ids.add("-1"); names.add("Unavailable"); } RemoteScriptingResults rsr = new RemoteScriptingResults(RemoteScriptHandler.getLayerName(sourceName, "id"), ids); rsr.addLayer(RemoteScriptHandler.getLayerName(sourceName, "name"), names); return rsr; } catch (Exception e) { e.printStackTrace(); } } return null; } }