package org.onehippo.forge.konakart.hst.wizard.checkout.activity; import org.apache.commons.lang.StringUtils; import org.onehippo.forge.konakart.hst.utils.KKActionsConstants; import org.onehippo.forge.konakart.hst.utils.KKUtil; import org.onehippo.forge.konakart.hst.wizard.ActivityException; import org.onehippo.forge.konakart.hst.wizard.checkout.CheckoutSeedData; import org.onehippo.forge.konakart.site.service.KKServiceHelper; import java.util.Arrays; import java.util.List; public class ShippingMethodActivity extends BaseCheckoutActivity { private static final String SHIPPING_QUOTES = "shippingQuotes"; private static final String SHIPPING_METHOD = "shipMethod"; @Override public void doBeforeRender() throws ActivityException { if (!validateCurrentCart()) { return; } hstRequest.setAttribute(SHIPPING_QUOTES, kkAppEng.getOrderMgr().getShippingQuotes()); hstRequest.setAttribute(SHIPPING_METHOD, kkAppEng.getOrderMgr().getCheckoutOrder().getShippingMethod()); } @Override public void doAction() throws ActivityException { super.doAction(); CheckoutSeedData seedData = (CheckoutSeedData) processorContext.getSeedData(); if (seedData.getAction().equals(KKActionsConstants.ACTIONS.SELECT.name())) { String shippingMethod = KKUtil.getActionRequestParameter(seedData.getRequest(), SHIPPING_METHOD); if (StringUtils.isEmpty(shippingMethod)) { updateNextLoggedState(KKActionsConstants.STATES.SHIPPING_METHOD.name()); addMessage(GLOBALMESSAGE, seedData.getBundleAsString("checkout.select.shipping.method")); return; } // Attach the shipping quote to the order KKServiceHelper.getKKEngineService().getKKAppEng(hstRequest).getOrderMgr().addShippingQuoteToOrder(shippingMethod); } } @Override public void doAdditionalData() { super.doAdditionalData(); CheckoutSeedData seedData = (CheckoutSeedData) processorContext.getSeedData(); List<String> acceptedStates = Arrays.asList(KKActionsConstants.STATES.PAYMENT_METHOD.name(), KKActionsConstants.STATES.ORDER_REVIEW.name()); String state = seedData.getState(); if (StringUtils.isNotEmpty(state) && acceptedStates.contains(state)) { hstRequest.getRequestContext().setAttribute(getAcceptState().concat("_EDIT"), true); hstRequest.setAttribute(getAcceptState().concat("_EDIT"), true); } } }