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) {