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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

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

sichen
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;