/** * 发送email,报告错误 * * @param context * @param jobEx */ private void reportEmail(JobExecutionContext context, JobExecutionException jobEx) { ConfigUtil configUtil = ConfigUtil.getInstance(); MailEngine mailEngine = (MailEngine) ContextUtil.getSpringBeanById("mailEngine"); if (mailEngine == null) { return; } String error = new StringBuilder("Trigger[") .append(context.getTrigger().getName()) .append("]<br/> Time[") .append(new Date()) .append("]<br/><br/>StoreURL:") .append(ConfigUtil.getInstance().getStore().getSiteUrl()) .append("<br/><br/>") .append(jobEx.toString()) .toString(); Map model = new HashMap(); model.put("errorMsg", error); try { mailEngine.sendSimpleTemplateMail( EMAIL_TEMPLATE, model, null, null, configUtil.getBugReportEmail()); } catch (Exception e) { logger.error(e); } }
public Date getDefaultRecommendedProductExpireTime() { int conf = ConfigUtil.getInstance().getRecommendedProductExpireYears(); Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); cal.add(Calendar.YEAR, new Integer(conf).intValue()); return cal.getTime(); }
public void onConfigChanged() { logger.info( "Updating server side page cache time settings from: " + getTime() + " to: " + ConfigUtil.getInstance().getServerSidePageCacheSeconds()); setTime(ConfigUtil.getInstance().getServerSidePageCacheSeconds()); logger.info("Enable server side page caching? " + (getTime() > 0)); logger.info( "Updating browser side page cache time settings from: " + getCacheControlMaxAge() + " to: " + ConfigUtil.getInstance().getBrowserSidePageCacheSeconds()); setCacheControlMaxAge(ConfigUtil.getInstance().getBrowserSidePageCacheSeconds()); // logger.warn("Updating cachable urls: " + ConfigUtil.getInstance().getCachableUrls()); String[] cachableUris = StringUtil.toArrayByDel(ConfigUtil.getInstance().getCachableUrls(), ","); Collection<String> stores = ConfigUtil.getInstance().getAllStoreCodes(); for (String code : stores) { ArrayList<Pattern> patterns = matchPatterns.get(code); if (patterns == null) { patterns = new ArrayList<Pattern>(); matchPatterns.put(code, patterns); } if (cachableUris != null) { for (String uri : cachableUris) { uri = "^" + uri.replace("*", ".*"); Pattern p = Pattern.compile(uri); patterns.add(p); logger.info("URI cache match pattern :" + uri); } } } }
/** * save Synonym * * @param req * @param resp * @return */ public ModelAndView saveSynonym(HttpServletRequest req, HttpServletResponse resp) { String synonym = req.getParameter("synonym"); String searchServerPath = ConfigUtil.getInstance().getStoreSearchPath(); try { FileUtil.writeStringToFile(searchServerPath + "/product/conf/synonyms.txt", synonym); saveMessage(Message.info("searchServer.save.synonym.succeeded")); } catch (IOException e) { // TODO Auto-generated catch block logger.error(e); } ModelAndView mv = new ModelAndView(new RedirectView("/system/searchServer.html", true)); return mv; }
public ModelAndView review(HttpServletRequest request, HttpServletResponse response) { String uri = request.getRequestURI(); if (RequestContext.isAnonymousUser() && !ConfigUtil.getInstance().getIsAllowAnonymousReview()) { SessionUtil.setAttribute(request.getSession(), "HAS_ERRORS", Boolean.TRUE); saveMessage(Message.error("common.loginConfirm")); return new ModelAndView(new RedirectView(uri + "#review")); } Integer pIdcId[] = CatalogHelper.getInstance().getProductIdByUri(uri); Integer productId = pIdcId[0]; String message = request.getParameter("message"); String customerName = request.getParameter("customerName"); String subject = request.getParameter("subject"); Integer productRate = Integer.parseInt(request.getParameter("productRate").split("_")[1]); ; String attrRates[] = request.getParameterValues("rateItems"); if (productId.intValue() != 0 && productId.intValue() != 0) { ProductReview productReview = new ProductReview(); productReview.setProductId(productId); productReview.setSubject(subject); productReview.setMessage(message); if (RequestContext.isAnonymousUser()) { // TODO 设置匿名用户对象,系统必须存在Id为-2的匿名用户 productReview.setReviewUserId(Constants.USERID_ANONYMOUS); } else { productReview.setReviewUserId(RequestContext.getCurrentUserId()); } productReview.setCustomerName(customerName); productReview.setRate(productRate); productReview.setRemoteIp(request.getRemoteAddr()); productReview.setStore(ConfigUtil.getInstance().getStore()); if (attrRates == null) attrRates = new String[] {}; productMainManager.saveProductReviewAction(productReview, attrRates); saveMessage(Message.info("product.addReview.success")); } return new ModelAndView(new RedirectView(uri + "#review")); }
public ModelAndView defaultAction(HttpServletRequest req, HttpServletResponse resp) { removeNavFromSearchCriteria(req); // 获得admin的solrServer SolrServer coreadmin = solr.getSolrServer(SearchConstants.CORE_NAME_ADMIN); ModelAndView mv = new ModelAndView("system/searchServer"); try { // 获得product的status CoreAdminResponse mcr = CoreAdminRequest.getStatus(SearchConstants.CORE_NAME_PRODUCT, coreadmin); NamedList rs = mcr.getCoreStatus().get(SearchConstants.CORE_NAME_PRODUCT); NamedList indexInfo = (NamedList) rs.get("index"); mv.addObject("productCore", rs); mv.addObject("productIndexInfo", indexInfo); // 获得salesorder的status CoreAdminResponse so_mcr = CoreAdminRequest.getStatus(SearchConstants.CORE_NAME_SALESORDER, coreadmin); NamedList so_rs = so_mcr.getCoreStatus().get(SearchConstants.CORE_NAME_SALESORDER); NamedList so_indexInfo = (NamedList) so_rs.get("index"); mv.addObject("salesOrderCore", so_rs); mv.addObject("salesOrderIndexInfo", so_indexInfo); // 获得salesorder的status CoreAdminResponse cn_mcr = CoreAdminRequest.getStatus(SearchConstants.CORE_NAME_CONTENT, coreadmin); NamedList cn_rs = cn_mcr.getCoreStatus().get(SearchConstants.CORE_NAME_CONTENT); NamedList cn_indexInfo = (NamedList) cn_rs.get("index"); mv.addObject("contentCore", cn_rs); mv.addObject("contentIndexInfo", cn_indexInfo); String searchServerPath = ConfigUtil.getInstance().getStoreSearchPath(); if (logger.isDebugEnabled()) logger.debug("searchServerPath=" + searchServerPath); if (searchServerPath != null) { String synonyms = FileUtil.readFileToString(searchServerPath + "/product/conf/synonyms.txt"); String protwords = FileUtil.readFileToString(searchServerPath + "/product/conf/protwords.txt"); mv.addObject("synonyms", synonyms); mv.addObject("protwords", protwords); } } catch (Exception e) { logger.error(e); // TODO Auto-generated catch block e.printStackTrace(); } return mv; }
public void doFilterInternal( HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { if (ConfigUtil.getInstance().getIsGzipEnabled() && isGZIPSupported(request)) { if (log.isDebugEnabled()) { log.debug("GZIP supported, compressing response"); } GZIPResponseWrapper wrappedResponse = new GZIPResponseWrapper(response); chain.doFilter(request, wrappedResponse); wrappedResponse.finishResponse(); return; } chain.doFilter(request, response); }
/** * 获取订单,用于智能审核 * * @param sc * @return */ public List<OrderShipment> getOrderShipment4RobotReview(SearchCriteria sc) { // N分钟前 Calendar cal = Calendar.getInstance(); cal.add(Calendar.MINUTE, -ConfigUtil.getInstance().getOrderRobotReviewDelayMinutes()); Date dt1 = cal.getTime(); String hql = "select os from SalesOrder so, OrderShipment os where so.salesOrderId=os.salesOrder.salesOrderId and so.paymentStatus=? and so.isOnHold=0 and so.isLocked=0 and os.status=? and so.createTime<?"; // select so from SalesOrder so, OrderShipment os where // so.salesOrderId=os.salesOrder.salesOrderId and so.paymentStatus=30 and os.status=20 and // so.isOnHold = 0 order by so.salesOrderId desc return this.find( hql, sc.getStartIdx(), sc.getFetchSize(), OrderConstants.PAYMENT_STATUS_PAID, OrderConstants.SHIPMENT_STATUS_INVENTORY_ASSIGNED, dt1); }
/** * TODO 暂没有用上 * * @param request * @param response * @return * @throws Exception */ public ModelAndView productJSONData(HttpServletRequest request, HttpServletResponse response) throws Exception { Integer productId = RequestUtil.getInteger(request, "productId"); Product product = productManager.getById(productId); Integer storeId = ConfigUtil.getInstance().getStore().getStoreId(); ProductStat productStat = productStatManager.getProductStat(storeId, product.getId()); // TODO 是否只检查已激活的Sku信息 List<ProductSku> productSkuList = productSkuManager.findActiveProductSkusByProductId(productId); JSONObject jsonProduct = new JSONObject(); jsonProduct.put("productId", product.getProductId()); jsonProduct.put("productName", product.getProductName()); jsonProduct.put("productCode", product.getProductCode()); jsonProduct.put("availabilityRule", product.getAvailabilityRule()); Map<String, Object> jsonProductStat = new HashMap<String, Object>(); jsonProductStat.put("buyCount", productStat.getBuyCount()); jsonProductStat.put("averageRate", productStat.getAverageRate()); jsonProductStat.put("reviewCount", productStat.getReviewCount()); jsonProduct.put("productStat", jsonProductStat); List<Map<String, Object>> jsonProductSkus = new ArrayList<Map<String, Object>>(); for (ProductSku productSku : productSkuList) { Map<String, Object> jsonProductSku = new HashMap<String, Object>(); jsonProductSku.put("productSkuId", productSku.getProductSkuId()); jsonProductSku.put("productSkuCode", productSku.getProductSkuCode()); // 相应的价格等 Inventory inventory = inventoryService.getInventoryBySku(productSku.getId()); Map<String, Object> jsonInventory = new HashMap<String, Object>(); jsonInventory.put("productSkuId", inventory.getProductSkuId()); jsonInventory.put("quantityOnHand", inventory.getQuantityOnHand()); jsonInventory.put("allocatedQuantity", inventory.getAllocatedQuantity()); jsonInventory.put("availableQuantity", inventory.getAvailableQuantity()); jsonProductSku.put("inventory", jsonInventory); jsonProductSkus.add(jsonProductSku); if (productSku.getId().intValue() == product.getDefaultProductSkuId().intValue()) { jsonProduct.put("defaultProductSku", jsonProductSku); } } jsonProduct.put("productSkus", jsonProductSkus); PrintWriter out = response.getWriter(); out.println(jsonProduct.toString()); return null; }
private JSONObject productJSONData(Product product, List<ProductSku> productSkuList) { Integer storeId = ConfigUtil.getInstance().getStore().getStoreId(); ProductStat productStat = productStatManager.getProductStat(storeId, product.getId()); // TODO 是否只检查已激活的Sku信息 JSONObject jsonProduct = new JSONObject(); jsonProduct.put("productId", product.getProductId()); jsonProduct.put("productName", product.getProductName()); jsonProduct.put("productCode", product.getProductCode()); jsonProduct.put("availabilityRule", product.getAvailabilityRule()); jsonProduct.put( "expectedReleaseDate", product.getExpectedReleaseDate() == null ? "" : DateUtil.convertDateToString(product.getExpectedReleaseDate())); jsonProduct.put("preOrBackOrderLimit", product.getPreOrBackOrderLimit()); Map<String, Object> jsonProductStat = new HashMap<String, Object>(); jsonProductStat.put("buyCount", productStat.getBuyCount()); jsonProductStat.put("averageRate", productStat.getAverageRate()); jsonProductStat.put("reviewCount", productStat.getReviewCount()); jsonProduct.put("productStat", jsonProductStat); if (product.getProductKind().intValue() == CatalogConstants.PRODUCT_KIND_VARIATION.intValue()) { List<Map<String, Object>> jsonProductSkus = new ArrayList<Map<String, Object>>(); for (ProductSku productSku : productSkuList) { // 获取sku的选项及值,SkuOption及SkuOptionValue Map<SkuOption, SkuOptionValue> skuOptionAndValues = productMainManager.findSkuOptionAndValuesByProductSku(productSku.getId()); JSONObject jsonProductSku = skuToJson(productSku, skuOptionAndValues); jsonProductSkus.add(jsonProductSku); if (productSku.getId().intValue() == product.getDefaultProductSkuId().intValue()) { jsonProduct.put("defaultProductSku", jsonProductSku); } } jsonProduct.put("productSkus", jsonProductSkus); } return jsonProduct; }
protected String getMediaStorePath() { return ConfigUtil.getInstance().getMediaStorePath(); }
private JSONObject skuToJson( ProductSku productSku, Map<SkuOption, SkuOptionValue> skuOptionAndValues) { ConfigUtil configUtil = ConfigUtil.getInstance(); JSONObject jsonProductSku = new JSONObject(); jsonProductSku.put("productSkuId", productSku.getProductSkuId()); jsonProductSku.put("productSkuCode", productSku.getProductSkuCode()); jsonProductSku.put("image", productSku.getImage()); jsonProductSku.put( "weight", productSku.getWeight() == null ? null : productSku.getWeight().setScale(2, BigDecimal.ROUND_HALF_UP).toString()); // 相应的价格等 jsonProductSku.put("priceViewType", productSku.getPriceViewType()); jsonProductSku.put( "price", productSku.getPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString()); jsonProductSku.put( "salePrice", productSku.getSalePrice() == null ? null : productSku.getSalePrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString()); jsonProductSku.put( "discountPrice", productSku.getDiscountPrice() == null ? null : productSku.getDiscountPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString()); jsonProductSku.put( "listPrice", productSku.getListPrice() == null ? null : productSku.getListPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString()); jsonProductSku.put("discountPercent", productSku.getDiscountPercent()); // 获取批发价 Set<WholesalePrice> wholesalePrices = productSku.getWholesalePrices(); List<JSONArray> jsonWholesalePrices = new ArrayList<JSONArray>(); for (WholesalePrice wholesalePrice : wholesalePrices) { JSONArray jsonWholesalePrice = new JSONArray(); jsonWholesalePrice.add(wholesalePrice.getMinQuantity()); jsonWholesalePrice.add( wholesalePrice.getPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString()); jsonWholesalePrices.add(jsonWholesalePrice); } jsonProductSku.put("wholesalePrices", jsonWholesalePrices); // 获取产品媒体productMedia Set<ProductMedia> productMedias = productSku.getProductMedias(); JSONArray jsonProductMedias = new JSONArray(); for (ProductMedia media : productMedias) { jsonProductMedias.add(media.getMediaUrlLarge()); } jsonProductSku.put("productMedias", jsonProductMedias); // 获取库存信息 if (productSku.getProduct().getAvailabilityRule().intValue() != CatalogConstants.PRODUCT_AVAILABILITY_ALWAYS_SELL.intValue() && productSku.getProduct().getAvailabilityRule().intValue() != CatalogConstants.PRODUCT_AVAILABILITY_NOT_IN_STOCK_SELL) { Inventory inventory = productSku.getInventory(); // TODO 没有库存的全设置为0 if (inventory == null) { inventory = new Inventory(); inventory.setProductSku(productSku); inventory.setQuantityOnHand(0); inventory.setAllocatedQuantity(0); inventory.setReservedQuantity(0); inventory.setPreOrBackOrderedQty(0); } Map<String, Object> jsonInventory = new HashMap<String, Object>(); jsonInventory.put("productSkuId", inventory.getProductSkuId()); jsonInventory.put("quantityOnHand", inventory.getQuantityOnHand()); jsonInventory.put("allocatedQuantity", inventory.getAllocatedQuantity()); jsonInventory.put("availableQuantity", inventory.getAvailableQuantity()); jsonInventory.put( "expectedRestockDate", inventory.getExpectedRestockDate() == null ? "" : DateUtil.convertDateToString(inventory.getExpectedRestockDate())); jsonInventory.put("preOrBackOrderedQty", inventory.getPreOrBackOrderedQty()); jsonProductSku.put("inventory", jsonInventory); } if (skuOptionAndValues != null && skuOptionAndValues.size() > 0) { JSONArray jsonSkuOptions = new JSONArray(); Set<SkuOption> skuOptions = skuOptionAndValues.keySet(); for (SkuOption skuOption : skuOptions) { JSONObject jsonSkuOption = new JSONObject(); jsonSkuOption.put("id", skuOption.getId()); jsonSkuOption.put("vid", skuOptionAndValues.get(skuOption).getId()); jsonSkuOptions.add(jsonSkuOption); } jsonProductSku.put("skuOptions", jsonSkuOptions); } return jsonProductSku; }
// @RequestMapping(value={"/*_p{pId}_{cId}.html","/*_p{pId}.html",}) @RequestMapping(value = "/product/*.html") public ModelAndView defaultAction(HttpServletRequest request, HttpServletResponse response) { Store store = ConfigUtil.getInstance().getStore(); String uri = request.getRequestURI(); request.setAttribute("uri", uri); CatalogHelper catalogHelper = CatalogHelper.getInstance(); Integer pIdcId[] = catalogHelper.getProductIdByUri(uri); Integer productId = pIdcId[0]; Integer categoryId = pIdcId[1]; // 查找产品 Product product = productManager.getById(productId); // 没有找到相应产品或草稿状态的不能访问,直接进入找不到或已删除页面 if (product == null) { return notFoundPage(request, response); } // 获取导航目录 // 获取产品主目录 Category category = null; if (categoryId != null) { Category temp_category = catalogHelper.getCategoryById4Front(Constants.CATEGORY_TYPE_CATALOG, categoryId); if (temp_category != null) { Set<ProductCategory> productCategorySet = product.getProductCategorys(); for (ProductCategory productCategory : productCategorySet) { if (productCategory.getCategory().getCatalogId().intValue() == store.getCatalogId() && productCategory.getCategory().getId().intValue() == temp_category.getId()) { category = temp_category; break; } } } } // 指定目录不存在的直接获取产品主目录 if (category == null) { Category mainCategory = product.getMainCategory(); // 任何时候都从所以目录中查找,因为产品任何状态在前台都是可见的, /* if(mainCategory!=null) category=catalogHelper.getCategoryById4Front(Constants.CATEGORY_TYPE_CATALOG,mainCategory.getCategoryId());*/ // 缓存不存在该目录的,直接获取数据库的目录 if (category == null && mainCategory != null) { category = catalogHelper.getCategoryById4Front( Constants.CATEGORY_TYPE_CATALOG, mainCategory.getCategoryId()); } } // 检查请求的URI内的产品名是否正确,不正确的重定向到正确的URI // 目录已删除的不需要检查 if (category != null) { String productUri = catalogHelper.getProductUrl(product, store.getCatalogId(), category.getCategoryId()); try { if (!URLDecoder.decode(uri, "UTF-8").equals(request.getContextPath() + productUri)) { return new ModelAndView(new RedirectView301(productUri, true)); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } if (category == null) { return notFoundPage(request, response); } List<Category> navigatorCategorys = null; // 当目录为空的就不显示该目录相关信息,只显示产品数据 if (category != null) { // 获取产品导航目录 navigatorCategorys = category.getNavigatorCategorys(); } // 获取产品媒体 // // List<ProductMedia>productMoreImages=productMediaManager.findProductMediaByProductIdAndType(product.getProductId(), CatalogConstants.PRODUCT_MEDIA_TYPE_MORE_IMAGE); List<ProductMedia> productMoreImages = new ArrayList<ProductMedia>(product.getDefaultProductSku().getProductMedias()); List<ProductMediaUp> productMoreImagesUp = productMediaUpManager.findProductMediaByProductIdAndType( product.getProductId(), CatalogConstants.PRODUCT_MEDIA_TYPE_MORE_IMAGE); // 产品媒体附件 List<ProductMedia> productaccessories = productMediaManager.findProductMediaByProductIdAndType( product.getProductId(), CatalogConstants.PRODUCT_MEDIA_TYPE_ACCESSORIES); // 获取自定义属性组及值 List<ProductAttGroup> productAttGroups = productMainManager.findAttGroupAndProductAttrValueByProduct(product); // 获取库存信息 // Inventory inventory=inventoryService.getInventoryBySku(product.getDefaultProductSkuId()); Inventory inventory = product.getDefaultProductSku().getInventory(); ModelAndView modelAndView = null; // 激活状态下完整显示产品 String defaultView = "catalog/productTemplate"; if (product.getStatus().intValue() == Constants.STATUS_ACTIVE.intValue()) { String view = this.getTemplatePath(defaultView, product.getTemplatePath()); modelAndView = getModelAndView(view); JSONObject jsonProductModel = new JSONObject(); // 是否变种产品,变种产品时,显示带有sku选项 if (product.getProductKind().intValue() == CatalogConstants.PRODUCT_KIND_VARIATION.intValue()) { // SkuOption及值 Map<SkuOption, List<SkuOptionValue>> productSkuOptionAndValues = productMainManager.findSkuOptionsByProduct(productId); modelAndView.addObject("productSkuOptionAndValues", productSkuOptionAndValues); // 变种信息 List<ProductSku> productSkuList = productSkuManager.findActiveProductSkusByProductId(productId); // 为productSku设置促销价 promoService.appendPromoInfo(productSkuList); JSONArray jsonOptionAndSkuList = new JSONArray(); JSONArray jsonSkuOptionList = new JSONArray(); JSONArray jsonSkuOptionNameList = new JSONArray(); // 获取shu产品相关信息 for (ProductSku productSku : productSkuList) { // 设置价格显示方式 catalogHelper.setPriceViewType(productSku); // 获取sku的选项及值,SkuOption及SkuOptionValue Map<SkuOption, SkuOptionValue> skuOptionAndValues = productMainManager.findSkuOptionAndValuesByProductSku(productSku.getId()); Set<Entry<SkuOption, SkuOptionValue>> skuOptionAndValue = skuOptionAndValues.entrySet(); JSONArray temp_jsonSkuData = new JSONArray(); for (Entry<SkuOption, SkuOptionValue> entry : skuOptionAndValue) { temp_jsonSkuData.add(entry.getValue().getSkuOptionValueId()); } temp_jsonSkuData.add(productSku.getId()); jsonOptionAndSkuList.add(temp_jsonSkuData); if (jsonSkuOptionList.size() < 1) { Set<SkuOption> skuOptions = skuOptionAndValues.keySet(); for (SkuOption skuOption : skuOptions) { jsonSkuOptionList.add(skuOption.getId()); jsonSkuOptionNameList.add(skuOption.getSkuOptionName()); } } } jsonProductModel.put("jsonOptionAndSkuList", jsonOptionAndSkuList); jsonProductModel.put("jsonSkuOptionList", jsonSkuOptionList); jsonProductModel.put("jsonSkuOptionNameList", jsonSkuOptionNameList); jsonProductModel.put("jsonProduct", productJSONData(product, productSkuList)); modelAndView.addObject("jsonProductModel", jsonProductModel.toString()); modelAndView.addObject("jsonProduct", productJSONData(product, productSkuList)); } else { // 普通产品或产品包 // 为productSku设置促销价 ProductSku defaultProductSku = product.getDefaultProductSku(); promoService.appendPromoInfo(defaultProductSku); // 设置价格显示方式 catalogHelper.setPriceViewType(defaultProductSku); } } else if (product.getStatus().intValue() == Constants.STATUS_INACTIVE) { // 非激活状态下,简单显示产品 modelAndView = getModelAndView(defaultView); } else { response.setStatus(HttpServletResponse.SC_GONE); return getModelAndView("catalog/categoryErrorPage"); } // 获取产品评论项 List<ProductRateItem> productRateItemList = productRateItemManager.findProductRateItemsByProductType(product.getProductTypeId()); modelAndView.addObject("productRateItemList", productRateItemList); // 获取产品附件组,及相应的附件项 List<Map.Entry<AccessoryGroup, List<Accessory>>> productAccessoryList = productManager.getProductAccessoryMap(product.getProductId()); modelAndView.addObject("productAccessoryList", productAccessoryList); // 获取产品对应的促销信息(待性能提升) Vector<PRule> rules = pruleManager.getCartPromotionRules(); List<PRule> productRules = new ArrayList<PRule>(); for (PRule prule : rules) { short conditionOperator = prule.getConditionOperator(); if (prule.getRuleType().equals(PromoRule.PROMOTION_TYPE_CATALOGPROMOTION)) { conditionOperator += 2; } ConditionMaintainHandler conditionMaintainManager = new ConditionMaintainHandler(conditionOperator, prule.getConditions()); if (conditionMaintainManager.run(product)) { productRules.add(prule); } } modelAndView.addObject("productRules", productRules); modelAndView.addObject("product", product); modelAndView.addObject("category", category); modelAndView.addObject("navigatorCategorys", navigatorCategorys); modelAndView.addObject("productMoreImages", productMoreImages); modelAndView.addObject("productMoreImagesUp", productMoreImagesUp); modelAndView.addObject("productaccessories", productaccessories); modelAndView.addObject("productAttGroups", productAttGroups); modelAndView.addObject("inventory", inventory); return modelAndView; }