You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by si...@apache.org on 2007/12/22 01:37:13 UTC

svn commit: r606361 - /ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java

Author: sichen
Date: Fri Dec 21 16:37:13 2007
New Revision: 606361

URL: http://svn.apache.org/viewvc?rev=606361&view=rev
Log:
Include special search constraint to correctly find products with prices defined in the appropriate store group.  Using this constraint will allow you to restrict products to those that have prices defined for the store group, rather that getting any product.  An implementation in ProductSearchSession is TODO.

Modified:
    ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java

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?rev=606361&r1=606360&r2=606361&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java Fri Dec 21 16:37:13 2007
@@ -1513,6 +1513,62 @@
         }
     }
 
+    public static class StoreGroupPriceConstraint extends ProductSearchConstraint {
+        public static final String constraintName = "StoreGroupPrice";
+        protected String productStoreGroupId;
+        protected String productPriceTypeId;
+        protected String currencyUomId;
+
+        public StoreGroupPriceConstraint(String productStoreGroupId, String productPriceTypeId, String currencyUomId) {
+            this.productStoreGroupId = productStoreGroupId;
+            this.productPriceTypeId = productPriceTypeId == null ? "LIST_PRICE" : productPriceTypeId;
+            this.currencyUomId = currencyUomId;
+        }
+
+        public void addConstraint(ProductSearchContext context) {
+            String entityAlias = "PSPP" + context.index;
+            String prefix = "PSPP" + context.index;
+            context.dynamicViewEntity.addMemberEntity(entityAlias, "ProductPrice");
+
+            context.dynamicViewEntity.addAlias(entityAlias, prefix + "ProductPriceTypeId", "productPriceTypeId", null, null, null, null);
+            context.dynamicViewEntity.addAlias(entityAlias, prefix + "ProductPricePurposeId", "productPricePurposeId", null, null, null, null);
+            context.dynamicViewEntity.addAlias(entityAlias, prefix + "CurrencyUomId", "currencyUomId", null, null, null, null);
+            context.dynamicViewEntity.addAlias(entityAlias, prefix + "ProductStoreGroupId", "productStoreGroupId", null, null, null, null);
+            context.dynamicViewEntity.addAlias(entityAlias, prefix + "FromDate", "fromDate", null, null, null, null);
+            context.dynamicViewEntity.addAlias(entityAlias, prefix + "ThruDate", "thruDate", null, null, null, null);
+
+            context.dynamicViewEntity.addViewLink("PROD", entityAlias, Boolean.FALSE, ModelKeyMap.makeKeyMapList("productId"));
+
+            context.entityConditionList.add(new EntityExpr(prefix + "ProductPriceTypeId", EntityOperator.EQUALS, productPriceTypeId));
+            context.entityConditionList.add(new EntityExpr(prefix + "ProductPricePurposeId", EntityOperator.EQUALS, "PURCHASE"));
+            context.entityConditionList.add(new EntityExpr(prefix + "CurrencyUomId", EntityOperator.EQUALS, currencyUomId));
+            context.entityConditionList.add(new EntityExpr(prefix + "ProductStoreGroupId", EntityOperator.EQUALS, productStoreGroupId));
+            context.entityConditionList.add(new EntityExpr(new EntityExpr(prefix + "ThruDate", EntityOperator.EQUALS, null), EntityOperator.OR, new EntityExpr(prefix + "ThruDate", EntityOperator.GREATER_THAN, context.nowTimestamp)));
+            context.entityConditionList.add(new EntityExpr(prefix + "FromDate", EntityOperator.LESS_THAN, context.nowTimestamp));
+        }
+
+        public String prettyPrintConstraint(GenericDelegator delegator, boolean detailed, Locale locale) {
+            StringBuffer buff = new StringBuffer();
+            buff.append("Product Store Mandatory Price Constraint: ");
+            buff.append("Product Store Group ["+productStoreGroupId+"], ");
+            buff.append("Product Price Type ["+productPriceTypeId+"], ");
+            buff.append("Currency ["+currencyUomId+"].");
+            return buff.toString();
+        }
+
+        public boolean equals(Object o) {
+            if (o instanceof StoreGroupPriceConstraint) {
+                StoreGroupPriceConstraint other = (StoreGroupPriceConstraint) o;
+                if (other.productStoreGroupId.equals(productStoreGroupId) &&
+                       other.productPriceTypeId.equals(productPriceTypeId) &&
+                       other.currencyUomId.equals(currencyUomId)) {
+                    return true;
+                }
+            }
+            return false;
+        }
+    }
+
     public static class ListPriceRangeConstraint extends ProductSearchConstraint {
         public static final String constraintName = "ListPriceRange";
         protected Double lowPrice;