/* * 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.catalog; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.configuration.Configuration; import org.apache.log4j.Logger; import org.hibernate.HibernateException; import com.salesmanager.central.PageBaseAction; import com.salesmanager.central.profile.Context; import com.salesmanager.central.profile.ProfileConstants; import com.salesmanager.central.util.PropertiesHelper; import com.salesmanager.core.entity.catalog.SearchProductCriteria; import com.salesmanager.core.entity.catalog.SearchProductResponse; import com.salesmanager.core.service.ServiceFactory; import com.salesmanager.core.service.catalog.CatalogService; import com.salesmanager.core.util.LanguageUtil; import com.salesmanager.core.util.LocaleUtil; public class ProductListAction extends PageBaseAction { private static Logger log = Logger.getLogger(ProductListAction.class); private static Configuration config = PropertiesHelper.getConfiguration(); private static int listsize = 20; static { listsize = config.getInt("core.productlist.maxsize", 20); } /** * For updating the availability * * @return * @throws Exception */ public String updateavailability() throws Exception { super.setPageTitle("label.prodlist.title"); try { Context ctx = (Context) super.getServletRequest().getSession() .getAttribute(ProfileConstants.context); String check[] = super.getServletRequest().getParameterValues( "prodavailability"); String original[] = super.getServletRequest().getParameterValues( "prodlist"); Map checked = new HashMap(); // Set the availability for checked entries if (check != null && check.length > 0) { List cids = new ArrayList(); for (int i = 0; i < check.length; i++) { // retrieve product id String id = check[i]; cids.add(Long.valueOf(id)); checked.put(id, id); } CatalogService cservice = (CatalogService) ServiceFactory .getService(ServiceFactory.CatalogService); cservice.updateProductListAvailability(true, super.getContext() .getMerchantid(), cids); } // unset the availability for unchecked entries if (original.length != checked.size() && original.length >= checked.size()) { int ifound = original.length - checked.size(); if (original != null && original.length > 0) { List ids = new ArrayList(); int curfound = 0; for (int i = 0; i < original.length; i++) { String id = original[i]; if (!checked.containsKey(id)) { ids.add(Long.valueOf(id)); curfound++; } } CatalogService cservice = (CatalogService) ServiceFactory .getService(ServiceFactory.CatalogService); cservice.updateProductListAvailability(false, super .getContext().getMerchantid(), ids); } } super.setSuccessMessage(); return SUCCESS; } catch (HibernateException e) { log.error(e); throw e; } } /** * For displaying the listing page * * @return * @throws Exception */ public String show() throws Exception { super.setPageTitle("label.prodlist.title"); try { Context ctx = (Context) super.getServletRequest().getSession() .getAttribute(ProfileConstants.context); // this property is specific to central String sstartindex = super.getServletRequest().getParameter( "startindex"); String categ = super.getServletRequest().getParameter("categ"); String productname = super.getServletRequest().getParameter( "productname"); String availability = super.getServletRequest().getParameter( "availability"); String status = super.getServletRequest().getParameter("status"); super.getServletRequest().setAttribute("categ", -1); super.getServletRequest().setAttribute("productname", ""); super.getServletRequest().setAttribute("availability", "2"); super.getServletRequest().setAttribute("status", "2"); SearchProductCriteria criteria = new SearchProductCriteria(); // include the requested category in the query if (categ != null && !categ.equals("") && !categ.equals("-1")) { try { int categid = Integer.parseInt(categ); criteria.setCategoryid(categid); super.getServletRequest().setAttribute("categoryfilter", categ); } catch (Exception e) { log .error("Cannot parse String " + categ + " to categoryid"); } } if (productname != null && !productname.equals("")) { criteria.setDescription(productname); super.getServletRequest().setAttribute("productname", productname); } if (availability != null && !availability.equals("")) {// availability if (availability.equals("1")) { criteria .setVisible(ProductSearchFilterCriteria.VISIBLETRUE); } if (availability.equals("2")) { criteria.setVisible(ProductSearchFilterCriteria.VISIBLEALL); } if (availability.equals("0")) { criteria .setVisible(ProductSearchFilterCriteria.VISIBLEFALSE); } super.getServletRequest().setAttribute("availability", availability); } if (status != null && !status.equals("")) {// visibility if (status.equals("1")) { criteria .setStatus(ProductSearchFilterCriteria.STATUSINSTOCK); } if (status.equals("2")) { criteria.setStatus(ProductSearchFilterCriteria.STATUSALL); } if (status.equals("0")) { criteria .setStatus(ProductSearchFilterCriteria.STATUSOUTSTOCK); } super.getServletRequest().setAttribute("status", status); } setSize(listsize); super.setPageStartNumber(); criteria.setMerchantId(super.getContext().getMerchantid()); criteria.setQuantity(this.getSize()); criteria.setStartindex(this.getPageStartIndex()); criteria.setLanguageId(LanguageUtil.getLanguageNumberCode(super .getContext().getLang())); CatalogService cservice = (CatalogService) ServiceFactory .getService(ServiceFactory.CatalogService); SearchProductResponse response = cservice.findProducts(criteria); super.getServletRequest().setAttribute("PRODUCTSLIST", response.getProducts()); super.setListingCount(response.getCount()); super.setRealCount(response.getProducts().size()); super.setPageElements(); Collection prds = response.getProducts(); LocaleUtil.setLocaleToEntityCollection(prds, super.getLocale()); return SUCCESS; } catch (HibernateException e) { log.error(e); throw e; } } }