Author: jonesde
Date: Tue Feb 27 16:51:04 2007 New Revision: 512532 URL: http://svn.apache.org/viewvc?view=rev&rev=512532 Log: Implemented the rest of the ListPriceRangeConstraint ProductSearch constraint Modified: ofbiz/trunk/applications/ecommerce/config/EcommerceUiLabels.properties ofbiz/trunk/applications/product/config/ProductUiLabels.properties ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearchSession.java Modified: ofbiz/trunk/applications/ecommerce/config/EcommerceUiLabels.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/config/EcommerceUiLabels.properties?view=diff&rev=512532&r1=512531&r2=512532 ============================================================================== --- ofbiz/trunk/applications/ecommerce/config/EcommerceUiLabels.properties (original) +++ ofbiz/trunk/applications/ecommerce/config/EcommerceUiLabels.properties Tue Feb 27 16:51:04 2007 @@ -82,7 +82,9 @@ AccountingVisaMastercardAmexDiscover=Credit Card: Visa/Mastercard/Amex/Discover CommonDigitalProductUpload=Digital Product Upload CommonGotoPage=Go to Page +CommonLessThan=less than CommonMessages=Messages +CommonMoreThan=more than CommonNewListSubscription=New List Subscription CommonSubscribe=Subscribe CommonUnsubscribe=Unsubscribe @@ -332,6 +334,7 @@ EcommerceYourPrice=Your Price EcommerceYourShoppingCartEmpty=Your shopping cart is empty Factoids=Factoids +ListPriceRange=List Price Range OrderAdjustments=Adjustments OrderAdvancePayment=Advance Payment OrderAllowSplit=Allow Split Modified: ofbiz/trunk/applications/product/config/ProductUiLabels.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductUiLabels.properties?view=diff&rev=512532&r1=512531&r2=512532 ============================================================================== --- ofbiz/trunk/applications/product/config/ProductUiLabels.properties (original) +++ ofbiz/trunk/applications/product/config/ProductUiLabels.properties Tue Feb 27 16:51:04 2007 @@ -42,6 +42,8 @@ CatalogCompanyName=OFBiz: Catalog Manager Categories=Categories CategoryUploadImage=Upload Category Image +CommonLessThan=less than +CommonMoreThan=more than CommonSurveys=Surveys CommonVolume=Volume ContentHtmlBody=Html Body @@ -51,6 +53,7 @@ FacilityCompanyName=OFBiz: Facility Manager FeatureTypes=Feature Types Find=Find +ListPriceRange=List Price Range NoProductSpecifiedForUomConversion=Product-based UoM conversion requires a valid productId OrderConfirm=Confirm OrderFromOrder=from Order Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java?view=diff&rev=512532&r1=512531&r2=512532 ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java Tue Feb 27 16:51:04 2007 @@ -1004,20 +1004,74 @@ public static final String constraintName = "ListPriceRange"; protected Double lowPrice; protected Double highPrice; + protected String currencyUomId; - public ListPriceRangeConstraint(Double lowPrice, Double highPrice) { + public ListPriceRangeConstraint(Double lowPrice, Double highPrice, String currencyUomId) { this.lowPrice = lowPrice; this.highPrice = highPrice; + this.currencyUomId = UtilValidate.isNotEmpty(currencyUomId) ? currencyUomId : "USD"; } public void addConstraint(ProductSearchContext productSearchContext) { - // TODO: implement ListPriceRangeConstraint makeEntityCondition + // make index based values and increment + String entityAlias = "PP" + productSearchContext.index; + String prefix = "pp" + productSearchContext.index; + productSearchContext.index++; + + productSearchContext.dynamicViewEntity.addMemberEntity(entityAlias, "ProductPrice"); + + productSearchContext.dynamicViewEntity.addAlias(entityAlias, prefix + "ProductPriceTypeId", "productPriceTypeId", null, null, null, null); + productSearchContext.dynamicViewEntity.addAlias(entityAlias, prefix + "ProductPricePurposeId", "productPricePurposeId", null, null, null, null); + productSearchContext.dynamicViewEntity.addAlias(entityAlias, prefix + "CurrencyUomId", "currencyUomId", null, null, null, null); + productSearchContext.dynamicViewEntity.addAlias(entityAlias, prefix + "ProductStoreGroupId", "productStoreGroupId", null, null, null, null); + productSearchContext.dynamicViewEntity.addAlias(entityAlias, prefix + "FromDate", "fromDate", null, null, null, null); + productSearchContext.dynamicViewEntity.addAlias(entityAlias, prefix + "ThruDate", "thruDate", null, null, null, null); + productSearchContext.dynamicViewEntity.addAlias(entityAlias, prefix + "Price", "price", null, null, null, null); + + productSearchContext.dynamicViewEntity.addViewLink("PROD", entityAlias, Boolean.FALSE, ModelKeyMap.makeKeyMapList("productId")); + + productSearchContext.entityConditionList.add(new EntityExpr(prefix + "ProductPriceTypeId", EntityOperator.EQUALS, "LIST_PRICE")); + productSearchContext.entityConditionList.add(new EntityExpr(prefix + "ProductPricePurposeId", EntityOperator.EQUALS, "PURCHASE")); + productSearchContext.entityConditionList.add(new EntityExpr(prefix + "CurrencyUomId", EntityOperator.EQUALS, currencyUomId)); + productSearchContext.entityConditionList.add(new EntityExpr(prefix + "ProductStoreGroupId", EntityOperator.EQUALS, "_NA_")); + productSearchContext.entityConditionList.add(new EntityExpr(new EntityExpr(prefix + "ThruDate", EntityOperator.EQUALS, null), EntityOperator.OR, new EntityExpr(prefix + "ThruDate", EntityOperator.GREATER_THAN, productSearchContext.nowTimestamp))); + productSearchContext.entityConditionList.add(new EntityExpr(prefix + "FromDate", EntityOperator.LESS_THAN, productSearchContext.nowTimestamp)); + if (this.lowPrice != null) { + productSearchContext.entityConditionList.add(new EntityExpr(prefix + "Price", EntityOperator.GREATER_THAN_EQUAL_TO, this.lowPrice)); + } + if (this.highPrice != null) { + productSearchContext.entityConditionList.add(new EntityExpr(prefix + "Price", EntityOperator.LESS_THAN_EQUAL_TO, this.highPrice)); + } + + // add in productSearchConstraint, don't worry about the productSearchResultId or constraintSeqId, those will be fill in later + productSearchContext.productSearchConstraintList.add(productSearchContext.getDelegator().makeValue("ProductSearchConstraint", + UtilMisc.toMap("constraintName", constraintName, "infoString", "low [" + this.lowPrice + "] high [" + this.highPrice + "] currency [" + this.currencyUomId + "]"))); } - /** pretty print for log messages and even UI stuff */ public String prettyPrintConstraint(GenericDelegator delegator, boolean detailed, Locale locale) { - // TODO: implement the pretty print for log messages and even UI stuff - return null; + if (this.lowPrice == null && this.highPrice == null) { + // dummy constraint, no values + return null; + } + StringBuffer msgBuf = new StringBuffer(); + msgBuf.append(UtilProperties.getMessage(resource, "ListPriceRange", locale)); + msgBuf.append(": "); + + // NOTE: at this point we know that only one or none are null + if (this.lowPrice == null) { + msgBuf.append(UtilProperties.getMessage(resource, "CommonLessThan", locale)); + msgBuf.append(" "); + msgBuf.append(this.highPrice); + } else if (this.highPrice == null) { + msgBuf.append(UtilProperties.getMessage(resource, "CommonMoreThan", locale)); + msgBuf.append(" "); + msgBuf.append(this.lowPrice); + } else { + msgBuf.append(this.lowPrice); + msgBuf.append(" - "); + msgBuf.append(this.highPrice); + } + return msgBuf.toString(); } public boolean equals(Object obj) { Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearchSession.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearchSession.java?view=diff&rev=512532&r1=512531&r2=512532 ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearchSession.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearchSession.java Tue Feb 27 16:51:04 2007 @@ -401,6 +401,7 @@ } HttpSession session = request.getSession(); boolean constraintsChanged = false; + GenericValue productStore = ProductStoreWorker.getProductStore(request); // clear search? by default yes, but if the clearSearch parameter is N then don't String clearSearchString = (String) parameters.get("clearSearch"); @@ -488,8 +489,30 @@ constraintsChanged = true; } + // add a list price range to the search + if (UtilValidate.isNotEmpty((String) parameters.get("LIST_PRICE_LOW")) || UtilValidate.isNotEmpty((String) parameters.get("LIST_PRICE_HIGH"))) { + Double listPriceLow = null; + Double listPriceHigh = null; + String listPriceCurrency = UtilHttp.getCurrencyUom(request); + if (UtilValidate.isNotEmpty((String) parameters.get("LIST_PRICE_LOW"))) { + try { + listPriceLow = Double.valueOf((String) parameters.get("LIST_PRICE_LOW")); + } catch (NumberFormatException e) { + Debug.logError("Error parsing LIST_PRICE_LOW parameter [" + (String) parameters.get("LIST_PRICE_LOW") + "]: " + e.toString(), module); + } + } + if (UtilValidate.isNotEmpty((String) parameters.get("LIST_PRICE_HIGH"))) { + try { + listPriceHigh = Double.valueOf((String) parameters.get("LIST_PRICE_HIGH")); + } catch (NumberFormatException e) { + Debug.logError("Error parsing LIST_PRICE_HIGH parameter [" + (String) parameters.get("LIST_PRICE_HIGH") + "]: " + e.toString(), module); + } + } + searchAddConstraint(new ProductSearch.ListPriceRangeConstraint(listPriceLow, listPriceHigh, listPriceCurrency), session); + constraintsChanged = true; + } + // check the ProductStore to see if we should add the ExcludeVariantsConstraint - GenericValue productStore = ProductStoreWorker.getProductStore(request); if (productStore != null && !"N".equals(productStore.getString("prodSearchExcludeVariants"))) { searchAddConstraint(new ProductSearch.ExcludeVariantsConstraint(), session); // not consider this a change for now, shouldn't change often: constraintsChanged = true; |
Free forum by Nabble | Edit this page |