svn commit: r905876 [4/7] - in /ofbiz/trunk: applications/commonext/documents/ specialpurpose/ specialpurpose/ebay/ specialpurpose/ebay/config/ specialpurpose/ebay/data/ specialpurpose/ebay/data/helpdata/ specialpurpose/ebay/entitydef/ specialpurpose/e...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r905876 [4/7] - in /ofbiz/trunk: applications/commonext/documents/ specialpurpose/ specialpurpose/ebay/ specialpurpose/ebay/config/ specialpurpose/ebay/data/ specialpurpose/ebay/data/helpdata/ specialpurpose/ebay/entitydef/ specialpurpose/e...

hansbak-2
Added: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayFeedback.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayFeedback.java?rev=905876&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayFeedback.java (added)
+++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayFeedback.java Wed Feb  3 03:16:07 2010
@@ -0,0 +1,367 @@
+package org.ofbiz.ebaystore;
+
+import org.ofbiz.base.util.UtilDateTime;
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.GenericValue;
+
+import java.util.*;
+
+import org.ofbiz.service.DispatchContext;
+import org.ofbiz.service.LocalDispatcher;
+import org.ofbiz.service.ServiceUtil;
+
+import com.ebay.sdk.ApiContext;
+import com.ebay.sdk.ApiException;
+import com.ebay.sdk.SdkException;
+import com.ebay.sdk.call.GetFeedbackCall;
+import com.ebay.sdk.call.GetItemsAwaitingFeedbackCall;
+import com.ebay.sdk.call.GetUserCall;
+import com.ebay.sdk.call.LeaveFeedbackCall;
+import com.ebay.soap.eBLBaseComponents.CommentTypeCodeType;
+import com.ebay.soap.eBLBaseComponents.DetailLevelCodeType;
+import com.ebay.soap.eBLBaseComponents.FeedbackDetailType;
+import com.ebay.soap.eBLBaseComponents.FeedbackRatingDetailCodeType;
+import com.ebay.soap.eBLBaseComponents.ItemRatingDetailArrayType;
+import com.ebay.soap.eBLBaseComponents.ItemRatingDetailsType;
+import com.ebay.soap.eBLBaseComponents.PaginatedTransactionArrayType;
+import com.ebay.soap.eBLBaseComponents.SiteCodeType;
+import com.ebay.soap.eBLBaseComponents.TransactionArrayType;
+import com.ebay.soap.eBLBaseComponents.TransactionType;
+
+import javolution.util.FastList;
+import javolution.util.FastMap;
+
+public class EbayFeedback {
+
+    public static final String resource = "EbayUiLabels";
+    private static final String module = EbayFeedback.class.getName();
+
+ public static Map<String, Object> loadFeedback(DispatchContext dctx, Map<String, ? extends Object> context){
+ Map<String, Object> result = FastMap.newInstance();
+ LocalDispatcher dispatcher = dctx.getDispatcher();
+ GenericValue userLogin = (GenericValue) context.get("userLogin");
+ Delegator delegator = dctx.getDelegator();
+ Locale locale = (Locale) context.get("locale");
+ String productStoreId = (String) context.get("productStoreId");
+
+ ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
+ try {
+ Map<String, Object> inMap = FastMap.newInstance();
+ inMap.put("productStoreId", productStoreId);
+ inMap.put("userLogin", userLogin);
+ Map<String, Object> resultUser = dispatcher.runSync("getEbayStoreUser", inMap);
+ String userID = (String)resultUser.get("userLoginId");
+ GetFeedbackCall feedbackCall = new GetFeedbackCall();
+ feedbackCall.setApiContext(apiContext);
+ SiteCodeType SiteCodeType = EbayStoreHelper.getSiteCodeType(productStoreId,locale, delegator);
+ feedbackCall.setSite(SiteCodeType.US);
+ feedbackCall.setUserID(userID);
+ DetailLevelCodeType[] detailLevelCodeType = {DetailLevelCodeType.RETURN_ALL};
+ feedbackCall.setDetailLevel(detailLevelCodeType);
+ FeedbackDetailType[] feedback = feedbackCall.getFeedback();
+ if(feedback != null){
+ String partyId = null;
+ GenericValue userLoginEx = delegator.findByPrimaryKey("UserLogin", UtilMisc.toMap("userLoginId", userID));
+ if(userLoginEx == null){
+ //Party
+ GenericValue party =  delegator.makeValue("Party");
+ partyId = delegator.getNextSeqId("Party");
+ party.put("partyId", partyId);
+ party.put("partyTypeId", "PERSON");
+ party.create();
+ //UserLogin
+ userLoginEx =  delegator.makeValue("UserLogin");
+ userLoginEx.put("userLoginId", userID);
+ userLoginEx.put("partyId", partyId);
+ userLoginEx.create();
+ }else{
+ partyId = userLoginEx.getString("partyId");
+ }
+ //PartyRole For eBay User
+ List partyRoles = delegator.findByAnd("PartyRole", UtilMisc.toMap("partyId", partyId, "roleTypeId", "OWNER"));
+ if(partyRoles.size() == 0){
+ GenericValue partyRole =  delegator.makeValue("PartyRole");
+ partyRole.put("partyId", partyId);
+ partyRole.put("roleTypeId", "OWNER");
+ partyRole.create();
+ }
+ int feedbackLength = feedback.length;
+ for(int i=0;i<feedbackLength;i++){
+ //convert to ofbiz
+ String contentId = feedback[i].getFeedbackID();
+ Date eBayDateTime = feedback[i].getCommentTime().getTime();
+ GenericValue contentCheck = delegator.findByPrimaryKey("Content", UtilMisc.toMap("contentId", contentId));
+ if(contentCheck != null){
+ continue;
+ }
+ String textData = feedback[i].getCommentText();
+ String commentingUserId= feedback[i].getCommentingUser();
+ String commentingPartyId = null;
+ List CommentingUserLogins = delegator.findByAnd("UserLogin", UtilMisc.toMap("userLoginId", commentingUserId));
+ if(CommentingUserLogins.size() == 0){
+ //Party
+ GenericValue party =  delegator.makeValue("Party");
+ commentingPartyId = delegator.getNextSeqId("Party");
+ party.put("partyId", commentingPartyId);
+ party.put("partyTypeId", "PERSON");
+ party.create();
+ //UserLogin
+ userLoginEx =  delegator.makeValue("UserLogin");
+ userLoginEx.put("userLoginId", commentingUserId);
+ userLoginEx.put("partyId", commentingPartyId);
+ userLoginEx.create();
+ }else{
+ userLoginEx = (GenericValue)CommentingUserLogins.get(0);
+ commentingPartyId = userLoginEx.getString("partyId");
+ }
+ //DataResource
+ GenericValue dataResource =  delegator.makeValue("DataResource");
+ String dataResourceId = delegator.getNextSeqId("DataResource");
+ dataResource.put("dataResourceId", dataResourceId);
+ dataResource.put("dataResourceTypeId", "ELECTRONIC_TEXT");
+ dataResource.put("mimeTypeId", "text/html");
+ dataResource.create();
+ //ElectronicText
+ GenericValue electronicText =  delegator.makeValue("ElectronicText");
+ electronicText.put("dataResourceId", dataResourceId);
+ electronicText.put("textData", textData);
+ electronicText.create();
+ //Content
+ GenericValue content =  delegator.makeValue("Content");
+ content.put("contentId", contentId);
+ content.put("contentTypeId", "DOCUMENT");
+ content.put("dataResourceId", dataResourceId);
+ content.put("createdDate", UtilDateTime.toTimestamp(eBayDateTime));
+ content.create();
+ //ContentPurpose
+ GenericValue contentPurpose =  delegator.makeValue("ContentPurpose");
+ contentPurpose.put("contentId", contentId);
+ contentPurpose.put("contentPurposeTypeId", "FEEDBACK");
+ contentPurpose.create();
+ //PartyRole For eBay Commentator
+ List commentingPartyRoles = delegator.findByAnd("PartyRole", UtilMisc.toMap("partyId", commentingPartyId, "roleTypeId", "COMMENTATOR"));
+ if(commentingPartyRoles.size() == 0){
+ GenericValue partyRole =  delegator.makeValue("PartyRole");
+ partyRole.put("partyId", commentingPartyId);
+ partyRole.put("roleTypeId", "COMMENTATOR");
+ partyRole.create();
+ }
+ //ContentRole for eBay User
+ List contentRoles = delegator.findByAnd("ContentRole", UtilMisc.toMap("partyId", partyId, "roleTypeId", "OWNER", "contentId", contentId));
+ if(contentRoles.size() == 0){
+ GenericValue contentRole =  delegator.makeValue("ContentRole");
+ contentRole.put("contentId", contentId);
+ contentRole.put("partyId", partyId);
+ contentRole.put("roleTypeId", "OWNER");
+ contentRole.put("fromDate", UtilDateTime.nowTimestamp());
+ contentRole.create();
+ }
+ //ContentRole for Commentator
+ List commentingContentRoles = delegator.findByAnd("ContentRole", UtilMisc.toMap("partyId", commentingPartyId, "roleTypeId", "COMMENTATOR", "contentId", contentId));
+ if(commentingContentRoles.size() == 0){
+ GenericValue contentRole =  delegator.makeValue("ContentRole");
+ contentRole.put("contentId", contentId);
+ contentRole.put("partyId", commentingPartyId);
+ contentRole.put("roleTypeId", "COMMENTATOR");
+ contentRole.put("fromDate", UtilDateTime.nowTimestamp());
+ contentRole.create();
+ }
+ }
+ }
+ } catch (ApiException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (SdkException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ String successMsg = "Load eBay Feedback Successfull.";
+ result = ServiceUtil.returnSuccess(successMsg);
+    return result;
+ }
+ public static Map<String, Object> getItemsAwaitingFeedback(DispatchContext dctx, Map<String, ? extends Object> context){
+ Map<String, Object> result = FastMap.newInstance();
+ LocalDispatcher dispatcher = dctx.getDispatcher();
+ GenericValue userLogin = (GenericValue) context.get("userLogin");
+ Delegator delegator = dctx.getDelegator();
+ Locale locale = (Locale) context.get("locale");
+ String productStoreId = (String) context.get("productStoreId");
+ ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
+ List itemsResult = FastList.newInstance();
+ try{
+ GetItemsAwaitingFeedbackCall awaitingFeedbackCall = new GetItemsAwaitingFeedbackCall();
+ awaitingFeedbackCall.setApiContext(apiContext);
+ awaitingFeedbackCall.getItemsAwaitingFeedback();
+ PaginatedTransactionArrayType itemsAwaitingFeedback = awaitingFeedbackCall.getReturnedItemsAwaitingFeedback();
+ TransactionArrayType items = itemsAwaitingFeedback.getTransactionArray();
+ GetUserCall getUserCall = new GetUserCall(apiContext);
+ String commentingUser = getUserCall.getUser().getUserID();
+ for(int i = 0;i<items.getTransactionLength();i++){
+ Map<String, Object> entry = FastMap.newInstance();
+ TransactionType transection = items.getTransaction(i);
+ entry.put("itemID", transection.getItem().getItemID());
+ entry.put("commentingUser", commentingUser);
+ entry.put("title", transection.getItem().getTitle());
+ entry.put("transactionID", transection.getTransactionID());
+ if(transection.getBuyer() != null){
+ entry.put("userID", transection.getBuyer().getUserID());
+ entry.put("role", "buyer");
+ }
+
+ if(transection.getItem().getSeller() != null){
+ entry.put("userID", transection.getItem().getSeller().getUserID());
+ entry.put("role", "seller");
+ }
+ if(transection.getShippingDetails()!=null){
+ entry.put("shippingCost", transection.getShippingDetails().getDefaultShippingCost().getValue());
+ entry.put("shippingCurrency", transection.getShippingDetails().getDefaultShippingCost().getCurrencyID().name());
+ }
+
+ if(transection.getFeedbackLeft() != null){
+ entry.put("commentType", transection.getFeedbackLeft().getCommentType().name());
+ }
+ itemsResult.add(entry);
+ }
+ result.put("itemsAwaitingFeedback", itemsResult);
+ } catch (ApiException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (SdkException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return result;
+ }
+ public static Map<String, Object> leaveFeedback(DispatchContext dctx, Map<String, ? extends Object> context){
+ Map<String, Object>result = FastMap.newInstance();
+ Delegator delegator = dctx.getDelegator();
+ Locale locale = (Locale) context.get("locale");
+ String productStoreId = (String) context.get("productStoreId");
+ ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
+
+ String itemId = (String) context.get("itemId");
+ String targetUser = (String) context.get("targetUser");
+ String transactionId = (String) context.get("transactionId");
+ String commentingUser = (String) context.get("commentingUser");
+ String role = (String) context.get("role");
+ String commentType = (String) context.get("commentType");
+ String commentText = (String) context.get("commentText");
+ String AqItemAsDescribed = null;
+ String ratingItem = (String) context.get("ratingItem");
+ String ratingComm = (String) context.get("ratingComm");
+ String ratingShip = (String) context.get("ratingShip");
+ String ratingShipHand = (String) context.get("ratingShipHand");
+ try{
+ if(commentType != null){
+ LeaveFeedbackCall leaveFeedbackCall = new LeaveFeedbackCall();
+ leaveFeedbackCall.setApiContext(apiContext);
+ leaveFeedbackCall.setTargetUser(targetUser);
+ leaveFeedbackCall.setTransactionID(transactionId);
+
+ if(role.equals("seller")){
+ ItemRatingDetailArrayType sellerItemRatingDetailArray = new ItemRatingDetailArrayType();
+
+ //The item description
+ ItemRatingDetailsType itemRatingDetailsType1 = new ItemRatingDetailsType();
+ int ratingItemValue = 0;
+ if(UtilValidate.isInteger(ratingItem)){
+ ratingItemValue = Integer.parseInt(ratingItem);
+ }
+ if(ratingItemValue<3){
+ int AqItemAsDescribedId = Integer.parseInt((String) context.get("AqItemAsDescribedId"));
+ switch (AqItemAsDescribedId) {
+ case 5:
+ AqItemAsDescribed = "ItemNotReceived";
+ break;
+ case 6:
+ AqItemAsDescribed = "ItemBadQuality";
+ break;
+ case 2:
+ AqItemAsDescribed = "ItemDamaged";
+ break;
+ case 1:
+ AqItemAsDescribed = "ItemIneligible";
+ break;
+ case 3:
+ AqItemAsDescribed = "ItemLost";
+ break;
+ default:
+ AqItemAsDescribed = "Other";
+ break;
+ }
+ }
+ itemRatingDetailsType1.setRating(ratingItemValue);
+ itemRatingDetailsType1.setRatingDetail(FeedbackRatingDetailCodeType.ITEM_AS_DESCRIBED);
+
+ //The seller's communication
+ ItemRatingDetailsType itemRatingDetailsType2 = new ItemRatingDetailsType();
+ int ratingCommValue = 0;
+ if(UtilValidate.isInteger(ratingComm)){
+ ratingCommValue = Integer.parseInt(ratingComm);
+ }
+ itemRatingDetailsType2.setRating(ratingCommValue);
+ itemRatingDetailsType2.setRatingDetail(FeedbackRatingDetailCodeType.COMMUNICATION);
+
+ //the seller ship the item
+ ItemRatingDetailsType itemRatingDetailsType3 = new ItemRatingDetailsType();
+ int ratingShipValue = 0;
+ if(UtilValidate.isInteger(ratingShip)){
+ ratingShipValue = Integer.parseInt(ratingShip);
+ }
+ itemRatingDetailsType3.setRating(ratingShipValue);
+ itemRatingDetailsType3.setRatingDetail(FeedbackRatingDetailCodeType.SHIPPING_TIME);
+
+ //the shipping and handling charges
+ ItemRatingDetailsType itemRatingDetailsType4 = new ItemRatingDetailsType();
+ int ratingShipHandValue = 0;
+ if(UtilValidate.isInteger(ratingShipHand)){
+ ratingShipHandValue = Integer.parseInt(ratingShipHand);
+ }
+ itemRatingDetailsType4.setRating(ratingShipHandValue);
+ itemRatingDetailsType4.setRatingDetail(FeedbackRatingDetailCodeType.SHIPPING_AND_HANDLING_CHARGES);
+
+ //Rating Summary
+ ItemRatingDetailsType[] itemRatingDetailsType = {itemRatingDetailsType1, itemRatingDetailsType2, itemRatingDetailsType3, itemRatingDetailsType4};
+ sellerItemRatingDetailArray.setItemRatingDetails(itemRatingDetailsType);
+
+ leaveFeedbackCall.setSellerItemRatingDetailArray(sellerItemRatingDetailArray);
+ }
+ FeedbackDetailType feedbackDetail = new FeedbackDetailType();
+ feedbackDetail.setItemID(itemId);
+ feedbackDetail.setCommentingUser(commentingUser);
+ feedbackDetail.setCommentText(commentText);
+ feedbackDetail.setCommentTime(Calendar.getInstance());
+ if(commentType.equals("positive")){
+ feedbackDetail.setCommentType(CommentTypeCodeType.POSITIVE);
+ }else if(commentType.equals("neutral")){
+ feedbackDetail.setCommentType(CommentTypeCodeType.NEUTRAL);
+ }else if(commentType.equals("negative")){
+ feedbackDetail.setCommentType(CommentTypeCodeType.NEGATIVE);
+ }
+ leaveFeedbackCall.setFeedbackDetail(feedbackDetail);
+ leaveFeedbackCall.leaveFeedback();
+ }
+ } catch (ApiException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (SdkException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ result = ServiceUtil.returnSuccess();
+ return result;
+ }
+
+}
\ No newline at end of file