You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by do...@apache.org on 2008/11/11 03:16:46 UTC

svn commit: r712916 [3/3] - /ofbiz/trunk/applications/product/src/org/ofbiz/product/product/

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductUtilServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductUtilServices.java?rev=712916&r1=712915&r2=712916&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductUtilServices.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductUtilServices.java Mon Nov 10 18:16:46 2008
@@ -63,7 +63,7 @@
     public static final String resource = "ProductUiLabels";
 
     /** First expire all ProductAssocs for all disc variants, then disc all virtuals that have all expired variant ProductAssocs */
-    public static Map discVirtualsWithDiscVariants(DispatchContext dctx, Map context) {
+    public static Map<String, Object> discVirtualsWithDiscVariants(DispatchContext dctx, Map<String, ? extends Object> context) {
         GenericDelegator delegator = dctx.getDelegator();
         Timestamp nowTimestamp = UtilDateTime.nowTimestamp();
         Locale locale = (Locale) context.get("locale");
@@ -78,18 +78,18 @@
             EntityListIterator eliOne = delegator.find("Product", conditionOne, null, null, null, null);
             GenericValue productOne = null;
             int numSoFarOne = 0;
-            while ((productOne = (GenericValue) eliOne.next()) != null) {
+            while ((productOne = eliOne.next()) != null) {
                 String virtualProductId = ProductWorker.getVariantVirtualId(productOne);
                 GenericValue virtualProduct = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", virtualProductId));
                 if (virtualProduct == null) {
                     continue;
                 }
-                List passocList = delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", virtualProductId, "productIdTo", productOne.get("productId"), "productAssocTypeId", "PRODUCT_VARIANT"));
+                List<GenericValue> passocList = delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", virtualProductId, "productIdTo", productOne.get("productId"), "productAssocTypeId", "PRODUCT_VARIANT"));
                 passocList = EntityUtil.filterByDate(passocList);
                 if (passocList.size() > 0) {
-                    Iterator passocIter = passocList.iterator();
+                    Iterator<GenericValue> passocIter = passocList.iterator();
                     while (passocIter.hasNext()) {
-                        GenericValue passoc = (GenericValue) passocIter.next();
+                        GenericValue passoc = passocIter.next();
                         passoc.set("thruDate", nowTimestamp);
                         passoc.store();
                     }
@@ -110,8 +110,8 @@
             EntityListIterator eli = delegator.find("Product", condition, null, null, null, null);
             GenericValue product = null;
             int numSoFar = 0;
-            while ((product = (GenericValue) eli.next()) != null) {
-                List passocList = delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", product.get("productId"), "productAssocTypeId", "PRODUCT_VARIANT"));
+            while ((product = eli.next()) != null) {
+                List<GenericValue> passocList = delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", product.get("productId"), "productAssocTypeId", "PRODUCT_VARIANT"));
                 passocList = EntityUtil.filterByDate(passocList);
                 if (passocList.size() == 0) {
                     product.set("salesDiscontinuationDate", nowTimestamp);
@@ -124,7 +124,7 @@
             }
             eli.close();
         } catch (GenericEntityException e) {
-            Map messageMap = UtilMisc.toMap("errMessage", e.toString());
+            Map<String, String> messageMap = UtilMisc.toMap("errMessage", e.toString());
             errMsg = UtilProperties.getMessage(resource,"productutilservices.entity_error_running_discVirtualsWithDiscVariants", messageMap, locale);
             Debug.logError(e, errMsg, module);
             return ServiceUtil.returnError(errMsg);
@@ -134,7 +134,7 @@
     }
 
     /** for all disc products, remove from category memberships */
-    public static Map removeCategoryMembersOfDiscProducts(DispatchContext dctx, Map context) {
+    public static Map<String, Object> removeCategoryMembersOfDiscProducts(DispatchContext dctx, Map<String, ? extends Object> context) {
         GenericDelegator delegator = dctx.getDelegator();
         Timestamp nowTimestamp = UtilDateTime.nowTimestamp();
         Locale locale = (Locale) context.get("locale");
@@ -148,13 +148,13 @@
             EntityListIterator eli = delegator.find("Product", condition, null, null, null, null);
             GenericValue product = null;
             int numSoFar = 0;
-            while ((product = (GenericValue) eli.next()) != null) {
+            while ((product = eli.next()) != null) {
                 String productId = product.getString("productId");
-                List productCategoryMemberList = delegator.findByAnd("ProductCategoryMember", UtilMisc.toMap("productId", productId));
+                List<GenericValue> productCategoryMemberList = delegator.findByAnd("ProductCategoryMember", UtilMisc.toMap("productId", productId));
                 if (productCategoryMemberList.size() > 0) {
-                    Iterator productCategoryMemberIter = productCategoryMemberList.iterator();
+                    Iterator<GenericValue> productCategoryMemberIter = productCategoryMemberList.iterator();
                     while (productCategoryMemberIter.hasNext()) {
-                        GenericValue productCategoryMember = (GenericValue) productCategoryMemberIter.next();
+                        GenericValue productCategoryMember = productCategoryMemberIter.next();
                         // coded this way rather than a removeByAnd so it can be easily changed...
                         productCategoryMember.remove();
                     }
@@ -167,7 +167,7 @@
             eli.close();
             Debug.logInfo("Completed - Removed category members for " + numSoFar + " sales discontinued products.", module);
         } catch (GenericEntityException e) {
-            Map messageMap = UtilMisc.toMap("errMessage", e.toString());
+            Map<String, String> messageMap = UtilMisc.toMap("errMessage", e.toString());
             errMsg = UtilProperties.getMessage(resource,"productutilservices.entity_error_running_removeCategoryMembersOfDiscProducts", messageMap, locale);
             Debug.logError(e, errMsg, module);
             return ServiceUtil.returnError(errMsg);
@@ -176,7 +176,7 @@
         return ServiceUtil.returnSuccess();
     }
 
-    public static Map removeDuplicateOpenEndedCategoryMembers(DispatchContext dctx, Map context) {
+    public static Map<String, Object> removeDuplicateOpenEndedCategoryMembers(DispatchContext dctx, Map<String, ? extends Object> context) {
         GenericDelegator delegator = dctx.getDelegator();
         Timestamp nowTimestamp = UtilDateTime.nowTimestamp();
         Locale locale = (Locale) context.get("locale");
@@ -199,14 +199,14 @@
             EntityListIterator eli = delegator.findListIteratorByCondition(dve, condition, havingCond, UtilMisc.toList("productId", "productCategoryId", "productIdCount"), null, null);
             GenericValue pcm = null;
             int numSoFar = 0;
-            while ((pcm = (GenericValue) eli.next()) != null) {
-                List productCategoryMemberList = delegator.findByAnd("ProductCategoryMember", UtilMisc.toMap("productId", pcm.get("productId"), "productCategoryId", pcm.get("productCategoryId")));
+            while ((pcm = eli.next()) != null) {
+                List<GenericValue> productCategoryMemberList = delegator.findByAnd("ProductCategoryMember", UtilMisc.toMap("productId", pcm.get("productId"), "productCategoryId", pcm.get("productCategoryId")));
                 if (productCategoryMemberList.size() > 1) {
                     // remove all except the first...
                     productCategoryMemberList.remove(0);
-                    Iterator productCategoryMemberIter = productCategoryMemberList.iterator();
+                    Iterator<GenericValue> productCategoryMemberIter = productCategoryMemberList.iterator();
                     while (productCategoryMemberIter.hasNext()) {
-                        GenericValue productCategoryMember = (GenericValue) productCategoryMemberIter.next();
+                        GenericValue productCategoryMember = productCategoryMemberIter.next();
                         productCategoryMember.remove();
                     }
                     numSoFar++;
@@ -218,7 +218,7 @@
             eli.close();
             Debug.logInfo("Completed - Removed category members for " + numSoFar + " products with duplicate category members.", module);
         } catch (GenericEntityException e) {
-            Map messageMap = UtilMisc.toMap("errMessage", e.toString());
+            Map<String, String> messageMap = UtilMisc.toMap("errMessage", e.toString());
             errMsg = UtilProperties.getMessage(resource,"productutilservices.entity_error_running_removeDuplicateOpenEndedCategoryMembers", messageMap, locale);
             Debug.logError(e, errMsg, module);
             return ServiceUtil.returnError(errMsg);
@@ -227,7 +227,7 @@
         return ServiceUtil.returnSuccess();
     }
 
-    public static Map makeStandAloneFromSingleVariantVirtuals(DispatchContext dctx, Map context) {
+    public static Map<String, Object> makeStandAloneFromSingleVariantVirtuals(DispatchContext dctx, Map<String, ? extends Object> context) {
         GenericDelegator delegator = dctx.getDelegator();
         LocalDispatcher dispatcher = dctx.getDispatcher();
         GenericValue userLogin = (GenericValue) context.get("userLogin");
@@ -258,19 +258,19 @@
                     ), EntityOperator.AND);
             EntityCondition havingCond = EntityCondition.makeCondition("productIdToCount", EntityOperator.EQUALS, Long.valueOf(1));
             EntityListIterator eliOne = delegator.findListIteratorByCondition(dve, condition, havingCond, UtilMisc.toList("productId", "productIdToCount"), null, null);
-            List valueList = eliOne.getCompleteList();
+            List<GenericValue> valueList = eliOne.getCompleteList();
             eliOne.close();
 
             Debug.logInfo("Found " + valueList.size() + " virtual products with one variant to turn into a stand alone product.", module);
 
             int numWithOneOnly = 0;
-            Iterator valueIter = valueList.iterator();
+            Iterator<GenericValue> valueIter = valueList.iterator();
             while (valueIter.hasNext()) {
                 // has only one variant period, is it valid? should already be discontinued if not
-                GenericValue value = (GenericValue) valueIter.next();
+                GenericValue value = valueIter.next();
 
                 String productId = value.getString("productId");
-                List paList = delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", productId, "productAssocTypeId", "PRODUCT_VARIANT"));
+                List<GenericValue> paList = delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", productId, "productAssocTypeId", "PRODUCT_VARIANT"));
                 paList = EntityUtil.filterByDate(paList);
                 // verify the query; tested on a bunch, looks good
                 if (paList.size() != 1) {
@@ -296,19 +296,19 @@
                     EntityCondition.makeCondition(EntityCondition.makeCondition("thruDate", EntityOperator.EQUALS, null), EntityOperator.OR, EntityCondition.makeCondition("thruDate", EntityOperator.GREATER_THAN_EQUAL_TO, nowTimestamp))
                     ), EntityOperator.AND);
             EntityListIterator eliMulti = delegator.findListIteratorByCondition(dve, conditionWithDates, havingCond, UtilMisc.toList("productId", "productIdToCount"), null, null);
-            List valueMultiList = eliMulti.getCompleteList();
+            List<GenericValue> valueMultiList = eliMulti.getCompleteList();
             eliMulti.close();
 
             Debug.logInfo("Found " + valueMultiList.size() + " virtual products with one VALID variant to pull the variant from to make a stand alone product.", module);
 
             int numWithOneValid = 0;
-            Iterator valueMultiIter = valueMultiList.iterator();
+            Iterator<GenericValue> valueMultiIter = valueMultiList.iterator();
             while (valueMultiIter.hasNext()) {
-                GenericValue value = (GenericValue) valueMultiIter.next();
+                GenericValue value = valueMultiIter.next();
                 // has only one valid variant
                 String productId = value.getString("productId");
 
-                List paList = EntityUtil.filterByDate(delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", productId, "productAssocTypeId", "PRODUCT_VARIANT")));
+                List<GenericValue> paList = EntityUtil.filterByDate(delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", productId, "productAssocTypeId", "PRODUCT_VARIANT")));
 
                 // verify the query; tested on a bunch, looks good
                 if (paList.size() != 1) {
@@ -326,12 +326,12 @@
 
             Debug.logInfo("Found virtual products with one valid variant: " + numWithOneValid + ", with one variant only: " + numWithOneOnly, module);
         } catch (GenericEntityException e) {
-            Map messageMap = UtilMisc.toMap("errMessage", e.toString());
+            Map<String, String> messageMap = UtilMisc.toMap("errMessage", e.toString());
             errMsg = UtilProperties.getMessage(resource,"productutilservices.entity_error_running_makeStandAloneFromSingleVariantVirtuals", messageMap, locale);
             Debug.logError(e, errMsg, module);
             return ServiceUtil.returnError(errMsg);
         } catch (GenericServiceException e) {
-            Map messageMap = UtilMisc.toMap("errMessage", e.toString());
+            Map<String, String> messageMap = UtilMisc.toMap("errMessage", e.toString());
             errMsg = UtilProperties.getMessage(resource,"productutilservices.entity_error_running_makeStandAloneFromSingleVariantVirtuals", messageMap, locale);
             Debug.logError(e, errMsg, module);
             return ServiceUtil.returnError(errMsg);
@@ -340,7 +340,7 @@
         return ServiceUtil.returnSuccess();
     }
 
-    public static Map mergeVirtualWithSingleVariant(DispatchContext dctx, Map context) {
+    public static Map<String, Object> mergeVirtualWithSingleVariant(DispatchContext dctx, Map<String, ? extends Object> context) {
         GenericDelegator delegator = dctx.getDelegator();
         Timestamp nowTimestamp = UtilDateTime.nowTimestamp();
 
@@ -360,16 +360,16 @@
             GenericValue product = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", productId));
             Debug.logInfo("Processing virtual product with one variant with ID: " + productId + " and name: " + product.getString("internalName"), module);
 
-            List paList = EntityUtil.filterByDate(delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", productId, "productAssocTypeId", "PRODUCT_VARIANT")));
+            List<GenericValue> paList = EntityUtil.filterByDate(delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", productId, "productAssocTypeId", "PRODUCT_VARIANT")));
             if (paList.size() > 1) {
-                Map messageMap = UtilMisc.toMap("productId", productId);
+                Map<String, String> messageMap = UtilMisc.toMap("productId", productId);
                 errMsg = UtilProperties.getMessage(resource,"productutilservices.found_more_than_one_valid_variant_for_virtual_ID", messageMap, locale);
                 Debug.logInfo(errMsg, module);
                 return ServiceUtil.returnError(errMsg);
             }
 
             if (paList.size() == 0) {
-                Map messageMap = UtilMisc.toMap("productId", productId);
+                Map<String, String> messageMap = UtilMisc.toMap("productId", productId);
                 errMsg = UtilProperties.getMessage(resource,"productutilservices.did_not_find_any_valid_variants_for_virtual_ID", messageMap, locale);
                 Debug.logInfo(errMsg, module);
                 return ServiceUtil.returnError(errMsg);
@@ -445,7 +445,7 @@
                 return ServiceUtil.returnError("Test mode - returning error to get a rollback");
             }
         } catch (GenericEntityException e) {
-            Map messageMap = UtilMisc.toMap("errMessage", e.toString());
+            Map<String, String> messageMap = UtilMisc.toMap("errMessage", e.toString());
             errMsg = UtilProperties.getMessage(resource,"productutilservices.entity_error_running_makeStandAloneFromSingleVariantVirtuals", messageMap, locale);
             Debug.logError(e, errMsg, module);
             return ServiceUtil.returnError(errMsg);
@@ -455,10 +455,10 @@
     }
 
     protected static void duplicateRelated(GenericValue product, String title, String relatedEntityName, String productIdField, String variantProductId, Timestamp nowTimestamp, boolean removeOld, GenericDelegator delegator, boolean test) throws GenericEntityException {
-        List relatedList = EntityUtil.filterByDate(product.getRelated(title + relatedEntityName), nowTimestamp);
-        Iterator relatedIter = relatedList.iterator();
+        List<GenericValue> relatedList = EntityUtil.filterByDate(product.getRelated(title + relatedEntityName), nowTimestamp);
+        Iterator<GenericValue> relatedIter = relatedList.iterator();
         while (relatedIter.hasNext()) {
-            GenericValue relatedValue = (GenericValue) relatedIter.next();
+            GenericValue relatedValue = relatedIter.next();
             GenericValue newRelatedValue = (GenericValue) relatedValue.clone();
             newRelatedValue.set(productIdField, variantProductId);
 
@@ -469,7 +469,7 @@
                 // can't just set to null, need to remove the value so it isn't a constraint in the query
                 //findValue.set("fromDate", null);
                 findValue.remove("fromDate");
-                List existingValueList = EntityUtil.filterByDate(delegator.findByAnd(relatedEntityName, findValue), nowTimestamp);
+                List<GenericValue> existingValueList = EntityUtil.filterByDate(delegator.findByAnd(relatedEntityName, findValue), nowTimestamp);
                 if (existingValueList.size() > 0) {
                     if (test) {
                         Debug.logInfo("Found " + existingValueList.size() + " existing values for related entity name: " + relatedEntityName + ", not copying, findValue is: " + findValue, module);
@@ -500,7 +500,7 @@
     /** reset all product image names with a certain pattern, ex: /images/products/${size}/${productId}.jpg
      * NOTE: only works on fields of Product right now
      */
-    public static Map setAllProductImageNames(DispatchContext dctx, Map context) {
+    public static Map<String, Object> setAllProductImageNames(DispatchContext dctx, Map<String, ? extends Object> context) {
         GenericDelegator delegator = dctx.getDelegator();
         Timestamp nowTimestamp = UtilDateTime.nowTimestamp();
         String pattern = (String) context.get("pattern");
@@ -517,20 +517,20 @@
             EntityListIterator eli = delegator.find("Product", null, null, null, null, null);
             GenericValue product = null;
             int numSoFar = 0;
-            while ((product = (GenericValue) eli.next()) != null) {
+            while ((product = eli.next()) != null) {
                 String productId = (String) product.get("productId");
-                Map smallMap = UtilMisc.toMap("size", "small", "productId", productId);
-                Map mediumMap = UtilMisc.toMap("size", "medium", "productId", productId);
-                Map largeMap = UtilMisc.toMap("size", "large", "productId", productId);
-                Map detailMap = UtilMisc.toMap("size", "detail", "productId", productId);
+                Map<String, String> smallMap = UtilMisc.toMap("size", "small", "productId", productId);
+                Map<String, String> mediumMap = UtilMisc.toMap("size", "medium", "productId", productId);
+                Map<String, String> largeMap = UtilMisc.toMap("size", "large", "productId", productId);
+                Map<String, String> detailMap = UtilMisc.toMap("size", "detail", "productId", productId);
 
                 if ("Y".equals(product.getString("isVirtual"))) {
                     // find the first variant, use it's ID for the names...
-                    List productAssocList = EntityUtil.filterByDate(delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", productId, "productAssocTypeId", "PRODUCT_VARIANT")));
+                    List<GenericValue> productAssocList = EntityUtil.filterByDate(delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", productId, "productAssocTypeId", "PRODUCT_VARIANT")));
                     if (productAssocList.size() > 0) {
                         GenericValue productAssoc = EntityUtil.getFirst(productAssocList);
-                        smallMap.put("productId", productAssoc.get("productIdTo"));
-                        mediumMap.put("productId", productAssoc.get("productIdTo"));
+                        smallMap.put("productId", productAssoc.getString("productIdTo"));
+                        mediumMap.put("productId", productAssoc.getString("productIdTo"));
                         product.set("smallImageUrl", FlexibleStringExpander.expandString(pattern, smallMap));
                         product.set("mediumImageUrl", FlexibleStringExpander.expandString(pattern, mediumMap));
                     } else {
@@ -555,7 +555,7 @@
             eli.close();
             Debug.logInfo("Completed - Image URLs set for " + numSoFar + " products.", module);
         } catch (GenericEntityException e) {
-            Map messageMap = UtilMisc.toMap("errMessage", e.toString());
+            Map<String, String> messageMap = UtilMisc.toMap("errMessage", e.toString());
             errMsg = UtilProperties.getMessage(resource,"productutilservices.entity_error_running_setAllProductImageNames", messageMap, locale);
             Debug.logError(e, errMsg, module);
             return ServiceUtil.returnError(errMsg);
@@ -564,7 +564,7 @@
         return ServiceUtil.returnSuccess();
     }
 
-    public static Map clearAllVirtualProductImageNames(DispatchContext dctx, Map context) {
+    public static Map<String, Object> clearAllVirtualProductImageNames(DispatchContext dctx, Map<String, ? extends Object> context) {
         GenericDelegator delegator = dctx.getDelegator();
         Locale locale = (Locale) context.get("locale");
         String errMsg = null;
@@ -573,7 +573,7 @@
             EntityListIterator eli = delegator.find("Product", EntityCondition.makeCondition("isVirtual", EntityOperator.EQUALS, "Y"), null, null, null, null);
             GenericValue product = null;
             int numSoFar = 0;
-            while ((product = (GenericValue) eli.next()) != null) {
+            while ((product = eli.next()) != null) {
                 product.set("smallImageUrl", null);
                 product.set("mediumImageUrl", null);
                 product.set("largeImageUrl", null);
@@ -587,7 +587,7 @@
             eli.close();
             Debug.logInfo("Completed - Image URLs set for " + numSoFar + " products.", module);
         } catch (GenericEntityException e) {
-            Map messageMap = UtilMisc.toMap("errMessage", e.toString());
+            Map<String, String> messageMap = UtilMisc.toMap("errMessage", e.toString());
             errMsg = UtilProperties.getMessage(resource,"productutilservices.entity_error_running_clearAllVirtualProductImageNames", messageMap, locale);
             Debug.logError(e, errMsg, module);
             return ServiceUtil.returnError(errMsg);
@@ -619,7 +619,7 @@
 
 
 
-    public static Map attachProductFeaturesToCategory(DispatchContext dctx, Map context) {
+    public static Map<String, Object> attachProductFeaturesToCategory(DispatchContext dctx, Map<String, ? extends Object> context) {
         GenericDelegator delegator = dctx.getDelegator();
         String productCategoryId = (String) context.get("productCategoryId");
         String doSubCategoriesStr = (String) context.get("doSubCategories");
@@ -630,17 +630,17 @@
         boolean doSubCategories = !"N".equals(doSubCategoriesStr);
         Timestamp nowTimestamp = UtilDateTime.nowTimestamp();
 
-        Set productFeatureTypeIdsToExclude = FastSet.newInstance();
+        Set<String> productFeatureTypeIdsToExclude = FastSet.newInstance();
         String excludeProp = UtilProperties.getPropertyValue("prodsearch", "attach.feature.type.exclude");
         if (UtilValidate.isNotEmpty(excludeProp)) {
-            List typeList = StringUtil.split(excludeProp, ",");
+            List<String> typeList = StringUtil.split(excludeProp, ",");
             productFeatureTypeIdsToExclude.addAll(typeList);
         }
 
-        Set productFeatureTypeIdsToInclude = null;
+        Set<String> productFeatureTypeIdsToInclude = null;
         String includeProp = UtilProperties.getPropertyValue("prodsearch", "attach.feature.type.include");
         if (UtilValidate.isNotEmpty(includeProp)) {
-            List typeList = StringUtil.split(includeProp, ",");
+            List<String> typeList = StringUtil.split(includeProp, ",");
             if (typeList.size() > 0) {
                 productFeatureTypeIdsToInclude = UtilMisc.makeSetWritable(typeList);
             }
@@ -649,7 +649,7 @@
         try {
             attachProductFeaturesToCategory(productCategoryId, productFeatureTypeIdsToInclude, productFeatureTypeIdsToExclude, delegator, doSubCategories, nowTimestamp);
         } catch (GenericEntityException e) {
-            Map messageMap = UtilMisc.toMap("errMessage", e.toString());
+            Map<String, String> messageMap = UtilMisc.toMap("errMessage", e.toString());
             errMsg = UtilProperties.getMessage(resource,"productutilservices.error_in_attachProductFeaturesToCategory", messageMap, locale);
             Debug.logError(e, errMsg, module);
             return ServiceUtil.returnError(errMsg);
@@ -661,27 +661,27 @@
     /** Get all features associated with products and associate them with a feature group attached to the category for each feature type;
      * includes products associated with this category only, but will also associate all feature groups of sub-categories with this category, optionally calls this method for all sub-categories too
      */
-    public static void attachProductFeaturesToCategory(String productCategoryId, Set productFeatureTypeIdsToInclude, Set productFeatureTypeIdsToExclude, GenericDelegator delegator, boolean doSubCategories, Timestamp nowTimestamp) throws GenericEntityException {
+    public static void attachProductFeaturesToCategory(String productCategoryId, Set<String> productFeatureTypeIdsToInclude, Set<String> productFeatureTypeIdsToExclude, GenericDelegator delegator, boolean doSubCategories, Timestamp nowTimestamp) throws GenericEntityException {
         if (nowTimestamp == null) {
             nowTimestamp = UtilDateTime.nowTimestamp();
         }
 
         // do sub-categories first so all feature groups will be in place
-        List subCategoryList = delegator.findByAnd("ProductCategoryRollup", UtilMisc.toMap("parentProductCategoryId", productCategoryId));
+        List<GenericValue> subCategoryList = delegator.findByAnd("ProductCategoryRollup", UtilMisc.toMap("parentProductCategoryId", productCategoryId));
         if (doSubCategories) {
-            Iterator subCategoryIter = subCategoryList.iterator();
+            Iterator<GenericValue> subCategoryIter = subCategoryList.iterator();
             while (subCategoryIter.hasNext()) {
-                GenericValue productCategoryRollup = (GenericValue) subCategoryIter.next();
+                GenericValue productCategoryRollup = subCategoryIter.next();
                 attachProductFeaturesToCategory(productCategoryRollup.getString("productCategoryId"), productFeatureTypeIdsToInclude, productFeatureTypeIdsToExclude, delegator, true, nowTimestamp);
             }
         }
 
         // now get all features for this category and make associated feature groups
-        Map productFeatureIdByTypeIdSetMap = FastMap.newInstance();
-        List productCategoryMemberList = delegator.findByAnd("ProductCategoryMember", UtilMisc.toMap("productCategoryId", productCategoryId));
-        Iterator productCategoryMemberIter = productCategoryMemberList.iterator();
+        Map<String, Set<String>> productFeatureIdByTypeIdSetMap = FastMap.newInstance();
+        List<GenericValue> productCategoryMemberList = delegator.findByAnd("ProductCategoryMember", UtilMisc.toMap("productCategoryId", productCategoryId));
+        Iterator<GenericValue> productCategoryMemberIter = productCategoryMemberList.iterator();
         while (productCategoryMemberIter.hasNext()) {
-            GenericValue productCategoryMember = (GenericValue) productCategoryMemberIter.next();
+            GenericValue productCategoryMember = productCategoryMemberIter.next();
             String productId = productCategoryMember.getString("productId");
             EntityCondition condition = EntityCondition.makeCondition(UtilMisc.toList(
                     EntityCondition.makeCondition("productId", EntityOperator.EQUALS, productId),
@@ -699,7 +699,7 @@
                 if (productFeatureTypeIdsToExclude != null && productFeatureTypeIdsToExclude.contains(productFeatureTypeId)) {
                     continue;
                 }
-                Set productFeatureIdSet = (Set) productFeatureIdByTypeIdSetMap.get(productFeatureTypeId);
+                Set<String> productFeatureIdSet = productFeatureIdByTypeIdSetMap.get(productFeatureTypeId);
                 if (productFeatureIdSet == null) {
                     productFeatureIdSet = FastSet.newInstance();
                     productFeatureIdByTypeIdSetMap.put(productFeatureTypeId, productFeatureIdSet);
@@ -709,11 +709,11 @@
             productFeatureAndApplEli.close();
         }
 
-        Iterator productFeatureIdByTypeIdSetIter = productFeatureIdByTypeIdSetMap.entrySet().iterator();
+        Iterator<Map.Entry<String, Set<String>>> productFeatureIdByTypeIdSetIter = productFeatureIdByTypeIdSetMap.entrySet().iterator();
         while (productFeatureIdByTypeIdSetIter.hasNext()) {
-            Map.Entry entry = (Map.Entry) productFeatureIdByTypeIdSetIter.next();
-            String productFeatureTypeId = (String) entry.getKey();
-            Set productFeatureIdSet = (Set) entry.getValue();
+            Map.Entry<String, Set<String>> entry = productFeatureIdByTypeIdSetIter.next();
+            String productFeatureTypeId = entry.getKey();
+            Set<String> productFeatureIdSet = entry.getValue();
 
             String productFeatureGroupId = productCategoryId + "_" + productFeatureTypeId;
             if (productFeatureGroupId.length() > 20) {
@@ -733,9 +733,9 @@
             }
 
             // now put all of the features in the group, if there is not already a valid feature placement there...
-            Iterator productFeatureIdIter = productFeatureIdSet.iterator();
+            Iterator<String> productFeatureIdIter = productFeatureIdSet.iterator();
             while (productFeatureIdIter.hasNext()) {
-                String productFeatureId = (String) productFeatureIdIter.next();
+                String productFeatureId = productFeatureIdIter.next();
                 EntityCondition condition = EntityCondition.makeCondition(UtilMisc.toList(
                         EntityCondition.makeCondition("productFeatureId", EntityOperator.EQUALS, productFeatureId),
                         EntityCondition.makeCondition("productFeatureGroupId", EntityOperator.EQUALS, productFeatureGroupId),
@@ -751,9 +751,9 @@
         }
 
         // now get all feature groups associated with sub-categories and associate them with this category
-        Iterator subCategoryIter = subCategoryList.iterator();
+        Iterator<GenericValue> subCategoryIter = subCategoryList.iterator();
         while (subCategoryIter.hasNext()) {
-            GenericValue productCategoryRollup = (GenericValue) subCategoryIter.next();
+            GenericValue productCategoryRollup = subCategoryIter.next();
             String subProductCategoryId = productCategoryRollup.getString("productCategoryId");
             EntityCondition condition = EntityCondition.makeCondition(UtilMisc.toList(
                     EntityCondition.makeCondition("productCategoryId", EntityOperator.EQUALS, subProductCategoryId),
@@ -762,7 +762,7 @@
             ), EntityOperator.AND);
             EntityListIterator productFeatureCatGrpApplEli = delegator.find("ProductFeatureCatGrpAppl", condition, null, null, null, null);
             GenericValue productFeatureCatGrpAppl = null;
-            while ((productFeatureCatGrpAppl = (GenericValue) productFeatureCatGrpApplEli.next()) != null) {
+            while ((productFeatureCatGrpAppl = productFeatureCatGrpApplEli.next()) != null) {
                 String productFeatureGroupId = productFeatureCatGrpAppl.getString("productFeatureGroupId");
                 EntityCondition checkCondition = EntityCondition.makeCondition(UtilMisc.toList(
                         EntityCondition.makeCondition("productCategoryId", EntityOperator.EQUALS, productCategoryId),
@@ -780,11 +780,11 @@
         }
     }
 
-    public static Map removeAllFeatureGroupsForCategory(DispatchContext dctx, Map context) {
+    public static Map<String, Object> removeAllFeatureGroupsForCategory(DispatchContext dctx, Map<String, ? extends Object> context) {
         return ServiceUtil.returnSuccess();
     }
 
-    public static void getFeatureGroupsForCategory(String productCategoryId, Set productFeatureGroupIdsToRemove, GenericDelegator delegator, boolean doSubCategories, Timestamp nowTimestamp) throws GenericEntityException {
+    public static void getFeatureGroupsForCategory(String productCategoryId, Set<String> productFeatureGroupIdsToRemove, GenericDelegator delegator, boolean doSubCategories, Timestamp nowTimestamp) throws GenericEntityException {
 
     }
 }

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductWorker.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductWorker.java?rev=712916&r1=712915&r2=712916&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductWorker.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductWorker.java Mon Nov 10 18:16:46 2008
@@ -87,24 +87,24 @@
     private static boolean isAllowedToAddress(GenericValue product, GenericValue postalAddress, String productGeoPrefix) {
         if (UtilValidate.isNotEmpty(product) && UtilValidate.isNotEmpty(postalAddress)) {
             GenericDelegator delegator = product.getDelegator();
-            List productGeos = null;
+            List<GenericValue> productGeos = null;
             try {
                 productGeos = product.getRelated("ProductGeo");
             } catch (GenericEntityException e) {
                 Debug.logError(e, module);
             }
-            List excludeGeos = EntityUtil.filterByAnd(productGeos, UtilMisc.toMap("productGeoEnumId", productGeoPrefix + "EXCLUDE"));
-            List includeGeos = EntityUtil.filterByAnd(productGeos, UtilMisc.toMap("productGeoEnumId", productGeoPrefix + "INCLUDE"));
+            List<GenericValue> excludeGeos = EntityUtil.filterByAnd(productGeos, UtilMisc.toMap("productGeoEnumId", productGeoPrefix + "EXCLUDE"));
+            List<GenericValue> includeGeos = EntityUtil.filterByAnd(productGeos, UtilMisc.toMap("productGeoEnumId", productGeoPrefix + "INCLUDE"));
             if (UtilValidate.isEmpty(excludeGeos) && UtilValidate.isEmpty(includeGeos)) {
                 // If no GEOs are configured the default is TRUE
                 return true;
             }
-            Iterator productGeosIt = null;
+            Iterator<GenericValue> productGeosIt = null;
             // exclusion
             productGeosIt = excludeGeos.iterator();
             while (productGeosIt.hasNext()) {
-                GenericValue productGeo = (GenericValue)productGeosIt.next();
-                List excludeGeoGroup = GeoWorker.expandGeoGroup(productGeo.getString("geoId"), delegator);
+                GenericValue productGeo = productGeosIt.next();
+                List<GenericValue> excludeGeoGroup = GeoWorker.expandGeoGroup(productGeo.getString("geoId"), delegator);
                 if (GeoWorker.containsGeo(excludeGeoGroup, postalAddress.getString("countryGeoId"), delegator) ||
                       GeoWorker.containsGeo(excludeGeoGroup, postalAddress.getString("stateProvinceGeoId"), delegator) ||
                       GeoWorker.containsGeo(excludeGeoGroup, postalAddress.getString("postalCodeGeoId"), delegator)) {
@@ -118,8 +118,8 @@
             // inclusion
             productGeosIt = includeGeos.iterator();
             while (productGeosIt.hasNext()) {
-                GenericValue productGeo = (GenericValue)productGeosIt.next();
-                List includeGeoGroup = GeoWorker.expandGeoGroup(productGeo.getString("geoId"), delegator);
+                GenericValue productGeo = productGeosIt.next();
+                List<GenericValue> includeGeoGroup = GeoWorker.expandGeoGroup(productGeo.getString("geoId"), delegator);
                 if (GeoWorker.containsGeo(includeGeoGroup, postalAddress.getString("countryGeoId"), delegator) ||
                       GeoWorker.containsGeo(includeGeoGroup, postalAddress.getString("stateProvinceGeoId"), delegator) ||
                       GeoWorker.containsGeo(includeGeoGroup, postalAddress.getString("postalCodeGeoId"), delegator)) {
@@ -187,11 +187,11 @@
     }
 
     public static String getAggregatedInstanceId(GenericDelegator delegator, String  aggregatedProductId, String configId) throws GenericEntityException {
-        List productAssocs = getAggregatedAssocs(delegator, aggregatedProductId);
+        List<GenericValue> productAssocs = getAggregatedAssocs(delegator, aggregatedProductId);
         if (UtilValidate.isNotEmpty(productAssocs) && UtilValidate.isNotEmpty(configId)) {
-            Iterator pai = productAssocs.iterator();
+            Iterator<GenericValue> pai = productAssocs.iterator();
             while (pai.hasNext()) {
-                GenericValue productAssoc = (GenericValue) pai.next();
+                GenericValue productAssoc = pai.next();
                 GenericValue product = productAssoc.getRelatedOne("AssocProduct");
                 if (configId.equals(product.getString("configId"))) {
                     return productAssoc.getString("productIdTo");
@@ -201,11 +201,11 @@
         return null;
     }
     
-    public static List getAggregatedAssocs(GenericDelegator delegator, String  aggregatedProductId) throws GenericEntityException {
+    public static List<GenericValue> getAggregatedAssocs(GenericDelegator delegator, String  aggregatedProductId) throws GenericEntityException {
         GenericValue aggregatedProduct = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", aggregatedProductId));
         
         if (UtilValidate.isNotEmpty(aggregatedProduct) && "AGGREGATED".equals(aggregatedProduct.getString("productTypeId"))) {
-            List productAssocs = EntityUtil.filterByDate(aggregatedProduct.getRelatedByAnd("MainProductAssoc", 
+            List<GenericValue> productAssocs = EntityUtil.filterByDate(aggregatedProduct.getRelatedByAnd("MainProductAssoc", 
                     UtilMisc.toMap("productAssocTypeId", "PRODUCT_CONF")));
             return productAssocs;
         }
@@ -213,7 +213,7 @@
     }
     
     public static String getVariantVirtualId(GenericValue variantProduct) throws GenericEntityException {
-        List productAssocs = getVariantVirtualAssocs(variantProduct);
+        List<GenericValue> productAssocs = getVariantVirtualAssocs(variantProduct);
         if (productAssocs == null) {
             return null;
         }
@@ -225,9 +225,9 @@
         }
     }
 
-    public static List getVariantVirtualAssocs(GenericValue variantProduct) throws GenericEntityException {
+    public static List<GenericValue> getVariantVirtualAssocs(GenericValue variantProduct) throws GenericEntityException {
         if (variantProduct != null && "Y".equals(variantProduct.getString("isVariant"))) {
-            List productAssocs = EntityUtil.filterByDate(variantProduct.getRelatedByAndCache("AssocProductAssoc", 
+            List<GenericValue> productAssocs = EntityUtil.filterByDate(variantProduct.getRelatedByAndCache("AssocProductAssoc", 
                     UtilMisc.toMap("productAssocTypeId", "PRODUCT_VARIANT")));
             return productAssocs;
         }
@@ -242,7 +242,7 @@
         Double availableToPromise = null;
 
         try {
-            Map result = dispatcher.runSync("getInventoryAvailableByFacility",
+            Map<String, Object> result = dispatcher.runSync("getInventoryAvailableByFacility",
                                             UtilMisc.toMap("productId", productId, "facilityId", inventoryFacilityId));
 
             availableToPromise = (Double) result.get("availableToPromiseTotal");
@@ -272,14 +272,14 @@
      **/
     public static boolean isProductInventoryAvailableByFacility(ProductConfigWrapper productConfig, String inventoryFacilityId, double quantity, LocalDispatcher dispatcher) throws GenericServiceException {
         boolean available = true;
-        List options = productConfig.getSelectedOptions();
-        Iterator optionsIt = options.iterator();
+        List<ConfigOption> options = productConfig.getSelectedOptions();
+        Iterator<ConfigOption> optionsIt = options.iterator();
         while (optionsIt.hasNext()) {
-            ConfigOption ci = (ConfigOption)optionsIt.next();
-            List products = ci.getComponents();
-            Iterator productsIt = products.iterator();
+            ConfigOption ci = optionsIt.next();
+            List<GenericValue> products = ci.getComponents();
+            Iterator<GenericValue> productsIt = products.iterator();
             while (productsIt.hasNext()) {
-                GenericValue product = (GenericValue)productsIt.next();
+                GenericValue product = productsIt.next();
                 String productId = product.getString("productId");
                 Double cmpQuantity = product.getDouble("quantity");
                 double neededQty = 1.0;
@@ -305,16 +305,16 @@
             return;
 
         try {
-            List upgradeProducts = product.getRelatedByAndCache("MainProductAssoc",
+            List<GenericValue> upgradeProducts = product.getRelatedByAndCache("MainProductAssoc",
                     UtilMisc.toMap("productAssocTypeId", "PRODUCT_UPGRADE"));
 
-            List complementProducts = product.getRelatedByAndCache("MainProductAssoc",
+            List<GenericValue> complementProducts = product.getRelatedByAndCache("MainProductAssoc",
                     UtilMisc.toMap("productAssocTypeId", "PRODUCT_COMPLEMENT"));
 
-            List obsolescenceProducts = product.getRelatedByAndCache("AssocProductAssoc",
+            List<GenericValue> obsolescenceProducts = product.getRelatedByAndCache("AssocProductAssoc",
                     UtilMisc.toMap("productAssocTypeId", "PRODUCT_OBSOLESCENCE"));
 
-            List obsoleteByProducts = product.getRelatedByAndCache("MainProductAssoc",
+            List<GenericValue> obsoleteByProducts = product.getRelatedByAndCache("MainProductAssoc",
                     UtilMisc.toMap("productAssocTypeId", "PRODUCT_OBSOLESCENCE"));
 
             // since ProductAssoc records have a fromDate and thruDate, we can filter by now so that only assocs in the date range are included
@@ -340,7 +340,7 @@
      * Gets ProductFeature GenericValue for all distinguishing features of a variant product. 
      * Distinguishing means all features that are selectable on the corresponding virtual product and standard on the variant plus all DISTINGUISHING_FEAT assoc type features on the variant. 
      */
-    public static Set getVariantDistinguishingFeatures(GenericValue variantProduct) throws GenericEntityException {
+    public static Set<GenericValue> getVariantDistinguishingFeatures(GenericValue variantProduct) throws GenericEntityException {
         if (variantProduct == null) {
             return FastSet.newInstance();
         }
@@ -351,35 +351,35 @@
         String virtualProductId = getVariantVirtualId(variantProduct);
         
         // find all selectable features on the virtual product that are also standard features on the variant
-        Set distFeatures = FastSet.newInstance();
+        Set<GenericValue> distFeatures = FastSet.newInstance();
         
-        List variantDistinguishingFeatures = delegator.findByAndCache("ProductFeatureAndAppl", UtilMisc.toMap("productId", variantProduct.get("productId"), "productFeatureApplTypeId", "DISTINGUISHING_FEAT"));
+        List<GenericValue> variantDistinguishingFeatures = delegator.findByAndCache("ProductFeatureAndAppl", UtilMisc.toMap("productId", variantProduct.get("productId"), "productFeatureApplTypeId", "DISTINGUISHING_FEAT"));
         // Debug.logInfo("Found variantDistinguishingFeatures: " + variantDistinguishingFeatures, module);
 
-        Iterator variantDistinguishingFeatureIter = UtilMisc.toIterator(EntityUtil.filterByDate(variantDistinguishingFeatures));
+        Iterator<GenericValue> variantDistinguishingFeatureIter = UtilMisc.toIterator(EntityUtil.filterByDate(variantDistinguishingFeatures));
         while (variantDistinguishingFeatureIter != null && variantDistinguishingFeatureIter.hasNext()) {
-            GenericValue variantDistinguishingFeature = (GenericValue) variantDistinguishingFeatureIter.next();
+            GenericValue variantDistinguishingFeature = variantDistinguishingFeatureIter.next();
             GenericValue dummyFeature = delegator.makeValue("ProductFeature");
             dummyFeature.setAllFields(variantDistinguishingFeature, true, null, null);
             distFeatures.add(dummyFeature);
         }
 
-        List virtualSelectableFeatures = delegator.findByAndCache("ProductFeatureAndAppl", UtilMisc.toMap("productId", virtualProductId, "productFeatureApplTypeId", "SELECTABLE_FEATURE"));
+        List<GenericValue> virtualSelectableFeatures = delegator.findByAndCache("ProductFeatureAndAppl", UtilMisc.toMap("productId", virtualProductId, "productFeatureApplTypeId", "SELECTABLE_FEATURE"));
         // Debug.logInfo("Found virtualSelectableFeatures: " + virtualSelectableFeatures, module);
 
-        Iterator virtualSelectableFeatureIter = UtilMisc.toIterator(EntityUtil.filterByDate(virtualSelectableFeatures));
-        Set virtualSelectableFeatureIds = FastSet.newInstance();
+        Iterator<GenericValue> virtualSelectableFeatureIter = UtilMisc.toIterator(EntityUtil.filterByDate(virtualSelectableFeatures));
+        Set<String> virtualSelectableFeatureIds = FastSet.newInstance();
         while (virtualSelectableFeatureIter != null && virtualSelectableFeatureIter.hasNext()) {
-            GenericValue virtualSelectableFeature = (GenericValue) virtualSelectableFeatureIter.next();
-            virtualSelectableFeatureIds.add(virtualSelectableFeature.get("productFeatureId"));
+            GenericValue virtualSelectableFeature = virtualSelectableFeatureIter.next();
+            virtualSelectableFeatureIds.add(virtualSelectableFeature.getString("productFeatureId"));
         }
         
-        List variantStandardFeatures = delegator.findByAndCache("ProductFeatureAndAppl", UtilMisc.toMap("productId", variantProduct.get("productId"), "productFeatureApplTypeId", "STANDARD_FEATURE"));
+        List<GenericValue> variantStandardFeatures = delegator.findByAndCache("ProductFeatureAndAppl", UtilMisc.toMap("productId", variantProduct.get("productId"), "productFeatureApplTypeId", "STANDARD_FEATURE"));
         // Debug.logInfo("Found variantStandardFeatures: " + variantStandardFeatures, module);
 
-        Iterator variantStandardFeatureIter = UtilMisc.toIterator(EntityUtil.filterByDate(variantStandardFeatures));
+        Iterator<GenericValue> variantStandardFeatureIter = UtilMisc.toIterator(EntityUtil.filterByDate(variantStandardFeatures));
         while (variantStandardFeatureIter != null && variantStandardFeatureIter.hasNext()) {
-            GenericValue variantStandardFeature = (GenericValue) variantStandardFeatureIter.next();
+            GenericValue variantStandardFeature = variantStandardFeatureIter.next();
             if (virtualSelectableFeatureIds.contains(variantStandardFeature.get("productFeatureId"))) {
                 GenericValue dummyFeature = delegator.makeValue("ProductFeature");
                 dummyFeature.setAllFields(variantStandardFeature, true, null, null);
@@ -399,14 +399,14 @@
             GenericValue alternativeOptionProduct = delegator.findByPrimaryKeyCache("Product", UtilMisc.toMap("productId", alternativeOptionProductId));
             if (alternativeOptionProduct != null) {
                 if ("Y".equals(alternativeOptionProduct.getString("isVariant"))) {
-                    Set distFeatures = getVariantDistinguishingFeatures(alternativeOptionProduct);
+                    Set<GenericValue> distFeatures = getVariantDistinguishingFeatures(alternativeOptionProduct);
                     if (UtilValidate.isNotEmpty(distFeatures)) {
                         // Debug.logInfo("Found distinguishing features: " + distFeatures, module);
                         
                         StringBuilder nameBuf = new StringBuilder();
-                        Iterator distFeatIter = distFeatures.iterator();
+                        Iterator<GenericValue> distFeatIter = distFeatures.iterator();
                         while (distFeatIter.hasNext()) {
-                            GenericValue productFeature = (GenericValue) distFeatIter.next();
+                            GenericValue productFeature = distFeatIter.next();
                             GenericValue productFeatureType = productFeature.getRelatedOneCache("ProductFeatureType");
                             if (productFeatureType != null) {
                                 nameBuf.append(productFeatureType.get("description", locale));
@@ -442,7 +442,7 @@
      * @param productFeatureApplTypeId - if null, returns ALL productFeatures, regardless of applType
      * @return List
      */
-    public static List getProductFeaturesByApplTypeId(GenericDelegator delegator, String productId, String productFeatureApplTypeId) {
+    public static List<GenericValue> getProductFeaturesByApplTypeId(GenericDelegator delegator, String productId, String productFeatureApplTypeId) {
         if (productId == null) {
             return null;
         }
@@ -455,14 +455,14 @@
         return null;
     }
 
-    public static List getProductFeaturesByApplTypeId(GenericValue product, String productFeatureApplTypeId) {
+    public static List<GenericValue> getProductFeaturesByApplTypeId(GenericValue product, String productFeatureApplTypeId) {
         if (product == null) {
             return null;
         }
-        List features = FastList.newInstance();
+        List<GenericValue> features = FastList.newInstance();
         try {
             if (product != null) {
-                List productAppls;
+                List<GenericValue> productAppls;
                 if (productFeatureApplTypeId == null) {
                     productAppls = product.getRelated("ProductFeatureAppl");
                 } else {
@@ -470,7 +470,7 @@
                             UtilMisc.toMap("productFeatureApplTypeId", productFeatureApplTypeId));
                 }
                 for (int i = 0; i < productAppls.size(); i++) {
-                    GenericValue productAppl = (GenericValue)productAppls.get(i);
+                    GenericValue productAppl = productAppls.get(i);
                     features.add(productAppl.getRelatedOne("ProductFeature"));
                 }
                 features = EntityUtil.orderBy(features, UtilMisc.toList("description"));
@@ -511,18 +511,18 @@
                 GenericDelegator delegator = product.getDelegator();
                 Map<String,String> fields = UtilMisc.toMap("productId", product.getString("productId"), "productFeatureApplTypeId", "SELECTABLE_FEATURE");
                 List<String> order = UtilMisc.toList("productFeatureTypeId", "sequenceNum");
-                List features = delegator.findByAndCache("ProductFeatureAndAppl", fields, order);
-                List featuresSorted = (List) UtilMisc.sortMaps(features, order);
-                Iterator it = (Iterator) featuresSorted.iterator();
+                List<GenericValue> features = delegator.findByAndCache("ProductFeatureAndAppl", fields, order);
+                List<GenericValue> featuresSorted = EntityUtil.orderBy(features, order);
+                Iterator<GenericValue> it = featuresSorted.iterator();
                 String oldType = null;
                 List<Map<String,String>> featureList = FastList.newInstance();
                 while(it.hasNext()) {
-                    GenericValue productFeatureAppl = (GenericValue) it.next();
+                    GenericValue productFeatureAppl = it.next();
                     if (oldType == null || !oldType.equals(productFeatureAppl.getString("productFeatureTypeId"))) {
                     	// use first entry for type and description
                         if (oldType != null) {
                             featureTypeFeatures.add(featureList);
-                            featureList =  FastList.newInstance();
+                            featureList = FastList.newInstance();
                             } 
                         GenericValue productFeatureType = delegator.findByPrimaryKey("ProductFeatureType", UtilMisc.toMap("productFeatureTypeId", 
                         		productFeatureAppl.getString("productFeatureTypeId")));
@@ -531,13 +531,13 @@
                         oldType = productFeatureAppl.getString("productFeatureTypeId");
                     }
                     // fill other entries with featureId, description and default price and currency
-                    Map <String,String> featureData = UtilMisc.toMap("productFeatureId", productFeatureAppl.getString("productFeatureId"));
+                    Map<String,String> featureData = UtilMisc.toMap("productFeatureId", productFeatureAppl.getString("productFeatureId"));
                     if (UtilValidate.isNotEmpty(productFeatureAppl.get("description"))) {
                 		featureData.put("description", productFeatureAppl.getString("description"));
                     } else {
                     	featureData.put("description", productFeatureAppl.getString("productFeatureId"));
                     }
-                    List <GenericValue> productFeaturePrices = EntityUtil.filterByDate(delegator.findByAnd("ProductFeaturePrice", 
+                    List<GenericValue> productFeaturePrices = EntityUtil.filterByDate(delegator.findByAnd("ProductFeaturePrice", 
                     		UtilMisc.toMap("productFeatureId", productFeatureAppl.getString("productFeatureId"), "productPriceTypeId", "DEFAULT_PRICE")));
                     if (UtilValidate.isNotEmpty(productFeaturePrices)) {
                     	GenericValue productFeaturePrice = productFeaturePrices.get(0);
@@ -559,10 +559,10 @@
         return featureTypeFeatures;
     }
 
-    public static Map getOptionalProductFeatures(GenericDelegator delegator, String productId) {
-        Map featureMap = new LinkedHashMap();
+    public static Map<String, List<GenericValue>> getOptionalProductFeatures(GenericDelegator delegator, String productId) {
+        Map<String, List<GenericValue>> featureMap = new LinkedHashMap<String, List<GenericValue>>();
 
-        List productFeatureAppls = null;
+        List<GenericValue> productFeatureAppls = null;
         try {
             productFeatureAppls = delegator.findByAnd("ProductFeatureAndAppl", UtilMisc.toMap("productId", productId, "productFeatureApplTypeId", "OPTIONAL_FEATURE"), UtilMisc.toList("productFeatureTypeId", "sequenceNum"));
         } catch (GenericEntityException e) {
@@ -570,11 +570,11 @@
         }
 
         if (productFeatureAppls != null) {
-            Iterator i = productFeatureAppls.iterator();
+            Iterator<GenericValue> i = productFeatureAppls.iterator();
             while (i.hasNext()) {
-                GenericValue appl = (GenericValue) i.next();
+                GenericValue appl = i.next();
                 String featureType = appl.getString("productFeatureTypeId");
-                List features = (List) featureMap.get(featureType);
+                List<GenericValue> features = featureMap.get(featureType);
                 if (features == null) {
                     features = FastList.newInstance();
                 }
@@ -588,15 +588,15 @@
 
     // product calc methods
     
-    public static double calcOrderAdjustments(List orderHeaderAdjustments, double subTotal, boolean includeOther, boolean includeTax, boolean includeShipping) {
+    public static double calcOrderAdjustments(List<GenericValue> orderHeaderAdjustments, double subTotal, boolean includeOther, boolean includeTax, boolean includeShipping) {
         double adjTotal = 0.0;
 
         if (UtilValidate.isNotEmpty(orderHeaderAdjustments)) {
-            List filteredAdjs = filterOrderAdjustments(orderHeaderAdjustments, includeOther, includeTax, includeShipping, false, false);
-            Iterator adjIt = filteredAdjs.iterator();
+            List<GenericValue> filteredAdjs = filterOrderAdjustments(orderHeaderAdjustments, includeOther, includeTax, includeShipping, false, false);
+            Iterator<GenericValue> adjIt = filteredAdjs.iterator();
 
             while (adjIt.hasNext()) {
-                GenericValue orderAdjustment = (GenericValue) adjIt.next();
+                GenericValue orderAdjustment = adjIt.next();
 
                 adjTotal += calcOrderAdjustment(orderAdjustment, subTotal);
             }
@@ -616,14 +616,14 @@
         return adjustment;
     }    
     
-    public static List filterOrderAdjustments(List adjustments, boolean includeOther, boolean includeTax, boolean includeShipping, boolean forTax, boolean forShipping) {
-        List newOrderAdjustmentsList = FastList.newInstance();
+    public static List<GenericValue> filterOrderAdjustments(List<GenericValue> adjustments, boolean includeOther, boolean includeTax, boolean includeShipping, boolean forTax, boolean forShipping) {
+        List<GenericValue> newOrderAdjustmentsList = FastList.newInstance();
 
         if (UtilValidate.isNotEmpty(adjustments)) {
-            Iterator adjIt = adjustments.iterator();
+            Iterator<GenericValue> adjIt = adjustments.iterator();
 
             while (adjIt.hasNext()) {
-                GenericValue orderAdjustment = (GenericValue) adjIt.next();
+                GenericValue orderAdjustment = adjIt.next();
 
                 boolean includeAdjustment = false;
 
@@ -671,7 +671,7 @@
         return getAverageProductRating(product, null, productStoreId);
     }
 
-    public static double getAverageProductRating(GenericValue product, List reviews, String productStoreId) {
+    public static double getAverageProductRating(GenericValue product, List<GenericValue> reviews, String productStoreId) {
         if (product == null) {
             Debug.logWarning("Invalid product entity passed; unable to obtain valid product rating", module);
             return 0.00;
@@ -686,14 +686,14 @@
             productEntityRating = Double.valueOf(0);
         }
         if (entityFieldType == null) {
-            entityFieldType = new String();
+            entityFieldType = "";
         }
 
         if ("PRDR_FLAT".equals(entityFieldType)) {
             productRating = productEntityRating.doubleValue();
         } else {
             // get the product rating from the ProductReview entity; limit by product store if ID is passed
-            Map reviewByAnd = UtilMisc.toMap("statusId", "PRR_APPROVED");
+            Map<String, String> reviewByAnd = UtilMisc.toMap("statusId", "PRR_APPROVED");
             if (productStoreId != null) {
                 reviewByAnd.put("productStoreId", productStoreId);
             }
@@ -711,9 +711,9 @@
             double ratingTally = 0;
             double numRatings = 0;
             if (reviews != null) {
-                Iterator i = reviews.iterator();
+                Iterator<GenericValue> i = reviews.iterator();
                 while (i.hasNext()) {
-                    GenericValue productReview = (GenericValue) i.next();
+                    GenericValue productReview = i.next();
                     Double rating = productReview.getDouble("productRating");
                     if (rating != null) {
                         ratingTally += rating.doubleValue();
@@ -741,7 +741,7 @@
         return productRating;
     }
 
-    public static List getCurrentProductCategories(GenericDelegator delegator, String productId) {
+    public static List<GenericValue> getCurrentProductCategories(GenericDelegator delegator, String productId) {
         GenericValue product = null;
         try {
             product = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", productId));
@@ -751,13 +751,13 @@
         return getCurrentProductCategories(delegator, product);
     }
 
-    public static List getCurrentProductCategories(GenericDelegator delegator, GenericValue product) {
+    public static List<GenericValue> getCurrentProductCategories(GenericDelegator delegator, GenericValue product) {
         if (product == null) {
             return null;
         }
-        List categories = FastList.newInstance();
+        List<GenericValue> categories = FastList.newInstance();
         try {
-            List categoryMembers = product.getRelated("ProductCategoryMember");
+            List<GenericValue> categoryMembers = product.getRelated("ProductCategoryMember");
             categoryMembers = EntityUtil.filterByDate(categoryMembers);
             categories = EntityUtil.getRelated("ProductCategory", categoryMembers);
         } catch (GenericEntityException e) {
@@ -774,7 +774,7 @@
         }
 
         try {
-            List virtualProductAssocs = delegator.findByAndCache("ProductAssoc", UtilMisc.toMap("productIdTo", productId, "productAssocTypeId", "PRODUCT_VARIANT"), UtilMisc.toList("-fromDate"));
+            List<GenericValue> virtualProductAssocs = delegator.findByAndCache("ProductAssoc", UtilMisc.toMap("productIdTo", productId, "productAssocTypeId", "PRODUCT_VARIANT"), UtilMisc.toList("-fromDate"));
             virtualProductAssocs = EntityUtil.filterByDate(virtualProductAssocs);
             if (UtilValidate.isEmpty(virtualProductAssocs)) {
                 //okay, not a variant, try a UNIQUE_ITEM
@@ -956,7 +956,7 @@
         return products;
     }
 
-    public static List findProducts(GenericDelegator delegator, String idToFind) throws GenericEntityException {
+    public static List<GenericValue> findProducts(GenericDelegator delegator, String idToFind) throws GenericEntityException {
         return findProducts(delegator, idToFind, null);
     }
 
@@ -989,31 +989,31 @@
         return false;
     }
     
-    public static Set getRefurbishedProductIdSet(String productId, GenericDelegator delegator) throws GenericEntityException {
-        Set productIdSet = FastSet.newInstance();
+    public static Set<String> getRefurbishedProductIdSet(String productId, GenericDelegator delegator) throws GenericEntityException {
+        Set<String> productIdSet = FastSet.newInstance();
 
         // find associated refurb items, we want serial number for main item or any refurb items too
-        List refubProductAssocs = EntityUtil.filterByDate(delegator.findByAnd("ProductAssoc", 
+        List<GenericValue> refubProductAssocs = EntityUtil.filterByDate(delegator.findByAnd("ProductAssoc", 
                 UtilMisc.toMap("productId", productId, "productAssocTypeId", "PRODUCT_REFURB")));
-        Iterator refubProductAssocIter = refubProductAssocs.iterator();
+        Iterator<GenericValue> refubProductAssocIter = refubProductAssocs.iterator();
         while (refubProductAssocIter.hasNext()) {
-            GenericValue refubProductAssoc = (GenericValue) refubProductAssocIter.next();
-            productIdSet.add(refubProductAssoc.get("productIdTo"));
+            GenericValue refubProductAssoc = refubProductAssocIter.next();
+            productIdSet.add(refubProductAssoc.getString("productIdTo"));
         }
         
         // see if this is a refurb productId to, and find product(s) it is a refurb of
-        List refubProductToAssocs = EntityUtil.filterByDate(delegator.findByAnd("ProductAssoc", 
+        List<GenericValue> refubProductToAssocs = EntityUtil.filterByDate(delegator.findByAnd("ProductAssoc", 
                 UtilMisc.toMap("productIdTo", productId, "productAssocTypeId", "PRODUCT_REFURB")));
-        Iterator refubProductToAssocIter = refubProductToAssocs.iterator();
+        Iterator<GenericValue> refubProductToAssocIter = refubProductToAssocs.iterator();
         while (refubProductToAssocIter.hasNext()) {
-            GenericValue refubProductToAssoc = (GenericValue) refubProductToAssocIter.next();
-            productIdSet.add(refubProductToAssoc.get("productId"));
+            GenericValue refubProductToAssoc = refubProductToAssocIter.next();
+            productIdSet.add(refubProductToAssoc.getString("productId"));
         }
         
         return productIdSet;
     }
     
-    public static String getVariantFromFeatureTree(String productId, List selectedFeatures, GenericDelegator delegator) {
+    public static String getVariantFromFeatureTree(String productId, List<String> selectedFeatures, GenericDelegator delegator) {
         
         //  all method code moved here from ShoppingCartEvents.addToCart event
         String variantProductId = null;
@@ -1078,15 +1078,15 @@
             }
             // find variant
             // Debug.log("=====try to find variant for product: " + productId + " and features: " + selectedFeatures);
-            List  <GenericValue> productAssocs = EntityUtil.filterByDate(delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", productId, "productAssocTypeId","PRODUCT_VARIANT")));
+            List<GenericValue> productAssocs = EntityUtil.filterByDate(delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", productId, "productAssocTypeId","PRODUCT_VARIANT")));
             Iterator <GenericValue> assocIter = productAssocs.iterator();
             boolean productFound = false;
 nextProd:       while(assocIter.hasNext()) {
-                GenericValue productAssoc = (GenericValue) assocIter.next();
+                GenericValue productAssoc = assocIter.next();
                 Iterator <String> fIter = selectedFeatures.iterator();
                 while (fIter.hasNext()) {
-                    String featureId = (String) fIter.next();
-                    List <GenericValue> pAppls = delegator.findByAndCache("ProductFeatureAppl", UtilMisc.toMap("productId", productAssoc.getString("productIdTo"), "productFeatureId", featureId, "productFeatureApplTypeId","STANDARD_FEATURE"));
+                    String featureId = fIter.next();
+                    List<GenericValue> pAppls = delegator.findByAndCache("ProductFeatureAppl", UtilMisc.toMap("productId", productAssoc.getString("productIdTo"), "productFeatureId", featureId, "productFeatureApplTypeId","STANDARD_FEATURE"));
                     if (UtilValidate.isEmpty(pAppls)) {
                         continue nextProd;
                     }
@@ -1121,7 +1121,7 @@
                     productFeatureAppl.create();
                 }
                 //add standard features too
-                List <GenericValue> stdFeaturesAppls = EntityUtil.filterByDate(delegator.findByAnd("ProductFeatureAppl", UtilMisc.toMap("productId", productId, "productFeatureApplTypeId", "STANDARD_FEATURE")));
+                List<GenericValue> stdFeaturesAppls = EntityUtil.filterByDate(delegator.findByAnd("ProductFeatureAppl", UtilMisc.toMap("productId", productId, "productFeatureApplTypeId", "STANDARD_FEATURE")));
                 Iterator <GenericValue> stdFeatureIter = stdFeaturesAppls.iterator();               
                 while (stdFeatureIter.hasNext()) {
                     GenericValue stdFeaturesAppl = stdFeatureIter.next();
@@ -1132,7 +1132,7 @@
                  *  take the default price from the vitual product, go to the productfeature table and retrieve all the prices for the difFerent features
                  *  add these to the price of the virtual product, store the result as the default price on the variant you created.
                  */
-                List <GenericValue> productPrices = EntityUtil.filterByDate(delegator.findByAnd("ProductPrice", UtilMisc.toMap("productId", productId)));
+                List<GenericValue> productPrices = EntityUtil.filterByDate(delegator.findByAnd("ProductPrice", UtilMisc.toMap("productId", productId)));
                 Iterator <GenericValue> ppIter = productPrices.iterator();
                 while (ppIter.hasNext()) {
                     GenericValue productPrice = ppIter.next();
@@ -1160,7 +1160,7 @@
                 Debug.log("set the productId to: " + product.getString("productId"));
                 
                 // copy the supplier
-                List <GenericValue> supplierProducts = delegator.findByAndCache("SupplierProduct", UtilMisc.toMap("productId", productId));
+                List<GenericValue> supplierProducts = delegator.findByAndCache("SupplierProduct", UtilMisc.toMap("productId", productId));
                 Iterator <GenericValue> SPite = supplierProducts.iterator();
                 while (SPite.hasNext()) {
                     GenericValue supplierProduct = SPite.next();
@@ -1169,7 +1169,7 @@
                 }
                 
                 // copy the content
-                List <GenericValue> productContents = delegator.findByAndCache("ProductContent", UtilMisc.toMap("productId", productId));
+                List<GenericValue> productContents = delegator.findByAndCache("ProductContent", UtilMisc.toMap("productId", productId));
                 Iterator <GenericValue> productContentsTte = productContents.iterator();
                 while (productContentsTte.hasNext()) {
                     GenericValue productContent = productContentsTte.next();

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/product/VariantEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/product/VariantEvents.java?rev=712916&r1=712915&r2=712916&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/product/product/VariantEvents.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/product/product/VariantEvents.java Mon Nov 10 18:16:46 2008
@@ -73,7 +73,7 @@
         try {
             featureTypeSize = Integer.parseInt(featureTypeSizeStr);
         } catch (NumberFormatException e) {
-            Map messageMap = UtilMisc.toMap("featureTypeSizeStr", featureTypeSizeStr);
+            Map<String, String> messageMap = UtilMisc.toMap("featureTypeSizeStr", featureTypeSizeStr);
             errMsg = UtilProperties.getMessage(resource,"variantevents.featureTypeSize_not_number", messageMap, UtilHttp.getLocale(request));
             request.setAttribute("_ERROR_MESSAGE_", errMsg);
             return "error";
@@ -86,7 +86,7 @@
                 // read the product, duplicate it with the given id
                 GenericValue product = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", productId));
                 if (product == null) {
-                    Map messageMap = UtilMisc.toMap("productId", productId);
+                    Map<String, String> messageMap = UtilMisc.toMap("productId", productId);
                     errMsg = UtilProperties.getMessage(resource,"variantevents.product_not_found_with_ID", messageMap, UtilHttp.getLocale(request));
                     TransactionUtil.rollback(beganTransacton, errMsg, null);
                     request.setAttribute("_ERROR_MESSAGE_", errMsg);
@@ -123,7 +123,7 @@
                 for (int i = 0; i < featureTypeSize; i++) {
                     String productFeatureId = request.getParameter("feature_" + i);
                     if (productFeatureId == null) {
-                        Map messageMap = UtilMisc.toMap("i", Integer.toString(i));
+                        Map<String, String> messageMap = UtilMisc.toMap("i", Integer.toString(i));
                         errMsg = UtilProperties.getMessage(resource,"variantevents.productFeatureId_for_feature_type_number_not_found", messageMap, UtilHttp.getLocale(request));
                         TransactionUtil.rollback(beganTransacton, errMsg, null);
                         request.setAttribute("_ERROR_MESSAGE_", errMsg);
@@ -146,7 +146,7 @@
 
                 TransactionUtil.commit(beganTransacton);
             } catch (GenericEntityException e) {
-                Map messageMap = UtilMisc.toMap("errMessage", e.toString());
+                Map<String, String> messageMap = UtilMisc.toMap("errMessage", e.toString());
                 errMsg = UtilProperties.getMessage(resource,"variantevents.entity_error_quick_add_variant_data", messageMap, UtilHttp.getLocale(request));
                 TransactionUtil.rollback(beganTransacton, errMsg, null);
                 Debug.logError(e, "Entity error creating quick add variant data", module);
@@ -155,13 +155,13 @@
             }
         } catch (GenericTransactionException e) {
             Debug.logError(e, "Transaction error creating quick add variant data", module);
-            Map messageMap = UtilMisc.toMap("errMessage", e.toString());
+            Map<String, String> messageMap = UtilMisc.toMap("errMessage", e.toString());
             errMsg = UtilProperties.getMessage(resource,"variantevents.transaction_error_quick_add_variant_data", messageMap, UtilHttp.getLocale(request));
             request.setAttribute("_ERROR_MESSAGE_", errMsg);
             return "error";
         }
 
-        Map messageMap = UtilMisc.toMap("variantProductId", variantProductId);
+        Map<String, String> messageMap = UtilMisc.toMap("variantProductId", variantProductId);
         String sucMsg = UtilProperties.getMessage(resource,"variantevents.successfully_created_variant_product_with_id", messageMap, UtilHttp.getLocale(request));
         request.setAttribute("_EVENT_MESSAGE_", sucMsg);
         return "success";