/* * Provided by CSTI Consulting * Following GNU LESSER GENERAL PUBLIC LICENSE * You may obtain more details at * * http://www.csticonsulting.com * Copyright (c) 2006-2010 Consultation CS-TI inc. * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package com.salesmanager.central.shipping; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import com.salesmanager.central.profile.Context; import com.salesmanager.central.profile.ProfileConstants; import com.salesmanager.central.util.ValidationException; import com.salesmanager.core.entity.reference.ModuleConfiguration; import com.salesmanager.core.service.ServiceFactory; import com.salesmanager.core.service.common.model.IntegrationKeys; import com.salesmanager.core.service.common.model.IntegrationProperties; import com.salesmanager.core.service.merchant.ConfigurationResponse; import com.salesmanager.core.service.merchant.MerchantService; import com.salesmanager.core.service.reference.ReferenceService; import com.salesmanager.core.util.ShippingUtil; import com.salesmanager.core.util.StringUtil; public class ShippingfedexAction extends ShippingModuleAction { // user selections submited from the page private List domesticServicesSelection = null; private List internationalServicesSelection = null; private String packageSelection = null; private IntegrationKeys keys; private IntegrationProperties properties; private final static String moduleid = "fedex"; private ConfigurationResponse configurations; private Map<String, String> internationalServicesMap;// available services // options private Map<String, String> domesticServicesMap;// available services // options private Map<String, String> packageMap;// available packages options options private Logger log = Logger.getLogger(ShippingupsxmlAction.class); @Override public void deleteModule() throws Exception { Context ctx = (Context) super.getServletRequest().getSession() .getAttribute(ProfileConstants.context); Integer merchantid = ctx.getMerchantid(); MerchantService mservice = (MerchantService) ServiceFactory .getService(ServiceFactory.MerchantService); mservice.cleanConfigurationLikeKeyModule("SHP_RT_", moduleid, merchantid); } @Override public void displayModule() throws Exception { if (configurations != null) { IntegrationKeys keys = (IntegrationKeys) configurations .getConfiguration("fedex-keys"); setKeys(keys); IntegrationProperties props = (IntegrationProperties) configurations .getConfiguration("fedex-properties"); setProperties(props); // choosen package [1 package allowed] String packageoption = (String) configurations .getConfiguration("package-fedex"); if (!StringUtils.isBlank(packageoption)) { setPackageSelection(packageoption); } else {// default value setPackageSelection("04"); } Map selectedintlservices = (Map) configurations .getConfiguration("service-intl-fedex"); if (selectedintlservices != null) { Iterator i = selectedintlservices.keySet().iterator(); List slist = new ArrayList(); while (i.hasNext()) { String key = (String) i.next(); slist.add(key); } setInternationalServicesSelection(slist); } // selected services /* * Map selectedintlservices = * (Map)configurations.getConfiguration("service-intl-fedex"); * * if(selectedintlservices!=null) { Iterator i = * selectedintlservices.keySet().iterator(); List slist = new * ArrayList(); while(i.hasNext()) { String key = (String)i.next(); * slist.add(key); } setInternationalServicesSelection(slist); } * * * Map selecteddomesticservices = * (Map)configurations.getConfiguration("service-dom-fedex"); * * if(selecteddomesticservices!=null) { Iterator i = * selecteddomesticservices.keySet().iterator(); List slist = new * ArrayList(); while(i.hasNext()) { String key = (String)i.next(); * slist.add(key); } setDomesticServicesSelection(slist); } */ } } @Override public void prepareModule() throws Exception { Context ctx = (Context) super.getServletRequest().getSession() .getAttribute(ProfileConstants.context); Integer merchantid = ctx.getMerchantid(); ReferenceService rservice = (ReferenceService) ServiceFactory .getService(ServiceFactory.ReferenceService); Locale locale = getLocale(); // String country = locale.getCountry(); // if(locale.getVariant().equals("EUR")) { // country = "X1"; // } String country = "XX"; ModuleConfiguration serviceconfig = null; /* * //get domestic services ModuleConfiguration serviceconfig = * rservice.getModuleConfiguration(moduleid,"service-dom",country); * * if(serviceconfig==null) { serviceconfig = * rservice.getModuleConfiguration(moduleid,"service","XX");//generic } * * if(serviceconfig==null) { throw new * Exception("ModuleConfiguration does not exist for " + moduleid + * "-service-dom-XX-" + locale.getCountry()); } * * * String domesticserviceline = serviceconfig.getConfigurationValue(); * * * * * Map localservicemap = * ShippingUtil.getConfigurationValuesMap(domesticserviceline * ,moduleid,locale); if(localservicemap!=null) { * this.setDomesticServicesMap(localservicemap); } */ // if user supports shipping to international // if(super.getShippingType().equals(ShippingConstants.INTERNATIONAL_SHIPPING)) // { // get intl services serviceconfig = rservice.getModuleConfiguration(moduleid, "service", country); if (serviceconfig == null) { serviceconfig = rservice.getModuleConfiguration(moduleid, "service", "XX");// generic } if (serviceconfig == null) { throw new Exception("ModuleConfiguration does not exist for " + moduleid + "service XX"); } String intlserviceline = serviceconfig.getConfigurationValue(); Map intlservicemap = ShippingUtil.getConfigurationValuesMap( intlserviceline, moduleid, locale); // if(localservicemap!=null) { this.setInternationalServicesMap(intlservicemap); // } // } Map packages = ShippingUtil.buildPackageMap(moduleid, locale); if (packages != null) { setPackageMap(packages); } // get merchant configs MerchantService mservice = (MerchantService) ServiceFactory .getService(ServiceFactory.MerchantService); ConfigurationResponse config = mservice.getConfigurationByModule( moduleid, merchantid); this.setConfigurations(config); } @Override public void saveModule() throws Exception { boolean fielderror = false; if (this.getKeys() == null || StringUtils.isBlank(this.getKeys().getKey1())) { addFieldError("keys.key1", getText("errors.required.fedexkey")); fielderror = true; } if (StringUtils.isBlank(this.getKeys().getUserid())) { addFieldError("keys.userid", getText("errors.required.userid")); fielderror = true; } if (StringUtils.isBlank(this.getKeys().getPassword())) { addFieldError("keys.password", getText("errors.required.fedexpassword")); fielderror = true; } if (StringUtils.isBlank(this.getKeys().getKey2())) { addFieldError("keys.key2", getText("errors.required.fedexmeter")); fielderror = true; } if (this.getInternationalServicesSelection() == null || this.getInternationalServicesSelection().size() == 0 || this.getInternationalServicesSelection().size() > 3) { addFieldError("internationalServicesSelection", getText("label.shipping.chooseinternational")); fielderror = true; } if (fielderror) { throw new ValidationException("Missing fields"); } Context ctx = (Context) super.getServletRequest().getSession() .getAttribute(ProfileConstants.context); Integer merchantid = ctx.getMerchantid(); String submitedcredentials = ShippingUtil.buildShippingKeyLine(keys); String submitedproperties = ShippingUtil .buildShippingPropertiesLine(this.getProperties()); String intlserviceline = null; if (this.getInternationalServicesSelection() != null && this.getInternationalServicesSelection().size() > 0) { intlserviceline = StringUtil.buildMultipleValueLine(this .getInternationalServicesSelection()); } String packageOption = getPackageSelection(); List modulestosave = ShippingUtil.arrangeConfigurationsToSave( merchantid, configurations, moduleid, submitedcredentials, submitedproperties, packageOption, null, intlserviceline); MerchantService mservice = (MerchantService) ServiceFactory .getService(ServiceFactory.MerchantService); mservice.saveOrUpdateMerchantConfigurations(modulestosave); } public ConfigurationResponse getConfigurations() { return configurations; } public void setConfigurations(ConfigurationResponse configurations) { this.configurations = configurations; } public IntegrationKeys getKeys() { return keys; } public void setKeys(IntegrationKeys keys) { this.keys = keys; } public Map<String, String> getPackageMap() { return packageMap; } public void setPackageMap(Map<String, String> packageMap) { this.packageMap = packageMap; } public String getPackageSelection() { return packageSelection; } public void setPackageSelection(String packageSelection) { this.packageSelection = packageSelection; } public Map<String, String> getDomesticServicesMap() { return domesticServicesMap; } public void setDomesticServicesMap(Map<String, String> domesticServicesMap) { this.domesticServicesMap = domesticServicesMap; } public Map<String, String> getInternationalServicesMap() { return internationalServicesMap; } public void setInternationalServicesMap( Map<String, String> internationalServicesMap) { this.internationalServicesMap = internationalServicesMap; } public List getDomesticServicesSelection() { return domesticServicesSelection; } public void setDomesticServicesSelection(List domesticServicesSelection) { this.domesticServicesSelection = domesticServicesSelection; } public List getInternationalServicesSelection() { return internationalServicesSelection; } public void setInternationalServicesSelection( List internationalServicesSelection) { this.internationalServicesSelection = internationalServicesSelection; } public IntegrationProperties getProperties() { return properties; } public void setProperties(IntegrationProperties properties) { this.properties = properties; } }