I'm trying to review this block of code to make sure logic is fine. The first version that I commented will create duplicated order 'my college developer' but I fixed it but "really not sure" I want to make sure my fix it exactly same as commented code
the old logic "this code include duplicated"
public void setOrderedProduct(String prodName, int eoq) {
String productCd = getProdCd(prodName);
// Here only one time one product
boolean prodPresent = false;
int indexOfProd = 0;
int sizeOfItems = items.size();
for (int i = 0; i < sizeOfItems; i++) {
PurchaseOrderDTO itemVal = items.get(i);
if (itemVal.getProdcd().equalsIgnoreCase(productCd)) {
prodPresent = true;
indexOfProd = i;
break;
}
}
itemData.setProdname(prodName);
itemData.setQty(eoq);
itemData.setProdcd(productCd);
double costPrice = ProductView.getProductCost(vendorno, productCd);
itemData.setPrice(costPrice);
double extPrice = ProductView.getProductMSRP(vendorno, productCd);
itemData.setExt(extPrice);
if (!prodPresent) {
if (eoq != 0) {
items.add(itemData);
// Now add the details to the database
ProductView.addPurchaseDetails(itemData, vendorno);
}
} else {
if (eoq > 0) {
items.set(indexOfProd, itemData);
ProductView.updatePurchaseDetails(itemData, vendorno);
} else {
items.remove(indexOfProd);
ProductView.removePurchaseDetails(itemData, vendorno);
}
}
if (items.size() > 0)
calculateTotal();
}
my fixed logic
public void setOrderedProduct(String prodName, int eoq) {
boolean dataPresent = false;
if (orderedProdNameList.contains((Object) prodName)) {
dataPresent = true;
}
if (dataPresent) {
int indexOfProdName = orderedProdNameList.indexOf((Object) prodName);
String productCd = getProdCd(prodName);
// Here only one time one product
PurchaseOrderDTO itemData = new PurchaseOrderDTO();
boolean prodPresent = false;
itemData.setProdname(prodName);
itemData.setQty(eoq);
itemData.setProdcd(productCd);
double costPrice = ProductView.getProductCost(vendorno, productCd);
itemData.setPrice(costPrice);
double extPrice = ProductView.getProductMSRP(vendorno, productCd);
itemData.setExt(extPrice);
// Now add the details to the database
ProductView.addPurchaseDetails(itemData, vendorno);
if (eoq > 0) {
items.set(indexOfProdName, itemData);
ProductView.updatePurchaseDetails(itemData, vendorno);
} else if (eoq == 0) {
for (int i = 0; i < items.size(); i++) {
if (items.get(i).getProdname().equalsIgnoreCase(prodName)) {
items.remove(i);
ProductView.removePurchaseDetails(itemData, vendorno);
}
}
}
} else {
orderedProdNameList.add(prodName);
String productCd = getProdCd(prodName);
// Here only one time one product
PurchaseOrderDTO itemData = new PurchaseOrderDTO();
boolean prodPresent = false;
itemData.setProdname(prodName);
itemData.setQty(eoq);
itemData.setProdcd(productCd);
double costPrice = ProductView.getProductCost(vendorno, productCd);
itemData.setPrice(costPrice);
double extPrice = ProductView.getProductMSRP(vendorno, productCd);
itemData.setExt(extPrice);
items.add(items.size(), itemData);
ProductView.addPurchaseDetails(itemData, vendorno);
}
if (items.size() > 0) {
calculateTotal();
}
}