Added checkItemExists to ShoppingCart.addOrIncreaseItem(... , boolean
checkItemsExists)
I wanted to have the group review my patch before I created a JIRA. I am
new to patching so I see in my patch that it is changing tabs to spaces
and adding the new code and applies to multiple files all in one patch,
previously I have sent patches that were file specific.
I am using eclipse to generate patches, but I would have liked to
generate two. One for the tab to spaces and another to show what I
added. Any advice would be appropriated.
If the patch is good as is I will create a JIRA and attach.
David E Jones wrote:
>
> My favorite current proposal is to super-simplify that method and then
> on the ShoppingCartItem object that it returns just call additional
> methods to add additional data. That way now, and in the future, we
> only have to add setters to ShoppingCartItem to support new data there.
>
> -David
>
>
> On Dec 22, 2008, at 3:51 PM, Stephen Rufle wrote:
>
>> I would like to add a parameter to ShoppingCart.addOrIncreaseItem(... ,
>> boolean checkItemsExists)
>>
>> I see that the method signature is already pretty long. I would like to
>> know if instead would it be a better idea to pass along a Map object
>> around instead?
>>
>> If there is already an existing effort to reduce the number of
>> parameters I would like to see how you are dealing with it.
>>
>>
>
>
>
--
Stephen P Rufle
[email protected]
H1:480-626-8022
H2:480-802-7173
Yahoo IM: stephen_rufle
AOL IM: stephen1rufle
### Eclipse Workspace Patch 1.0
#P ofbiz
Index: applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
===================================================================
--- applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
(revision 729034)
+++ applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
(working copy)
@@ -453,14 +453,14 @@
return
addOrIncreaseItem(productId,selectedAmountDbl,quantity,reservStart,reservLengthDbl,reservPersonsDbl,
null,null,shipBeforeDate,shipAfterDate,features,attributes,prodCatalogId,
-
configWrapper,itemType,itemGroupNumber,parentProductId,dispatcher);
+
configWrapper,itemType,itemGroupNumber,parentProductId,dispatcher, true);
}
/** add rental (with accommodation) item to cart */
public int addOrIncreaseItem(String productId, Double selectedAmountDbl,
double quantity, Timestamp reservStart, Double reservLengthDbl, Double
reservPersonsDbl,
String accommodationMapId, String accommodationSpotId,
Timestamp shipBeforeDate, Timestamp shipAfterDate, Map features,
Map attributes, String prodCatalogId,
- ProductConfigWrapper configWrapper, String itemType, String
itemGroupNumber, String parentProductId, LocalDispatcher dispatcher) throws
CartItemModifyException, ItemNotFoundException {
+ ProductConfigWrapper configWrapper, String itemType, String
itemGroupNumber, String parentProductId, LocalDispatcher dispatcher, boolean
checkItemsExists) throws CartItemModifyException, ItemNotFoundException {
if (isReadOnlyCart()) {
throw new CartItemModifyException("Cart items cannot be changed");
}
Index:
applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartEvents.java
===================================================================
--- applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartEvents.java
(revision 729034)
+++ applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartEvents.java
(working copy)
@@ -156,12 +156,12 @@
if (paramMap.containsKey("ADD_PRODUCT_ID")) {
productId = (String) paramMap.remove("ADD_PRODUCT_ID");
} else if (paramMap.containsKey("add_product_id")) {
- Object object = paramMap.remove("add_product_id");
- try{
- productId = (String) object;
- }catch(ClassCastException e){
- productId = (String)((List)object).get(0);
- }
+ Object object = paramMap.remove("add_product_id");
+ try{
+ productId = (String) object;
+ }catch(ClassCastException e){
+ productId = (String)((List)object).get(0);
+ }
}
if (paramMap.containsKey("PRODUCT_ID")) {
parentProductId = (String) paramMap.remove("PRODUCT_ID");
@@ -241,23 +241,23 @@
//Check for virtual products
if (ProductWorker.isVirtual(delegator, productId)) {
- if
("VV_FEATURETREE".equals(ProductWorker.getProductvirtualVariantMethod(delegator,
productId))) {
- // get the selected features.
- List <String> selectedFeatures = new
LinkedList<String>();
- java.util.Enumeration paramNames =
request.getParameterNames();
- while(paramNames.hasMoreElements()) {
- String paramName =
(String)paramNames.nextElement();
- if (paramName.startsWith("FT")) {
-
selectedFeatures.add(request.getParameterValues(paramName)[0]);
- }
- }
-
- // check if features are selected
- if (UtilValidate.isEmpty(selectedFeatures)) {
- request.setAttribute("product_id",
productId);
-
request.setAttribute("_EVENT_MESSAGE_",UtilProperties.getMessage(resource,"cart.addToCart.chooseVariationBeforeAddingToCart",locale));
- return "product";
- }
+ if
("VV_FEATURETREE".equals(ProductWorker.getProductvirtualVariantMethod(delegator,
productId))) {
+ // get the selected features.
+ List <String> selectedFeatures = new LinkedList<String>();
+ java.util.Enumeration paramNames = request.getParameterNames();
+ while(paramNames.hasMoreElements()) {
+ String paramName = (String)paramNames.nextElement();
+ if (paramName.startsWith("FT")) {
+
selectedFeatures.add(request.getParameterValues(paramName)[0]);
+ }
+ }
+
+ // check if features are selected
+ if (UtilValidate.isEmpty(selectedFeatures)) {
+ request.setAttribute("product_id", productId);
+
request.setAttribute("_EVENT_MESSAGE_",UtilProperties.getMessage(resource,"cart.addToCart.chooseVariationBeforeAddingToCart",locale));
+ return "product";
+ }
String variantProductId =
ProductWorker.getVariantFromFeatureTree(productId, selectedFeatures, delegator);
if (UtilValidate.isNotEmpty(variantProductId)) {
@@ -268,12 +268,12 @@
return "product";
}
- } else {
- request.setAttribute("product_id", productId);
-
request.setAttribute("_EVENT_MESSAGE_",UtilProperties.getMessage(resource,"cart.addToCart.chooseVariationBeforeAddingToCart",locale));
- return "product";
- }
- }
+ } else {
+ request.setAttribute("product_id", productId);
+
request.setAttribute("_EVENT_MESSAGE_",UtilProperties.getMessage(resource,"cart.addToCart.chooseVariationBeforeAddingToCart",locale));
+ return "product";
+ }
+ }
// get the override price
if (paramMap.containsKey("PRICE")) {
@@ -323,7 +323,7 @@
}
if (reservStart != null && reservEnd != null) {
- reservLength = new
Double(UtilDateTime.getInterval(reservStart,reservEnd)/86400000);
+ reservLength = new
Double(UtilDateTime.getInterval(reservStart,reservEnd)/86400000);
}
if (reservStart != null && paramMap.containsKey("reservLength")) {
@@ -362,8 +362,8 @@
//check accommodation for reservations
if((paramMap.containsKey("accommodationMapId")) &&
(paramMap.containsKey("accommodationSpotId"))){
- accommodationMapId = (String)
paramMap.remove("accommodationMapId");
- accommodationSpotId = (String)
paramMap.remove("accommodationSpotId");
+ accommodationMapId = (String)
paramMap.remove("accommodationMapId");
+ accommodationSpotId = (String)
paramMap.remove("accommodationSpotId");
}
}
@@ -541,7 +541,7 @@
result = cartHelper.addToCart(catalogId, shoppingListId,
shoppingListItemSeqId, productId, productCategoryId,
itemType, itemDescription, price, amount, quantity,
reservStart, reservLength, reservPersons,
accommodationMapId, accommodationSpotId,
- shipBeforeDate, shipAfterDate, configWrapper, itemGroupNumber,
paramMap, parentProductId);
+ shipBeforeDate, shipAfterDate, configWrapper, itemGroupNumber,
paramMap, parentProductId , true);
controlDirective = processResult(result, request);
// Determine where to send the browser
@@ -549,9 +549,9 @@
return "error";
} else {
if (cart.viewCartOnAdd()) {
- return "viewcart";
+ return "viewcart";
} else {
- return "success";
+ return "success";
}
}
}
@@ -940,11 +940,11 @@
Locale locale = UtilHttp.getLocale(request);
if (UtilValidate.isEmpty(alternateGwpProductId)) {
- request.setAttribute("_ERROR_MESSAGE_",
UtilProperties.getMessage(resource_error,"OrderCouldNotSelectAlternateGiftNoAlternateGwpProductIdPassed",
locale));
+ request.setAttribute("_ERROR_MESSAGE_",
UtilProperties.getMessage(resource_error,"OrderCouldNotSelectAlternateGiftNoAlternateGwpProductIdPassed",
locale));
return "error";
}
if (UtilValidate.isEmpty(alternateGwpLineStr)) {
- request.setAttribute("_ERROR_MESSAGE_",
UtilProperties.getMessage(resource_error,"OrderCouldNotSelectAlternateGiftNoAlternateGwpLinePassed",
locale));
+ request.setAttribute("_ERROR_MESSAGE_",
UtilProperties.getMessage(resource_error,"OrderCouldNotSelectAlternateGiftNoAlternateGwpLinePassed",
locale));
return "error";
}
@@ -952,13 +952,13 @@
try {
alternateGwpLine = Integer.parseInt(alternateGwpLineStr);
} catch (Exception e) {
- request.setAttribute("_ERROR_MESSAGE_",
UtilProperties.getMessage(resource_error,"OrderCouldNotSelectAlternateGiftAlternateGwpLineIsNotAValidNumber",
locale));
+ request.setAttribute("_ERROR_MESSAGE_",
UtilProperties.getMessage(resource_error,"OrderCouldNotSelectAlternateGiftAlternateGwpLineIsNotAValidNumber",
locale));
return "error";
}
ShoppingCartItem cartLine = cart.findCartItem(alternateGwpLine);
if (cartLine == null) {
- request.setAttribute("_ERROR_MESSAGE_", "Could not select
alternate gift, no cart line item found for #" + alternateGwpLine + ".");
+ request.setAttribute("_ERROR_MESSAGE_", "Could not select
alternate gift, no cart line item found for #" + alternateGwpLine + ".");
return "error";
}
@@ -994,7 +994,7 @@
int i;
if (UtilValidate.isEmpty(partyId) || roleTypeId.length < 1) {
- request.setAttribute("_ERROR_MESSAGE_",
UtilProperties.getMessage(resource_error,"OrderPartyIdAndOrRoleTypeIdNotDefined",
locale));
+ request.setAttribute("_ERROR_MESSAGE_",
UtilProperties.getMessage(resource_error,"OrderPartyIdAndOrRoleTypeIdNotDefined",
locale));
return "error";
}
@@ -1025,7 +1025,7 @@
int i;
if (UtilValidate.isEmpty(partyId) || roleTypeId.length < 1) {
- request.setAttribute("_ERROR_MESSAGE_",
UtilProperties.getMessage(resource_error,"OrderPartyIdAndOrRoleTypeIdNotDefined",
locale));
+ request.setAttribute("_ERROR_MESSAGE_",
UtilProperties.getMessage(resource_error,"OrderPartyIdAndOrRoleTypeIdNotDefined",
locale));
return "error";
}
Index:
applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartHelper.java
===================================================================
--- applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartHelper.java
(revision 729034)
+++ applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartHelper.java
(working copy)
@@ -107,7 +107,7 @@
return
addToCart(catalogId,shoppingListId,shoppingListItemSeqId,productId,
productCategoryId,itemType,itemDescription,price,amount,quantity,
reservStart,reservLength,reservPersons,null,null,shipBeforeDate,shipAfterDate,
- configWrapper,itemGroupNumber,context,parentProductId);
+ configWrapper,itemGroupNumber,context,parentProductId, true);
}
/** Event to add an item to the shopping cart with accommodation. */
@@ -116,7 +116,7 @@
Double price, Double amount, double quantity,
java.sql.Timestamp reservStart, Double reservLength, Double
reservPersons, String accommodationMapId,String accommodationSpotId,
java.sql.Timestamp shipBeforeDate, java.sql.Timestamp
shipAfterDate,
- ProductConfigWrapper configWrapper, String itemGroupNumber, Map
context, String parentProductId) {
+ ProductConfigWrapper configWrapper, String itemGroupNumber, Map
context, String parentProductId, boolean checkItemsExists) {
Map result = null;
Map attributes = null;
String pProductId = null;
@@ -234,7 +234,7 @@
itemId = cart.addOrIncreaseItem(productId, amount,
quantity, reservStart, reservLength,
reservPersons,
accommodationMapId, accommodationSpotId, shipBeforeDate, shipAfterDate,
additionalFeaturesMap, attributes,
- catalogId, configWrapper,
itemType, itemGroupNumber, pProductId, dispatcher);
+ catalogId, configWrapper,
itemType, itemGroupNumber, pProductId, dispatcher, checkItemsExists);
} else {
itemId = cart.addNonProductItem(itemType, itemDescription,
productCategoryId, price, quantity, attributes, catalogId, itemGroupNumber,
dispatcher);
@@ -678,16 +678,16 @@
} else if
(parameterName.toUpperCase().startsWith("DESCRIPTION")) {
itemDescription = quantString; // the quantString is
actually the description if the field name starts with DESCRIPTION
} else if (parameterName.startsWith("reservStart")) {
- if (quantString.length() ==0){
- // should have format: yyyy-mm-dd
hh:mm:ss.fffffffff
- quantString += " 00:00:00.000000000";
- }
- if (item != null) {
- Timestamp reservStart =
Timestamp.valueOf(quantString);
- item.setReservStart(reservStart);
- }
+ if (quantString.length() ==0){
+ // should have format: yyyy-mm-dd
hh:mm:ss.fffffffff
+ quantString += " 00:00:00.000000000";
+ }
+ if (item != null) {
+ Timestamp reservStart =
Timestamp.valueOf(quantString);
+ item.setReservStart(reservStart);
+ }
} else if (parameterName.startsWith("reservLength")) {
- if (item != null) {
+ if (item != null) {
double reservLength =
nf.parse(quantString).doubleValue();
item.setReservLength(reservLength);
}
Index:
applications/order/src/org/ofbiz/order/shoppinglist/ShoppingListEvents.java
===================================================================
--- applications/order/src/org/ofbiz/order/shoppinglist/ShoppingListEvents.java
(revision 729034)
+++ applications/order/src/org/ofbiz/order/shoppinglist/ShoppingListEvents.java
(working copy)
@@ -138,7 +138,7 @@
try {
cartIdInt = new Integer(items[i]);
} catch (Exception e) {
- Debug.logWarning(e,
UtilProperties.getMessage(resource_error,"OrderIllegalCharacterInSelectedItemField",
cart.getLocale()), module);
+ Debug.logWarning(e,
UtilProperties.getMessage(resource_error,"OrderIllegalCharacterInSelectedItemField",
cart.getLocale()), module);
}
if (cartIdInt != null) {
ShoppingCartItem item =
cart.findCartItem(cartIdInt.intValue());
@@ -292,18 +292,18 @@
if (reservStart == null) {
cart.addOrIncreaseItem(productId, null,
quantity.doubleValue(), null, null, null, null, null, null, attributes,
prodCatalogId, configWrapper, null, null, null, dispatcher);
}else{
- cart.addOrIncreaseItem(productId, null,
quantity.doubleValue(), reservStart, reservLength, reservPersons, null, null,
null, null, null, attributes, prodCatalogId, configWrapper, null, null, null,
dispatcher);
+ cart.addOrIncreaseItem(productId, null,
quantity.doubleValue(), reservStart, reservLength, reservPersons, null, null,
null, null, null, attributes, prodCatalogId, configWrapper, null, null, null,
dispatcher, true);
}
Map messageMap = UtilMisc.toMap("productId", productId);
errMsg =
UtilProperties.getMessage(resource,"shoppinglistevents.added_product_to_cart",
messageMap, cart.getLocale());
eventMessage.append(errMsg + "\n");
} catch (CartItemModifyException e) {
- Debug.logWarning(e,
UtilProperties.getMessage(resource_error,"OrderProblemsAddingItemFromListToCart",
cart.getLocale()));
+ Debug.logWarning(e,
UtilProperties.getMessage(resource_error,"OrderProblemsAddingItemFromListToCart",
cart.getLocale()));
Map messageMap = UtilMisc.toMap("productId", productId);
errMsg =
UtilProperties.getMessage(resource,"shoppinglistevents.problem_adding_product_to_cart",
messageMap, cart.getLocale());
eventMessage.append(errMsg + "\n");
} catch (ItemNotFoundException e) {
- Debug.logWarning(e,
UtilProperties.getMessage(resource_error,"OrderProductNotFound",
cart.getLocale()));
+ Debug.logWarning(e,
UtilProperties.getMessage(resource_error,"OrderProductNotFound",
cart.getLocale()));
Map messageMap = UtilMisc.toMap("productId", productId);
errMsg =
UtilProperties.getMessage(resource,"shoppinglistevents.problem_adding_product_to_cart",
messageMap, cart.getLocale());
eventMessage.append(errMsg + "\n");
@@ -343,7 +343,7 @@
try {
result = dispatcher.runSync("updateShoppingListItem",
serviceInMap);
} catch (GenericServiceException e) {
- String errMsg =
UtilProperties.getMessage(ShoppingListEvents.err_resource,"shoppingListEvents.error_calling_update",
locale) + ": " + e.toString();
+ String errMsg =
UtilProperties.getMessage(ShoppingListEvents.err_resource,"shoppingListEvents.error_calling_update",
locale) + ": " + e.toString();
request.setAttribute("_ERROR_MESSAGE_", errMsg);
String errorMsg = "Error calling the updateShoppingListItem in
handleShoppingListItemVariant: " + e.toString();
Debug.logError(e, errorMsg, module);
Index:
applications/order/src/org/ofbiz/order/shoppinglist/ShoppingListServices.java
===================================================================
---
applications/order/src/org/ofbiz/order/shoppinglist/ShoppingListServices.java
(revision 729034)
+++
applications/order/src/org/ofbiz/order/shoppinglist/ShoppingListServices.java
(working copy)
@@ -416,7 +416,7 @@
* @return
*/
public static ShoppingCart makeShoppingListCart(LocalDispatcher
dispatcher, GenericValue shoppingList, Locale locale) {
- return makeShoppingListCart(null, dispatcher, shoppingList, locale); }
+ return makeShoppingListCart(null, dispatcher, shoppingList, locale); }
/**
* Add a shoppinglist to an existing shoppingcart
@@ -451,20 +451,20 @@
}
if (UtilValidate.isNotEmpty(items)) {
- if (listCart == null) {
- listCart = new ShoppingCart(delegator, productStoreId,
locale, currencyUom);
-
listCart.setOrderPartyId(shoppingList.getString("partyId"));
-
listCart.setAutoOrderShoppingListId(shoppingList.getString("shoppingListId"));
- } else {
- if
(!listCart.getPartyId().equals(shoppingList.getString("partyId"))){
- Debug.logError("CANNOT add shoppingList: " +
shoppingList.getString("shoppingListId")
- + " of partyId: " +
shoppingList.getString("partyId")
- + " to a shoppingcart with a
different orderPartyId: "
- + listCart.getPartyId(),
module);
- return listCart;
- }
- }
-
+ if (listCart == null) {
+ listCart = new ShoppingCart(delegator, productStoreId,
locale, currencyUom);
+
listCart.setOrderPartyId(shoppingList.getString("partyId"));
+
listCart.setAutoOrderShoppingListId(shoppingList.getString("shoppingListId"));
+ } else {
+ if
(!listCart.getPartyId().equals(shoppingList.getString("partyId"))){
+ Debug.logError("CANNOT add shoppingList: " +
shoppingList.getString("shoppingListId")
+ + " of partyId: " +
shoppingList.getString("partyId")
+ + " to a shoppingcart with a different
orderPartyId: "
+ + listCart.getPartyId(), module);
+ return listCart;
+ }
+ }
+
Iterator i = items.iterator();
ProductConfigWrapper configWrapper = null;
@@ -502,7 +502,7 @@
Map attributes = UtilMisc.toMap("shoppingListId",
listId, "shoppingListItemSeqId", itemId);
try {
- listCart.addOrIncreaseItem(productId, null,
quantity.doubleValue(), reservStart, reservLength, reservPersons, null, null,
null, null, null, attributes, null, configWrapper, null, null, null,
dispatcher);
+ listCart.addOrIncreaseItem(productId, null,
quantity.doubleValue(), reservStart, reservLength, reservPersons, null, null,
null, null, null, attributes, null, configWrapper, null, null, null,
dispatcher, true);
} catch (CartItemModifyException e) {
Debug.logError(e, "Unable to add product to List
Cart - " + productId, module);
} catch (ItemNotFoundException e) {