/*
* Licensed to csti consulting
* You may obtain a copy of the License at
*
* http://www.csticonsulting.com
* Copyright (c) 2006-Aug 25, 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.catalog;
import java.util.Locale;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import com.opensymphony.xwork2.ActionInvocation;
import com.salesmanager.checkout.util.MiniShoppingCartUtil;
import com.salesmanager.common.ShopInterceptor;
import com.salesmanager.core.constants.CatalogConstants;
import com.salesmanager.core.entity.merchant.MerchantStore;
import com.salesmanager.core.entity.orders.ShoppingCart;
import com.salesmanager.core.util.LocaleUtil;
import com.salesmanager.core.util.MiniShoppingCartSerializationUtil;
import com.salesmanager.core.util.ReferenceUtil;
import com.salesmanager.core.util.StringUtil;
import com.salesmanager.core.util.www.BaseActionAware;
import com.salesmanager.core.util.www.SessionUtil;
/**
* Information on the store, request parameters, Locale
*
* @author Carl Samson
*
*/
public class CatalogInterceptor extends ShopInterceptor {
private static Logger log = Logger.getLogger(CatalogInterceptor.class);
@Override
protected String doIntercept(ActionInvocation invoke,
HttpServletRequest req, HttpServletResponse resp) throws Exception {
/** remove profile url **/
req.getSession().removeAttribute("profileUrl");
/** synchronize mini shopping cart**/
//get http session shopping cart
ShoppingCart cart = SessionUtil.getMiniShoppingCart(req);
MerchantStore mStore = SessionUtil.getMerchantStore(req);
if(cart==null) {//synch only when the cart is null or empty
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
if(cookie.getName().equals(CatalogConstants.SKU_COOKIE + mStore.getMerchantId())) {
Locale locale = LocaleUtil.getLocale(req);
String cookieValue = StringUtil.unescape(cookie.getValue());
ShoppingCart sc = MiniShoppingCartSerializationUtil.deserializeJSON(cookieValue, mStore, locale);
if(sc!=null) {
MiniShoppingCartUtil.calculateTotal(sc,mStore);
SessionUtil.setMiniShoppingCart(sc, req);
} else {//expire cookie
cookie.setValue(null);
cookie.setMaxAge(0);
resp.addCookie(cookie);
}
}
}
}
}
return null;
}
}