Author: jleroux
Date: Wed Nov 12 07:09:40 2008
New Revision: 713396
URL: http://svn.apache.org/viewvc?rev=713396&view=rev
Log:
Reverted to r709726. At least a bug was introduced since then in
prodMakeFeatureTree. Most likely one in line
List<String> featureOrder =
UtilMisc.makeListWritable(UtilGenerics.<String>checkList(context.get("featureOrder")));
but not sure. No time to go further now
Modified:
ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductServices.java
Modified:
ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductServices.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductServices.java?rev=713396&r1=713395&r2=713396&view=diff
==============================================================================
---
ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductServices.java
(original)
+++
ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductServices.java
Wed Nov 12 07:09:40 2008
@@ -28,11 +28,9 @@
import javolution.util.FastList;
import javolution.util.FastMap;
-import javolution.util.FastSet;
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.UtilDateTime;
-import org.ofbiz.base.util.UtilGenerics;
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.base.util.UtilProperties;
import org.ofbiz.base.util.UtilValidate;
@@ -60,34 +58,38 @@
/**
* Creates a Collection of product entities which are variant
products from the specified product ID.
*/
- public static Map<String, Object>
prodFindAllVariants(DispatchContext dctx, Map<String, ? extends
Object> context) {
+ public static Map prodFindAllVariants(DispatchContext dctx, Map
context) {
// * String productId -- Parent (virtual) product ID
- Map<String, Object> subContext =
UtilMisc.makeMapWritable(context);
- subContext.put("type", "PRODUCT_VARIANT");
- return prodFindAssociatedByType(dctx, subContext);
+ context.put("type", "PRODUCT_VARIANT");
+ return prodFindAssociatedByType(dctx, context);
}
/**
* Finds a specific product or products which contain the selected
features.
*/
- public static Map<String, Object>
prodFindSelectedVariant(DispatchContext dctx, Map<String, ? extends
Object> context) {
+ public static Map prodFindSelectedVariant(DispatchContext dctx,
Map context) {
// * String productId -- Parent (virtual) product ID
// * Map selectedFeatures -- Selected features
GenericDelegator delegator = dctx.getDelegator();
Locale locale = (Locale) context.get("locale");
String productId = (String) context.get("productId");
- Map selectedFeatures =
UtilGenerics.checkMap(context.get("selectedFeatures"));
- List<GenericValue> products = FastList.newInstance();
+ Map selectedFeatures = (Map) context.get("selectedFeatures");
+ ArrayList products = new ArrayList();
// All the variants for this products are retrieved
- Map<String, Object> resVariants = prodFindAllVariants(dctx,
context);
- List<GenericValue> variants =
UtilGenerics.checkList(resVariants.get("assocProducts"));
- for (GenericValue oneVariant: variants) {
+ Map resVariants = prodFindAllVariants(dctx, context);
+ List variants = (List)resVariants.get("assocProducts");
+ GenericValue oneVariant = null;
+ Iterator variantsIt = variants.iterator();
+ while (variantsIt.hasNext()) {
// For every variant, all the standard features are retrieved
- Map<String, String> feaContext = FastMap.newInstance();
- feaContext.put("productId",
oneVariant.getString("productIdTo"));
+ oneVariant = (GenericValue)variantsIt.next();
+ Map feaContext = new HashMap();
+ feaContext.put("productId", oneVariant.get("productIdTo"));
feaContext.put("type", "STANDARD_FEATURE");
- Map<String, Object> resFeatures = prodGetFeatures(dctx,
feaContext);
- List<GenericValue> features =
UtilGenerics.checkList(resFeatures.get("productFeatures"));
+ Map resFeatures = prodGetFeatures(dctx, feaContext);
+ List features = (List)resFeatures.get("productFeatures");
+ Iterator featuresIt = features.iterator();
+ GenericValue oneFeature = null;
boolean variantFound = true;
// The variant is discarded if at least one of its
standard features
// has the same type of one of the selected features but a
different feature id.
@@ -97,7 +99,8 @@
// Variant2: (COLOR, Black), (SIZE, Small) --> ok
// Variant3: (COLOR, Black), (SIZE, Small), (IMAGE,
SkyLine) --> ok
// Variant4: (COLOR, Black), (IMAGE, SkyLine) --> ok
- for (GenericValue oneFeature: features) {
+ while (featuresIt.hasNext()) {
+ oneFeature = (GenericValue)featuresIt.next();
if
(selectedFeatures.containsKey(oneFeature.getString("productFeatureTypeId")))
{
if
(!selectedFeatures.containsValue(oneFeature.getString("productFeatureId")))
{
variantFound = false;
@@ -109,7 +112,7 @@
try {
products.add(delegator.findByPrimaryKey("Product",
UtilMisc.toMap("productId", oneVariant.getString("productIdTo"))));
} catch (GenericEntityException e) {
- Map<String, String> messageMap =
UtilMisc.toMap("errProductFeatures", e.toString());
+ Map messageMap =
UtilMisc.toMap("errProductFeatures", e.toString());
String errMsg =
UtilProperties.getMessage(resource,"productservices.problem_reading_product_features_errors",
messageMap, locale);
Debug.logError(e, errMsg, module);
return ServiceUtil.returnError(errMsg);
@@ -117,7 +120,7 @@
}
}
- Map<String, Object> result = ServiceUtil.returnSuccess();
+ Map result = ServiceUtil.returnSuccess();
result.put("products", products);
return result;
}
@@ -125,7 +128,7 @@
/**
* Finds product variants based on a product ID and a distinct
feature.
*/
- public static Map<String, Object>
prodFindDistinctVariants(DispatchContext dctx, Map<String, ? extends
Object> context) {
+ public static Map prodFindDistinctVariants(DispatchContext dctx,
Map context) {
// * String productId -- Parent (virtual) product ID
// * String feature -- Distinct feature name
GenericDelegator delegator = dctx.getDelegator();
@@ -138,24 +141,25 @@
/**
* Finds a Set of feature types in sequence.
*/
- public static Map<String, Object>
prodFindFeatureTypes(DispatchContext dctx, Map<String, ? extends
Object> context) {
+ public static Map prodFindFeatureTypes(DispatchContext dctx, Map
context) {
// * String productId -- Product ID to look up feature types
GenericDelegator delegator = dctx.getDelegator();
String productId = (String) context.get("productId");
Locale locale = (Locale) context.get("locale");
String errMsg=null;
- Set<String> featureSet = new LinkedHashSet<String>();
+ Set featureSet = new LinkedHashSet();
try {
- Map<String, String> fields = UtilMisc.toMap("productId",
productId, "productFeatureApplTypeId", "SELECTABLE_FEATURE");
- List<String> order = UtilMisc.toList("sequenceNum",
"productFeatureTypeId");
- List<GenericValue> features =
delegator.findByAndCache("ProductFeatureAndAppl", fields, order);
- for (GenericValue v: features) {
- featureSet.add(v.getString("productFeatureTypeId"));
+ Map fields = UtilMisc.toMap("productId", productId,
"productFeatureApplTypeId", "SELECTABLE_FEATURE");
+ List order = UtilMisc.toList("sequenceNum",
"productFeatureTypeId");
+ List features =
delegator.findByAndCache("ProductFeatureAndAppl", fields, order);
+ Iterator i = features.iterator();
+ while (i.hasNext()) {
+ featureSet.add(((GenericValue)
i.next()).getString("productFeatureTypeId"));
}
//if (Debug.infoOn()) Debug.logInfo("" + featureSet, module);
} catch (GenericEntityException e) {
- Map<String, String> messageMap =
UtilMisc.toMap("errProductFeatures", e.toString());
+ Map messageMap = UtilMisc.toMap("errProductFeatures",
e.toString());
errMsg =
UtilProperties.getMessage(resource,"productservices.problem_reading_product_features_errors",
messageMap, locale);
Debug.logError(e, errMsg, module);
return ServiceUtil.returnError(errMsg);
@@ -167,7 +171,7 @@
Debug.logWarning(errMsg + " for product " + productId,
module);
//return ServiceUtil.returnError(errMsg);
}
- Map<String, Object> result = ServiceUtil.returnSuccess();
+ Map result = ServiceUtil.returnSuccess();
result.put("featureSet", featureSet);
return result;
}
@@ -175,7 +179,7 @@
/**
* Builds a variant feature tree.
*/
- public static Map<String, Object>
prodMakeFeatureTree(DispatchContext dctx, Map<String, ? extends
Object> context) {
+ public static Map prodMakeFeatureTree(DispatchContext dctx, Map
context) {
// * String productId -- Parent (virtual) product ID
// * List featureOrder -- Order of features
// * String productStoreId -- Product Store ID for Inventory
@@ -184,23 +188,24 @@
GenericDelegator delegator = dctx.getDelegator();
LocalDispatcher dispatcher = dctx.getDispatcher();
- Map<String, Object> result = FastMap.newInstance();
- List<String> featureOrder =
UtilMisc.makeListWritable(UtilGenerics.<String>checkList(context.get("featureOrder")));
+ Map result = new HashMap();
+ List featureOrder = new LinkedList((Collection)
context.get("featureOrder"));
if (featureOrder == null || featureOrder.size() == 0) {
return ServiceUtil.returnError("Empty list of features
passed");
}
- List<GenericValue> variants =
UtilGenerics.checkList(prodFindAllVariants(dctx,
context).get("assocProducts"));
- List<String> virtualVariant = FastList.newInstance();
+ Collection variants = (Collection) prodFindAllVariants(dctx,
context).get("assocProducts");
+ List virtualVariant = new ArrayList();
if (variants == null || variants.size() == 0) {
return ServiceUtil.returnSuccess();
}
- List<String> items = FastList.newInstance();
+ List items = new ArrayList();
+ Iterator i = variants.iterator();
- for (GenericValue variant: variants) {
- String productIdTo = variant.getString("productIdTo");
+ while (i.hasNext()) {
+ String productIdTo = (String) ((GenericValue)
i.next()).get("productIdTo");
// first check to see if intro and discontinue dates are
within range
GenericValue productTo = null;
@@ -209,7 +214,7 @@
productTo = delegator.findByPrimaryKeyCache("Product",
UtilMisc.toMap("productId", productIdTo));
} catch (GenericEntityException e) {
Debug.logError(e, module);
- Map<String, String> messageMap =
UtilMisc.toMap("productIdTo", productIdTo, "errMessage", e.toString());
+ Map messageMap = UtilMisc.toMap("productIdTo",
productIdTo, "errMessage", e.toString());
return
ServiceUtil.returnError(UtilProperties.getMessage(resource,
"productservices.error_finding_associated_variant_with_ID_error",
messageMap, locale));
}
if (productTo == null) {
@@ -243,7 +248,7 @@
// next check inventory for each item: if inventory is not
required or is available
try {
- Map<String, Object> invReqResult =
dispatcher.runSync("isStoreInventoryAvailableOrNotRequired",
UtilMisc.<String, Object>toMap("productStoreId", productStoreId,
"productId", productIdTo, "quantity", Double.valueOf(1.0)));
+ Map invReqResult =
dispatcher.runSync("isStoreInventoryAvailableOrNotRequired",
UtilMisc.<String, Object>toMap("productStoreId", productStoreId,
"productId", productIdTo, "quantity", new Double(1.0)));
if (ServiceUtil.isError(invReqResult)) {
return ServiceUtil.returnError("Error calling the
isStoreInventoryRequired when building the variant product tree.",
null, null, invReqResult);
} else if ("Y".equals((String)
invReqResult.get("availableOrNotRequired"))) {
@@ -262,10 +267,10 @@
String productId = (String) context.get("productId");
// Make the selectable feature list
- List<GenericValue> selectableFeatures = null;
+ List selectableFeatures = null;
try {
- Map<String, String> fields = UtilMisc.toMap("productId",
productId, "productFeatureApplTypeId", "SELECTABLE_FEATURE");
- List<String> sort = UtilMisc.toList("sequenceNum");
+ Map fields = UtilMisc.toMap("productId", productId,
"productFeatureApplTypeId", "SELECTABLE_FEATURE");
+ List sort = UtilMisc.toList("sequenceNum");
selectableFeatures =
delegator.findByAndCache("ProductFeatureAndAppl", fields, sort);
selectableFeatures =
EntityUtil.filterByDate(selectableFeatures, true);
@@ -273,17 +278,20 @@
Debug.logError(e, module);
return
ServiceUtil.returnError(UtilProperties.getMessage(resource,"productservices.empty_list_of_selectable_features_found",
locale));
}
- Map<String, List<String>> features = FastMap.newInstance();
- for (GenericValue v: selectableFeatures) {
+ Map features = new HashMap();
+ Iterator sFIt = selectableFeatures.iterator();
+
+ while (sFIt.hasNext()) {
+ GenericValue v = (GenericValue) sFIt.next();
String featureType = v.getString("productFeatureTypeId");
String feature = v.getString("description");
if (!features.containsKey(featureType)) {
- List<String> featureList = FastList.newInstance();
+ List featureList = new LinkedList();
featureList.add(feature);
features.put(featureType, featureList);
} else {
- List<String> featureList = features.get(featureType);
+ List featureList = (LinkedList)
features.get(featureType);
featureList.add(feature);
features.put(featureType, featureList);
}
@@ -305,9 +313,9 @@
result.put(ModelService.RESPONSE_MESSAGE,
ModelService.RESPOND_SUCCESS);
}
- Map<String, GenericValue> sample = null;
+ Map sample = null;
try {
- sample = makeVariantSample(dctx.getDelegator(), features,
items, featureOrder.get(0));
+ sample = makeVariantSample(dctx.getDelegator(), features,
items, (String) featureOrder.get(0));
} catch (Exception e) {
return ServiceUtil.returnError(e.getMessage());
}
@@ -321,22 +329,22 @@
/**
* Gets the product features of a product.
*/
- public static Map<String, Object> prodGetFeatures(DispatchContext
dctx, Map<String, ? extends Object> context) {
+ public static Map prodGetFeatures(DispatchContext dctx, Map
context) {
// * String productId -- Product ID to fond
// * String type -- Type of feature
(STANDARD_FEATURE, SELECTABLE_FEATURE)
// * String distinct -- Distinct feature (SIZE, COLOR)
GenericDelegator delegator = dctx.getDelegator();
- Map<String, Object> result = FastMap.newInstance();
+ Map result = new HashMap();
String productId = (String) context.get("productId");
String distinct = (String) context.get("distinct");
String type = (String) context.get("type");
Locale locale = (Locale) context.get("locale");
String errMsg=null;
- List<GenericValue> features = null;
+ Collection features = null;
try {
- Map<String, String> fields = UtilMisc.toMap("productId",
productId);
- List<String> order = UtilMisc.toList("sequenceNum",
"productFeatureTypeId");
+ Map fields = UtilMisc.toMap("productId", productId);
+ List order = UtilMisc.toList("sequenceNum",
"productFeatureTypeId");
if (distinct != null) fields.put("productFeatureTypeId",
distinct);
if (type != null) fields.put("productFeatureApplTypeId",
type);
@@ -344,7 +352,7 @@
result.put("productFeatures", features);
result.put(ModelService.RESPONSE_MESSAGE,
ModelService.RESPOND_SUCCESS);
} catch (GenericEntityException e) {
- Map<String, String> messageMap =
UtilMisc.toMap("errMessage", e.toString());
+ Map messageMap = UtilMisc.toMap("errMessage", e.toString());
errMsg =
UtilProperties.getMessage(resource,"productservices.problem_reading_product_feature_entity",
messageMap, locale);
result.put(ModelService.RESPONSE_MESSAGE,
ModelService.RESPOND_ERROR);
result.put(ModelService.ERROR_MESSAGE, errMsg);
@@ -355,10 +363,10 @@
/**
* Finds a product by product ID.
*/
- public static Map<String, Object> prodFindProduct(DispatchContext
dctx, Map<String, ? extends Object> context) {
+ public static Map prodFindProduct(DispatchContext dctx, Map
context) {
// * String productId -- Product ID to find
GenericDelegator delegator = dctx.getDelegator();
- Map<String, Object> result = FastMap.newInstance();
+ Map result = new HashMap();
String productId = (String) context.get("productId");
Locale locale = (Locale) context.get("locale");
String errMsg = null;
@@ -375,13 +383,13 @@
GenericValue mainProduct = product;
if (product.get("isVariant") != null &&
product.getString("isVariant").equalsIgnoreCase("Y")) {
- List<GenericValue> c =
product.getRelatedByAndCache("AssocProductAssoc",
+ List c =
product.getRelatedByAndCache("AssocProductAssoc",
UtilMisc.toMap("productAssocTypeId",
"PRODUCT_VARIANT"));
//if (Debug.infoOn()) Debug.logInfo("Found related: "
+ c, module);
c = EntityUtil.filterByDate(c);
//if (Debug.infoOn()) Debug.logInfo("Found Filtered
related: " + c, module);
if (c.size() > 0) {
- GenericValue asV = c.iterator().next();
+ GenericValue asV = (GenericValue)
c.iterator().next();
//if (Debug.infoOn()) Debug.logInfo("ASV: " + asV,
module);
mainProduct = asV.getRelatedOneCache("MainProduct");
@@ -392,7 +400,7 @@
result.put(ModelService.RESPONSE_MESSAGE,
ModelService.RESPOND_SUCCESS);
} catch (GenericEntityException e) {
e.printStackTrace();
- Map<String, String> messageMap =
UtilMisc.toMap("errMessage", e.getMessage());
+ Map messageMap = UtilMisc.toMap("errMessage",
e.getMessage());
errMsg =
UtilProperties.getMessage(resource,"productservices.problems_reading_product_entity",
messageMap, locale);
result.put(ModelService.RESPONSE_MESSAGE,
ModelService.RESPOND_ERROR);
result.put(ModelService.ERROR_MESSAGE, errMsg);
@@ -404,11 +412,11 @@
/**
* Finds associated products by product ID and association ID.
*/
- public static Map<String, Object>
prodFindAssociatedByType(DispatchContext dctx, Map<String, ? extends
Object> context) {
+ public static Map prodFindAssociatedByType(DispatchContext dctx,
Map context) {
// * String productId -- Current Product ID
// * String type -- Type of association (ie
PRODUCT_UPGRADE, PRODUCT_COMPLEMENT, PRODUCT_VARIANT)
GenericDelegator delegator = dctx.getDelegator();
- Map<String, Object> result = FastMap.newInstance();
+ Map result = new HashMap();
String productId = (String) context.get("productId");
String productIdTo = (String) context.get("productIdTo");
String type = (String) context.get("type");
@@ -439,7 +447,7 @@
try {
product = delegator.findByPrimaryKeyCache("Product",
UtilMisc.toMap("productId", productId));
} catch (GenericEntityException e) {
- Map<String, String> messageMap =
UtilMisc.toMap("errMessage", e.getMessage());
+ Map messageMap = UtilMisc.toMap("errMessage",
e.getMessage());
errMsg =
UtilProperties.getMessage(resource,"productservices.productservices.problems_reading_product_entity",
messageMap, locale);
result.put(ModelService.RESPONSE_MESSAGE,
ModelService.RESPOND_ERROR);
result.put(ModelService.ERROR_MESSAGE, errMsg);
@@ -454,7 +462,7 @@
}
try {
- List<GenericValue> productAssocs = null;
+ List productAssocs = null;
if (productIdTo == null) {
productAssocs =
product.getRelatedCache("MainProductAssoc",
UtilMisc.toMap("productAssocTypeId", type),
UtilMisc.toList("sequenceNum"));
@@ -479,7 +487,7 @@
result.put("assocProducts", productAssocs);
result.put(ModelService.RESPONSE_MESSAGE,
ModelService.RESPOND_SUCCESS);
} catch (GenericEntityException e) {
- Map<String, String> messageMap =
UtilMisc.toMap("errMessage", e.getMessage());
+ Map messageMap = UtilMisc.toMap("errMessage",
e.getMessage());
errMsg =
UtilProperties.getMessage(resource,"productservices.problems_product_association_relation_error",
messageMap, locale);
result.put(ModelService.RESPONSE_MESSAGE,
ModelService.RESPOND_ERROR);
result.put(ModelService.ERROR_MESSAGE, errMsg);
@@ -490,11 +498,11 @@
}
// Builds a product feature tree
- private static Map<String, Object> makeGroup(GenericDelegator
delegator, Map<String, List<String>> featureList, List<String> items,
List<String> order, int index)
+ private static Map makeGroup(GenericDelegator delegator, Map
featureList, List items, List order, int index)
throws IllegalArgumentException, IllegalStateException {
- //List featureKey = FastList.newInstance();
- Map<String, List<String>> tempGroup = FastMap.newInstance();
- Map<String, Object> group = new LinkedHashMap<String, Object>();
+ //List featureKey = new ArrayList();
+ Map tempGroup = new HashMap();
+ Map group = new LinkedHashMap();
String orderKey = (String) order.get(index);
if (featureList == null) {
@@ -509,18 +517,21 @@
}
// loop through items and make the lists
- for (String thisItem: items) {
+ Iterator itemIterator = items.iterator();
+
+ while (itemIterator.hasNext()) {
// -------------------------------
// Gather the necessary data
// -------------------------------
+ String thisItem = (String) itemIterator.next();
if (Debug.verboseOn()) Debug.logVerbose("ThisItem: " +
thisItem, module);
- List<GenericValue> features = null;
+ List features = null;
try {
- Map<String, String> fields =
UtilMisc.toMap("productId", thisItem, "productFeatureTypeId", orderKey,
+ Map fields = UtilMisc.toMap("productId", thisItem,
"productFeatureTypeId", orderKey,
"productFeatureApplTypeId", "STANDARD_FEATURE");
- List<String> sort = UtilMisc.toList("sequenceNum");
+ List sort = UtilMisc.toList("sequenceNum");
// get the features and filter out expired dates
features =
delegator.findByAndCache("ProductFeatureAndAppl", fields, sort);
@@ -531,16 +542,19 @@
if (Debug.verboseOn()) Debug.logVerbose("Features: " +
features, module);
// -------------------------------
- for (GenericValue item: features) {
- String itemKey = item.getString("description");
+ Iterator featuresIterator = features.iterator();
+
+ while (featuresIterator.hasNext()) {
+ GenericValue item = (GenericValue)
featuresIterator.next();
+ Object itemKey = item.get("description");
if (tempGroup.containsKey(itemKey)) {
- List<String> itemList = tempGroup.get(itemKey);
+ List itemList = (List) tempGroup.get(itemKey);
if (!itemList.contains(thisItem))
itemList.add(thisItem);
} else {
- List<String> itemList = UtilMisc.toList(thisItem);
+ List itemList = UtilMisc.toList(thisItem);
tempGroup.put(itemKey, itemList);
}
@@ -549,13 +563,17 @@
if (Debug.verboseOn()) Debug.logVerbose("TempGroup: " +
tempGroup, module);
// Loop through the feature list and order the keys in the
tempGroup
- List<String> orderFeatureList = featureList.get(orderKey);
+ List orderFeatureList = (List) featureList.get(orderKey);
if (orderFeatureList == null) {
throw new IllegalArgumentException("Cannot build feature
tree: orderFeatureList is null for orderKey=" + orderKey);
}
- for (String featureStr: orderFeatureList) {
+ Iterator featureListIt = orderFeatureList.iterator();
+
+ while (featureListIt.hasNext()) {
+ String featureStr = (String) featureListIt.next();
+
if (tempGroup.containsKey(featureStr))
group.put(featureStr, tempGroup.get(featureStr));
}
@@ -573,11 +591,13 @@
}
// loop through the keysets and get the sub-groups
- for (String key: group.keySet()) {
- List<String> itemList =
UtilGenerics.checkList(group.get(key));
+ Iterator groupIterator = group.keySet().iterator();
+ while (groupIterator.hasNext()) {
+ Object key = groupIterator.next();
+ List itemList = (List) group.get(key);
if (UtilValidate.isNotEmpty(itemList)) {
- Map<String, Object> subGroup = makeGroup(delegator,
featureList, itemList, order, index + 1);
+ Map subGroup = makeGroup(delegator, featureList,
itemList, order, index + 1);
group.put(key, subGroup);
} else {
// do nothing, ie put nothing in the Map
@@ -588,16 +608,19 @@
}
// builds a variant sample (a single sku for a featureType)
- private static Map<String, GenericValue>
makeVariantSample(GenericDelegator delegator, Map<String,
List<String>> featureList, List<String> items, String feature) {
- Map<String, GenericValue> tempSample = FastMap.newInstance();
- Map<String, GenericValue> sample = new LinkedHashMap<String,
GenericValue>();
- for (String productId: items) {
- List<GenericValue> features = null;
+ private static Map makeVariantSample(GenericDelegator delegator,
Map featureList, List items, String feature) {
+ Map tempSample = new HashMap();
+ Map sample = new LinkedHashMap();
+ Iterator itemIt = items.iterator();
+
+ while (itemIt.hasNext()) {
+ String productId = (String) itemIt.next();
+ List features = null;
try {
- Map<String, String> fields =
UtilMisc.toMap("productId", productId, "productFeatureTypeId", feature,
+ Map fields = UtilMisc.toMap("productId", productId,
"productFeatureTypeId", feature,
"productFeatureApplTypeId", "STANDARD_FEATURE");
- List<String> sort = UtilMisc.toList("sequenceNum",
"description");
+ List sort = UtilMisc.toList("sequenceNum",
"description");
// get the features and filter out expired dates
features =
delegator.findByAndCache("ProductFeatureAndAppl", fields, sort);
@@ -605,7 +628,11 @@
} catch (GenericEntityException e) {
throw new IllegalStateException("Problem reading
relation: " + e.getMessage());
}
- for (GenericValue featureAppl: features) {
+ Iterator featureIt = features.iterator();
+
+ while (featureIt.hasNext()) {
+ GenericValue featureAppl = (GenericValue)
featureIt.next();
+
try {
GenericValue product =
delegator.findByPrimaryKeyCache("Product",
UtilMisc.toMap("productId", productId));
@@ -618,8 +645,12 @@
}
// Sort the sample based on the feature list.
- List<String> features = featureList.get(feature);
- for (String f: features) {
+ List features = (LinkedList) featureList.get(feature);
+ Iterator fi = features.iterator();
+
+ while (fi.hasNext()) {
+ String f = (String) fi.next();
+
if (tempSample.containsKey(f))
sample.put(f, tempSample.get(f));
}
@@ -627,9 +658,9 @@
return sample;
}
- public static Map<String, Object> quickAddVariant(DispatchContext
dctx, Map<String, ? extends Object> context) {
+ public static Map quickAddVariant(DispatchContext dctx, Map
context) {
GenericDelegator delegator = dctx.getDelegator();
- Map<String, Object> result = FastMap.newInstance();
+ Map result = new HashMap();
Locale locale = (Locale) context.get("locale");
String errMsg=null;
String productId = (String) context.get("productId");
@@ -641,7 +672,7 @@
// read the product, duplicate it with the given id
GenericValue product =
delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId",
productId));
if (product == null) {
- Map<String, String> messageMap =
UtilMisc.toMap("productId", productId);
+ Map messageMap = UtilMisc.toMap("productId", productId);
errMsg =
UtilProperties.getMessage(resource,"productservices.product_not_found_with_ID",
messageMap, locale);
result.put(ModelService.RESPONSE_MESSAGE,
ModelService.RESPOND_ERROR);
result.put(ModelService.ERROR_MESSAGE, errMsg);
@@ -676,7 +707,7 @@
"productFeatureApplTypeId", "STANDARD_FEATURE"));
}
// add an association from productId to variantProductId
of the PRODUCT_VARIANT
- Map<String, Object> productAssocMap =
UtilMisc.toMap("productId", productId, "productIdTo", variantProductId,
+ Map productAssocMap = UtilMisc.toMap("productId",
productId, "productIdTo", variantProductId,
"productAssocTypeId",
"PRODUCT_VARIANT",
"fromDate",
UtilDateTime.nowTimestamp());
if (prodAssocSeqNum != null) {
@@ -706,7 +737,7 @@
} catch (GenericEntityException e) {
Debug.logError(e, "Entity error creating quick add variant
data", module);
- Map<String, String> messageMap =
UtilMisc.toMap("errMessage", e.toString());
+ Map messageMap = UtilMisc.toMap("errMessage", e.toString());
errMsg =
UtilProperties.getMessage(resource,"productservices.entity_error_quick_add_variant_data",
messageMap, locale);
result.put(ModelService.RESPONSE_MESSAGE,
ModelService.RESPOND_ERROR);
result.put(ModelService.ERROR_MESSAGE, errMsg);
@@ -720,7 +751,7 @@
* This will create a virtual product and return its ID, and
associate all of the variants with it.
* It will not put the selectable features on the virtual or
standard features on the variant.
*/
- public static Map<String, Object>
quickCreateVirtualWithVariants(DispatchContext dctx, Map<String, ?
extends Object> context) {
+ public static Map quickCreateVirtualWithVariants(DispatchContext
dctx, Map context) {
GenericDelegator delegator = dctx.getDelegator();
Timestamp nowTimestamp = UtilDateTime.nowTimestamp();
@@ -730,7 +761,7 @@
String productFeatureIdTwo = (String)
context.get("productFeatureIdTwo");
String productFeatureIdThree = (String)
context.get("productFeatureIdThree");
- Map<String, Object> successResult = ServiceUtil.returnSuccess();
+ Map successResult = ServiceUtil.returnSuccess();
try {
// Generate new virtual productId, prefix with "VP", put
in successResult
@@ -759,15 +790,17 @@
// separate variantProductIdsBag into a Set of
variantProductIds
//note: can be comma, tab, or white-space delimited
- Set<String> prelimVariantProductIds = FastSet.newInstance();
- List<String> splitIds =
Arrays.asList(variantProductIdsBag.split("[,\\p{Space}]"));
+ Set prelimVariantProductIds = new HashSet();
+ List splitIds =
Arrays.asList(variantProductIdsBag.split("[,\\p{Space}]"));
Debug.logInfo("Variants: bag=" + variantProductIdsBag,
module);
Debug.logInfo("Variants: split=" + splitIds, module);
prelimVariantProductIds.addAll(splitIds);
//note: should support both direct productIds and
GoodIdentification entries (what to do if more than one GoodID? Add all?
- Map<String, GenericValue> variantProductsById =
FastMap.newInstance();
- for (String variantProductId: prelimVariantProductIds) {
+ Map variantProductsById = new HashMap();
+ Iterator variantProductIdIter =
prelimVariantProductIds.iterator();
+ while (variantProductIdIter.hasNext()) {
+ String variantProductId = (String)
variantProductIdIter.next();
if (UtilValidate.isEmpty(variantProductId)) {
// not sure why this happens, but seems to from
time to time with the split method
continue;
@@ -778,7 +811,7 @@
variantProductsById.put(variantProductId,
variantProduct);
} else {
// is a GoodIdentification.idValue?
- List<GenericValue> goodIdentificationList =
delegator.findByAnd("GoodIdentification", UtilMisc.toMap("idValue",
variantProductId));
+ List goodIdentificationList =
delegator.findByAnd("GoodIdentification", UtilMisc.toMap("idValue",
variantProductId));
if (goodIdentificationList == null ||
goodIdentificationList.size() == 0) {
// whoops, nothing found... return error
return ServiceUtil.returnError("Error creating
a virtual with variants: the ID [" + variantProductId + "] is not a
valid Product.productId or a GoodIdentification.idValue");
@@ -789,26 +822,32 @@
Debug.logWarning("Warning creating a virtual
with variants: the ID [" + variantProductId + "] was not a productId
and resulted in [" + goodIdentificationList.size() + "]
GoodIdentification records: " + goodIdentificationList, module);
}
- for (GenericValue goodIdentification:
goodIdentificationList) {
+ Iterator goodIdentificationIter =
goodIdentificationList.iterator();
+ while (goodIdentificationIter.hasNext()) {
+ GenericValue goodIdentification =
(GenericValue) goodIdentificationIter.next();
GenericValue giProduct =
goodIdentification.getRelatedOne("Product");
if (giProduct != null) {
-
variantProductsById.put(giProduct.getString("productId"), giProduct);
+
variantProductsById.put(giProduct.get("productId"), giProduct);
}
}
}
}
// Attach productFeatureIdOne, Two, Three to the new
virtual and all variant products as a standard feature
- Set<String> featureProductIds = FastSet.newInstance();
+ Set featureProductIds = new HashSet();
featureProductIds.add(productId);
featureProductIds.addAll(variantProductsById.keySet());
- Set<String> productFeatureIds = FastSet.newInstance();
+ Set productFeatureIds = new HashSet();
productFeatureIds.add(productFeatureIdOne);
productFeatureIds.add(productFeatureIdTwo);
productFeatureIds.add(productFeatureIdThree);
- for (String featureProductId: featureProductIds) {
- for (String productFeatureId: productFeatureIds) {
+ Iterator featureProductIdIter =
featureProductIds.iterator();
+ while (featureProductIdIter.hasNext()) {
+ Iterator productFeatureIdIter =
productFeatureIds.iterator();
+ String featureProductId = (String)
featureProductIdIter.next();
+ while (productFeatureIdIter.hasNext()) {
+ String productFeatureId = (String)
productFeatureIdIter.next();
if (UtilValidate.isNotEmpty(productFeatureId)) {
GenericValue productFeatureAppl =
delegator.makeValue("ProductFeatureAppl",
UtilMisc.toMap("productId",
featureProductId, "productFeatureId", productFeatureId,
@@ -818,8 +857,10 @@
}
}
- for (GenericValue variantProduct:
variantProductsById.values()) {
+ Iterator variantProductIter =
variantProductsById.values().iterator();
+ while (variantProductIter.hasNext()) {
// for each variant product set: isVirtual=N,
isVariant=Y, introductionDate=now
+ GenericValue variantProduct = (GenericValue)
variantProductIter.next();
variantProduct.set("isVirtual", "N");
variantProduct.set("isVariant", "Y");
variantProduct.set("introductionDate", nowTimestamp);
@@ -839,7 +880,7 @@
return successResult;
}
- public static Map<String, Object>
updateProductIfAvailableFromShipment(DispatchContext dctx, Map<String,
? extends Object> context) {
+ public static Map
updateProductIfAvailableFromShipment(DispatchContext dctx, Map context) {
if
("Y".equals(UtilProperties.getPropertyValue("catalog.properties",
"reactivate.product.from.receipt", "N"))) {
LocalDispatcher dispatcher = dctx.getDispatcher();
GenericDelegator delegator = dctx.getDelegator();
@@ -867,7 +908,7 @@
if (product != null) {
Timestamp salesDiscontinuationDate =
product.getTimestamp("salesDiscontinuationDate");
if (salesDiscontinuationDate != null &&
salesDiscontinuationDate.before(UtilDateTime.nowTimestamp())) {
- Map<String, Object> invRes = null;
+ Map invRes = null;
try {
invRes =
dispatcher.runSync("getProductInventoryAvailable", UtilMisc.<String,
Object>toMap("productId", productId, "userLogin", userLogin));
} catch (GenericServiceException e) {
@@ -903,7 +944,7 @@
return ServiceUtil.returnSuccess();
}
- public static Map<String, Object>
addAdditionalViewForProduct(DispatchContext dctx, Map<String, ?
extends Object> context) {
+ public static Map addAdditionalViewForProduct(DispatchContext
dctx, Map context) {
LocalDispatcher dispatcher = dctx.getDispatcher();
GenericDelegator delegator = dctx.getDelegator();
GenericValue userLogin = (GenericValue) context.get("userLogin");
@@ -926,7 +967,7 @@
filenameToUse =
fileLocation.substring(fileLocation.lastIndexOf("/") + 1);
}
- List<GenericValue> fileExtension = FastList.newInstance();
+ List fileExtension = FastList.newInstance();
try {
fileExtension = delegator.findByAnd("FileExtension",
UtilMisc.toMap("mimeTypeId", (String)
context.get("_uploadedFile_contentType")));
} catch (GenericEntityException e) {
@@ -958,12 +999,12 @@
if (UtilValidate.isNotEmpty(imageUrl) && imageUrl.length()
> 0) {
String contentId = (String) context.get("contentId");
- Map<String, Object> dataResourceCtx =
FastMap.newInstance();
+ Map dataResourceCtx = FastMap.newInstance();
dataResourceCtx.put("objectInfo", imageUrl);
dataResourceCtx.put("dataResourceName", (String)
context.get("_uploadedFile_fileName"));
dataResourceCtx.put("userLogin", userLogin);
- Map<String, Object> productContentCtx =
FastMap.newInstance();
+ Map productContentCtx = FastMap.newInstance();
productContentCtx.put("productId", productId);
productContentCtx.put("productContentTypeId",
productContentTypeId);
productContentCtx.put("fromDate", (Timestamp)
context.get("fromDate"));
@@ -991,14 +1032,14 @@
if (dataResource != null) {
dataResourceCtx.put("dataResourceId",
dataResource.getString("dataResourceId"));
try {
-
dispatcher.runSync("updateDataResource", dataResourceCtx);
+ Map dataResourceResult =
dispatcher.runSync("updateDataResource", dataResourceCtx);
} catch (GenericServiceException e) {
Debug.logError(e, module);
ServiceUtil.returnError(e.getMessage());
}
} else {
dataResourceCtx.put("dataResourceTypeId",
"URL_RESOURCE");
- Map<String, Object> dataResourceResult =
FastMap.newInstance();
+ Map dataResourceResult =
FastMap.newInstance();
try {
dataResourceResult =
dispatcher.runSync("createDataResource", dataResourceCtx);
} catch (GenericServiceException e) {
@@ -1006,12 +1047,12 @@
ServiceUtil.returnError(e.getMessage());
}
- Map<String, Object> contentCtx =
FastMap.newInstance();
+ Map contentCtx = FastMap.newInstance();
contentCtx.put("contentId", contentId);
contentCtx.put("dataResourceId",
dataResourceResult.get("dataResourceId"));
contentCtx.put("userLogin", userLogin);
try {
- dispatcher.runSync("updateContent",
contentCtx);
+ Map contentResult =
dispatcher.runSync("updateContent", contentCtx);
} catch (GenericServiceException e) {
Debug.logError(e, module);
ServiceUtil.returnError(e.getMessage());
@@ -1020,7 +1061,7 @@
productContentCtx.put("contentId", contentId);
try {
- Map<String, Object> productContentResult
= dispatcher.runSync("updateProductContent", productContentCtx);
+ Map productContentResult =
dispatcher.runSync("updateProductContent", productContentCtx);
} catch (GenericServiceException e) {
Debug.logError(e, module);
ServiceUtil.returnError(e.getMessage());
@@ -1028,7 +1069,7 @@
}
} else {
dataResourceCtx.put("dataResourceTypeId",
"URL_RESOURCE");
- Map<String, Object> dataResourceResult =
FastMap.newInstance();
+ Map dataResourceResult = FastMap.newInstance();
try {
dataResourceResult =
dispatcher.runSync("createDataResource", dataResourceCtx);
} catch (GenericServiceException e) {
@@ -1036,11 +1077,11 @@
ServiceUtil.returnError(e.getMessage());
}
- Map<String, Object> contentCtx =
FastMap.newInstance();
+ Map contentCtx = FastMap.newInstance();
contentCtx.put("contentTypeId", "DOCUMENT");
contentCtx.put("dataResourceId",
dataResourceResult.get("dataResourceId"));
contentCtx.put("userLogin", userLogin);
- Map<String, Object> contentResult =
FastMap.newInstance();
+ Map contentResult = FastMap.newInstance();
try {
contentResult =
dispatcher.runSync("createContent", contentCtx);
} catch (GenericServiceException e) {
@@ -1050,7 +1091,7 @@
productContentCtx.put("contentId",
contentResult.get("contentId"));
try {
- Map<String, Object> productContentResult =
dispatcher.runSync("createProductContent", productContentCtx);
+ Map productContentResult =
dispatcher.runSync("createProductContent", productContentCtx);
} catch (GenericServiceException e) {
Debug.logError(e, module);
ServiceUtil.returnError(e.getMessage());
@@ -1088,7 +1129,7 @@
}
if (UtilValidate.isNotEmpty(productsFound)) {
- List<GenericValue> productsList = FastList.newInstance();
+ LinkedList<GenericValue> productsList = new
LinkedList<GenericValue>();
// gets the first productId of the List
product = EntityUtil.getFirst(productsFound);
// remove this productId