Author: jonesde
Date: Tue Jan 16 00:22:08 2007 New Revision: 496617 URL: http://svn.apache.org/viewvc?view=rev&rev=496617 Log: Added ExcludeVariants constraint for the ProductSearch stuff, plus an indicator on the ProductStore to turn it on an off; also made small change in the way the auto-add of the view allow constraint works; did a few brief tests and all seems to be working fine Modified: ofbiz/trunk/applications/product/config/ProductUiLabels.properties ofbiz/trunk/applications/product/data/ProductTypeData.xml ofbiz/trunk/applications/product/entitydef/entitymodel.xml ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearchSession.java ofbiz/trunk/applications/product/webapp/catalog/store/ProductStoreForms.xml Modified: ofbiz/trunk/applications/product/config/ProductUiLabels.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductUiLabels.properties?view=diff&rev=496617&r1=496616&r2=496617 ============================================================================== --- ofbiz/trunk/applications/product/config/ProductUiLabels.properties (original) +++ ofbiz/trunk/applications/product/config/ProductUiLabels.properties Tue Jan 16 00:22:08 2007 @@ -1,7 +1,4 @@ ##################################################################### -# -# Copyright 2001-2006 The Apache Software Foundation -# # Licensed under the Apache License, Version 2.0 (the "License"); you may not # use this file except in compliance with the License. You may obtain a copy of # the License at @@ -516,6 +513,7 @@ ProductEstimatedStartArrive=Estimated (Start-Arrive) ProductExcludeGeoMessage=Displays only if ship-to is not in this geo ProductExcludeGeo=Exclude Geo +ProductExcludeVariants=Exclude Variants ProductExcGeo=Exc Geo ProductExcludeFeatureMessage=Displays only if all items have no features in this group ProductExcludeFeature=Exclude Feature Group Modified: ofbiz/trunk/applications/product/data/ProductTypeData.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/data/ProductTypeData.xml?view=diff&rev=496617&r1=496616&r2=496617 ============================================================================== --- ofbiz/trunk/applications/product/data/ProductTypeData.xml (original) +++ ofbiz/trunk/applications/product/data/ProductTypeData.xml Tue Jan 16 00:22:08 2007 @@ -1,7 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- -Copyright 2001-2006 The Apache Software Foundation - Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at Modified: ofbiz/trunk/applications/product/entitydef/entitymodel.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/entitydef/entitymodel.xml?view=diff&rev=496617&r1=496616&r2=496617 ============================================================================== --- ofbiz/trunk/applications/product/entitydef/entitymodel.xml (original) +++ ofbiz/trunk/applications/product/entitydef/entitymodel.xml Tue Jan 16 00:22:08 2007 @@ -3081,6 +3081,7 @@ <field name="vatTaxAuthPartyId" type="id"></field> <field name="enableAutoSuggestionList" type="indicator"><description>The auto-suggestion list is a special ShoppingList that the addSuggestionsToShoppingList service will maintain for cross-sells of ordered items.</description></field> <field name="enableDigProdUpload" type="indicator"></field> + <field name="prodSearchExcludeVariants" type="indicator"><description>default Y; if set to Y an additional constraint will of isVariant!=Y will be added to all product searches for the store</description></field> <field name="digProdUploadCategoryId" type="id"></field> <field name="autoOrderCcTryExp" type="indicator"><description>For auto-orders try other Credit Card expiration dates (if date is wrong or general failure where type not known)?</description></field> <field name="autoOrderCcTryOtherCards" type="indicator"><description>For auto-orders try other Credit Cards for the customer?</description></field> 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=496617&r1=496616&r2=496617 ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearch.java Tue Jan 16 00:22:08 2007 @@ -1086,6 +1086,34 @@ } } + public static class ExcludeVariantsConstraint extends ProductSearchConstraint { + public static final String constraintName = "ExcludeVariants"; + + public ExcludeVariantsConstraint() { + } + + public void addConstraint(ProductSearchContext productSearchContext) { + productSearchContext.dynamicViewEntity.addAlias("PROD", "prodIsVariant", "isVariant", null, null, null, null); + productSearchContext.entityConditionList.add(new EntityExpr("prodIsVariant", EntityOperator.NOT_EQUAL, "Y")); + + // 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", ""))); + } + + public String prettyPrintConstraint(GenericDelegator delegator, boolean detailed, Locale locale) { + return UtilProperties.getMessage(resource, "ProductExcludeVariants", locale); + } + + public boolean equals(Object obj) { + ProductSearchConstraint psc = (ProductSearchConstraint) obj; + if (psc instanceof ExcludeVariantsConstraint) { + return true; + } else { + return false; + } + } + } + // ====================================================================== // Result Sort Classes // ====================================================================== 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=496617&r1=496616&r2=496617 ============================================================================== --- ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearchSession.java (original) +++ ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductSearchSession.java Tue Jan 16 00:22:08 2007 @@ -33,6 +33,8 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import javolution.util.FastList; + import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.UtilHttp; import org.ofbiz.base.util.UtilMisc; @@ -89,7 +91,7 @@ public static void addConstraint(ProductSearchConstraint productSearchConstraint, HttpSession session) { ProductSearchOptions productSearchOptions = getProductSearchOptions(session); if (productSearchOptions.constraintList == null) { - productSearchOptions.constraintList = new LinkedList(); + productSearchOptions.constraintList = FastList.newInstance(); } if (!productSearchOptions.constraintList.contains(productSearchConstraint)) { productSearchOptions.constraintList.add(productSearchConstraint); @@ -152,7 +154,7 @@ public List searchGetConstraintStrings(boolean detailed, GenericDelegator delegator, Locale locale) { List productSearchConstraintList = this.getConstraintList(); - List constraintStrings = new ArrayList(); + List constraintStrings = FastList.newInstance(); if (productSearchConstraintList == null) { return constraintStrings; } @@ -331,8 +333,6 @@ return new ArrayList(); } - // make sure the view allow category is included - productSearchConstraintList = ensureViewAllowConstraint(productSearchConstraintList, prodCatalogId, delegator); ResultSortOrder resultSortOrder = productSearchOptions.getResultSortOrder(); // if the search options have changed since the last search, put at the beginning of the options history list @@ -341,19 +341,6 @@ return ProductSearch.searchProducts(productSearchConstraintList, resultSortOrder, delegator, visitId); } - public static List ensureViewAllowConstraint(List productSearchConstraintList, String prodCatalogId, GenericDelegator delegator) { - String viewProductCategoryId = CatalogWorker.getCatalogViewAllowCategoryId(delegator, prodCatalogId); - if (UtilValidate.isNotEmpty(viewProductCategoryId)) { - ProductSearchConstraint viewAllowConstraint = new CategoryConstraint(viewProductCategoryId, true); - if (!productSearchConstraintList.contains(viewAllowConstraint)) { - // don't add to same list, will modify the one in the session, create new list - productSearchConstraintList = new ArrayList(productSearchConstraintList); - productSearchConstraintList.add(viewAllowConstraint); - } - } - return productSearchConstraintList; - } - public static void searchClear(HttpSession session) { ProductSearchOptions.clearSearchOptions(session); } @@ -403,6 +390,7 @@ } public static void processSearchParameters(Map parameters, HttpServletRequest request) { + GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator"); Boolean alreadyRun = (Boolean) request.getAttribute("processSearchParametersAlreadyRun"); if (Boolean.TRUE.equals(alreadyRun)) { return; @@ -509,7 +497,22 @@ searchAddConstraint(new ProductSearch.SupplierConstraint(supplierPartyId), 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; + } + String prodCatalogId = CatalogWorker.getCurrentCatalogId(request); + String viewProductCategoryId = CatalogWorker.getCatalogViewAllowCategoryId(delegator, prodCatalogId); + if (UtilValidate.isNotEmpty(viewProductCategoryId)) { + ProductSearchConstraint viewAllowConstraint = new CategoryConstraint(viewProductCategoryId, true); + searchAddConstraint(viewAllowConstraint, session); + // not consider this a change for now, shouldn't change often: constraintsChanged = true; + } + // set the sort order String sortOrder = (String) parameters.get("sortOrder"); String sortAscending = (String) parameters.get("sortAscending"); @@ -587,7 +590,6 @@ // if the search options have changed since the last search, put at the beginning of the options history list checkSaveSearchOptionsHistory(session); - productSearchConstraintList = ensureViewAllowConstraint(productSearchConstraintList, prodCatalogId, delegator); ResultSortOrder resultSortOrder = ProductSearchOptions.getResultSortOrder(request); ProductSearchContext productSearchContext = new ProductSearchContext(delegator, visitId); Modified: ofbiz/trunk/applications/product/webapp/catalog/store/ProductStoreForms.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/store/ProductStoreForms.xml?view=diff&rev=496617&r1=496616&r2=496617 ============================================================================== --- ofbiz/trunk/applications/product/webapp/catalog/store/ProductStoreForms.xml (original) +++ ofbiz/trunk/applications/product/webapp/catalog/store/ProductStoreForms.xml Tue Jan 16 00:22:08 2007 @@ -1,8 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> <!-- - -Copyright 2001-2006 The Apache Software Foundation - Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at @@ -202,6 +199,10 @@ </field> <field name="vatTaxAuthGeoId"><lookup target-form-name="LookupGeo"/></field> <field name="vatTaxAuthPartyId"><lookup target-form-name="LookupPartyName"/></field> + <field name="prodSearchExcludeVariants" widget-style="selectBox"> + <drop-down allow-empty="false" no-current-selected-key="Y"><option key="Y" description="${uiLabelMap.CommonY}"/><option key="N" description="${uiLabelMap.CommonN}"/></drop-down> + </field> + <field name="enableDigProdUpload" widget-style="selectBox"> <drop-down allow-empty="false" no-current-selected-key="N"><option key="Y" description="${uiLabelMap.CommonY}"/><option key="N" description="${uiLabelMap.CommonN}"/></drop-down> </field> |
Free forum by Nabble | Edit this page |