You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by as...@apache.org on 2009/09/22 14:11:50 UTC
svn commit: r817628 -
/ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java
Author: ashish
Date: Tue Sep 22 12:11:50 2009
New Revision: 817628
URL: http://svn.apache.org/viewvc?rev=817628&view=rev
Log:
Here comes another update on eBay for the newly created screen before few days.
That screen was showing the deleted Transactions & Orders that were associated with Seller.
So we have implemented new call "GetMyeBaySelling" (and for sure without this call you can't exclude the deleted orders / transactions). It was more and more of reading and exploring things in eBay area and finally we got good results - so feeling little better now :-).
Thanks Jacopo for your comment to include this feature in OFBiz trunk.
Modified:
ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java
Modified: ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java?rev=817628&r1=817627&r2=817628&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java (original)
+++ ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java Tue Sep 22 12:11:50 2009
@@ -62,7 +62,8 @@
private static final String module = EbayOrderServices.class.getName();
private static boolean isGetSellerTransactionsCall = false;
private static boolean isGetOrdersCall = false;
- private static List orderList = new ArrayList();
+ private static boolean isGetMyeBaySellingCall = false;
+ private static List orderList = FastList.newInstance();
private static List getSellerTransactionsContainingOrderList = new ArrayList();
private static List<String> orderImportSuccessMessageList = FastList.newInstance();
private static List<String> orderImportFailureMessageList = FastList.newInstance();
@@ -97,8 +98,18 @@
result = checkOrders(delegator, dispatcher, locale, context, getOrdersSuccessMsg);
}
}
+
+ StringBuffer getMyeBaySellingXml = new StringBuffer();
+ if (!ServiceUtil.isFailure(buildGetMyeBaySellingRequest(context, getMyeBaySellingXml, eBayConfigResult.get("token").toString()))) {
+ result = EbayHelper.postItem(eBayConfigResult.get("xmlGatewayUri").toString(), getMyeBaySellingXml, eBayConfigResult.get("devID").toString(), eBayConfigResult.get("appID").toString(), eBayConfigResult.get("certID").toString(), "GetMyeBaySelling", eBayConfigResult.get("compatibilityLevel").toString(), eBayConfigResult.get("siteID").toString());
+ String getMyeBaySellingSuccessMsg = (String) result.get(ModelService.SUCCESS_MESSAGE);
+ if (getMyeBaySellingSuccessMsg != null) {
+ isGetMyeBaySellingCall = true;
+ result = checkOrders(delegator, dispatcher, locale, context, getMyeBaySellingSuccessMsg);
+ }
+ }
} catch (Exception e) {
- String errMsg = UtilProperties.getMessage(resource, "buildEbayConfig.exceptionInGetOrdersFromEbay" + e.getMessage(), locale);
+ String errMsg = UtilProperties.getMessage(resource, "buildEbayConfig.exceptionInGetOrdersFromEbay========" + e.getMessage(), locale);
return ServiceUtil.returnError(errMsg);
}
return result;
@@ -224,11 +235,31 @@
return ServiceUtil.returnSuccess();
}
+ private static Map<String, Object> buildGetMyeBaySellingRequest(Map<String, Object> context, StringBuffer getMyeBaySellingXml, String token) {
+ Locale locale = (Locale) context.get("locale");
+ try {
+ Document transDoc = UtilXml.makeEmptyXmlDocument("GetMyeBaySellingRequest");
+ Element transElem = transDoc.getDocumentElement();
+ transElem.setAttribute("xmlns", "urn:ebay:apis:eBLBaseComponents");
+
+ EbayHelper.appendRequesterCredentials(transElem, transDoc, token);
+
+ Element deletedFromSoldListElem = UtilXml.addChildElement(transElem, "DeletedFromSoldList", transDoc);
+ UtilXml.addChildElementValue(deletedFromSoldListElem, "Sort", "ItemID", transDoc);
+ //Debug.logInfo("The value of generated string is ======= " + UtilXml.writeXmlDocument(transDoc), module);
+ getMyeBaySellingXml.append(UtilXml.writeXmlDocument(transDoc));
+ } catch (Exception e) {
+ Debug.logError("Exception during building MyeBaySelling request", module);
+ return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "ordersImportFromEbay.exceptionDuringBuildingMyeBaySellingRequest", locale));
+ }
+ return ServiceUtil.returnSuccess();
+ }
+
private static Map<String, Object> checkOrders(GenericDelegator delegator, LocalDispatcher dispatcher, Locale locale, Map<String, Object> context, String responseMsg) {
StringBuffer errorMessage = new StringBuffer();
Map<String, Object> result = FastMap.newInstance();
GenericValue userLogin = (GenericValue) context.get("userLogin");
- if (isGetSellerTransactionsCall && !isGetOrdersCall) {
+ if (isGetSellerTransactionsCall) {
List getSellerTransactionList = readGetSellerTransactionResponse(responseMsg, locale, (String) context.get("productStoreId"), delegator, dispatcher, errorMessage, userLogin);
if (UtilValidate.isNotEmpty(getSellerTransactionList)) {
orderList.addAll(getSellerTransactionList);
@@ -237,8 +268,25 @@
return ServiceUtil.returnSuccess();
} else if (isGetOrdersCall) {
List getOrdersList = readGetOrdersResponse(responseMsg, locale, (String) context.get("productStoreId"), delegator, dispatcher, errorMessage, userLogin);
- orderList.addAll(getOrdersList);
+ if (UtilValidate.isNotEmpty(getOrdersList)) {
+ orderList.addAll(getOrdersList);
+ }
isGetOrdersCall = false;
+ return ServiceUtil.returnSuccess();
+ } else if (isGetMyeBaySellingCall) {
+ // for now fetching only deleted transaction & orders value from the sold list.
+ List eBayDeletedOrdersAndTransactionList = readGetMyeBaySellingResponse(responseMsg, locale, (String) context.get("productStoreId"), delegator, dispatcher, errorMessage, userLogin);
+ if (UtilValidate.isNotEmpty(eBayDeletedOrdersAndTransactionList)) {
+ Debug.logInfo("The value of getMyeBaySellingList" + eBayDeletedOrdersAndTransactionList, module);
+ Iterator orderListIter = orderList.iterator();
+ while (orderListIter.hasNext()) {
+ Map orderCtx = (Map) orderListIter.next();
+ if (eBayDeletedOrdersAndTransactionList.contains(orderCtx.get("externalId"))) {
+ // Now finally exclude orders & transaction that has been deleted from sold list.
+ orderList.remove(orderCtx);
+ }
+ }
+ }
}
if (orderList == null || orderList.size() == 0) {
Debug.logError("No orders found", module);
@@ -579,7 +627,6 @@
return fetchedOrders;
}
-
private static List readGetSellerTransactionResponse(String responseMsg, Locale locale, String productStoreId, GenericDelegator delegator, LocalDispatcher dispatcher, StringBuffer errorMessage, GenericValue userLogin) {
List fetchedOrders = new ArrayList();
try {
@@ -857,6 +904,72 @@
return fetchedOrders;
}
+ private static List readGetMyeBaySellingResponse(String responseMsg, Locale locale, String productStoreId, GenericDelegator delegator, LocalDispatcher dispatcher, StringBuffer errorMessage, GenericValue userLogin) {
+ List fetchDeletedOrdersAndTransactions = new ArrayList();
+ try {
+ Document docResponse = UtilXml.readXmlDocument(responseMsg, true);
+ //Debug.logInfo("The generated string is ======= " + UtilXml.writeXmlDocument(docResponse), module);
+ Element elemResponse = docResponse.getDocumentElement();
+ String ack = UtilXml.childElementValue(elemResponse, "Ack", "Failure");
+ List paginationList = UtilXml.childElementList(elemResponse, "PaginationResult");
+
+ if (ack != null && "Success".equals(ack)) {
+ // retrieve transaction array
+ List deletedFromSoldList = UtilXml.childElementList(elemResponse, "DeletedFromSoldList");
+ Iterator deletedFromSoldElemIter = deletedFromSoldList.iterator();
+ while (deletedFromSoldElemIter.hasNext()) {
+ Element deletedFromSoldElement = (Element) deletedFromSoldElemIter.next();
+ // retrieve transaction
+ List orderTransactionArrayList = UtilXml.childElementList(deletedFromSoldElement, "OrderTransactionArray");
+ Iterator orderTransactionArrayElemIter = orderTransactionArrayList.iterator();
+ while (orderTransactionArrayElemIter.hasNext()) {
+ Element orderTransactionArrayElement = (Element) orderTransactionArrayElemIter.next();
+ List orderTransactionList = UtilXml.childElementList(orderTransactionArrayElement, "OrderTransaction");
+ Iterator orderTransactionElemIter = orderTransactionList.iterator();
+ while (orderTransactionElemIter.hasNext()) {
+ Element orderTransactionElement = (Element) orderTransactionElemIter.next();
+
+ List sellerOrderList = UtilXml.childElementList(orderTransactionElement, "Order");
+ Iterator sellerOrderElemIter = sellerOrderList.iterator();
+ while (sellerOrderElemIter.hasNext()) {
+ Element sellerOrderElement = (Element) sellerOrderElemIter.next();
+ String orderId = UtilXml.childElementValue(sellerOrderElement, "OrderID");
+ if (UtilValidate.isNotEmpty(orderId)) {
+ fetchDeletedOrdersAndTransactions.add(orderId);
+ }
+ }
+ List transactionList = UtilXml.childElementList(orderTransactionElement, "Transaction");
+ Iterator transactionElemIter = transactionList.iterator();
+ while (transactionElemIter.hasNext()) {
+ Element transactionElement = (Element) transactionElemIter.next();
+
+ List itemList = UtilXml.childElementList(transactionElement, "Item");
+ Iterator itemElemIter = itemList.iterator();
+ while (itemElemIter.hasNext()) {
+ Element itemElement = (Element) itemElemIter.next();
+ String itemId = UtilXml.childElementValue(itemElement, "ItemID");
+ if (UtilValidate.isNotEmpty(itemId)) {
+ fetchDeletedOrdersAndTransactions.add(itemId);
+ }
+ }
+ }
+ }
+ }
+ }
+ } else {
+ List errorList = UtilXml.childElementList(elemResponse, "Errors");
+ Iterator errorElemIter = errorList.iterator();
+ while (errorElemIter.hasNext()) {
+ Element errorElement = (Element) errorElemIter.next();
+ errorMessage.append(UtilXml.childElementValue(errorElement, "ShortMessage", ""));
+ }
+ }
+ } catch (Exception e) {
+ Debug.logError("Exception during read response from Ebay", module);
+ }
+ return fetchDeletedOrdersAndTransactions;
+ }
+
private static Map createShoppingCart(GenericDelegator delegator, LocalDispatcher dispatcher, Locale locale, Map context, boolean create) {
Map<String, Object> result = FastMap.newInstance();
try {