Blame | Last modification | View Log | RSS feed
package com.amazonaws.mws.samples;import com.amazonaws.mws.*;import com.amazonaws.mws.model.GetFeedSubmissionResultRequest;import com.amazonaws.mws.model.GetFeedSubmissionResultResponse;import com.amazonaws.mws.samples.ProcessFeed;import in.shop2020.logistics.LogisticsServiceException;import in.shop2020.logistics.Provider;import in.shop2020.model.v1.catalog.CatalogService.Client;import in.shop2020.model.v1.order.AmazonOrder;import in.shop2020.model.v1.order.LineItem;import in.shop2020.model.v1.order.Order;import in.shop2020.thrift.clients.CatalogClient;import in.shop2020.thrift.clients.HelperClient;import in.shop2020.thrift.clients.LogisticsClient;import in.shop2020.thrift.clients.TransactionClient;import in.shop2020.thrift.clients.UserClient;import in.shop2020.utils.GmailUtils;import in.shop2020.utils.HelperServiceException;import java.io.*;import java.math.BigInteger;import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import javax.xml.parsers.*;import org.apache.commons.lang.StringUtils;import org.apache.thrift.TException;import org.apache.thrift.transport.TTransportException;import org.w3c.dom.*;import org.xml.sax.SAXException;// Referenced classes of package com.amazonaws.mws.samples:// ProcessFeedpublic class JungleeCheckFeedSubmission{public ProcessFeed getResult(String feedSubmissionId, String feedType, long timestamp,List<Long> itemIds) throws ParserConfigurationException, SAXException, IOException{Map<Long,String> courierIdPhoneMap = new HashMap<Long,String>();courierIdPhoneMap.put(1L,"18602331234");courierIdPhoneMap.put(6L,"1800-123-2400");courierIdPhoneMap.put(3L, "+91 (124) 4718900");courierIdPhoneMap.put(7L, "1800 209 6161 / 1800 22 6161 MTNL & BSNL");String accessKeyId = "AKIAJBFVIU6DHLMNZ2GA";String secretAccessKey = "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";String appName = "Test";String appVersion = "1.0";int processed = 0;int success = 0;int error = 0;int warn = 0;MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig();config.setServiceURL("https://mws.amazonservices.in");MarketplaceWebService service = new MarketplaceWebServiceClient(accessKeyId, secretAccessKey, appName, appVersion, config);GetFeedSubmissionResultRequest request = new GetFeedSubmissionResultRequest();request.setMerchant("A116PWEHC4HP0W");request.setFeedSubmissionId(feedSubmissionId);OutputStream processingResult = null;try{processingResult = new FileOutputStream( "/home/junglee/feedSubmission"+feedType+"Result.xml" );}catch(FileNotFoundException e){e.printStackTrace();}request.setFeedSubmissionResultOutputStream(processingResult);try {GetFeedSubmissionResultResponse response = service.getFeedSubmissionResult(request);} catch (MarketplaceWebServiceException e) {e.printStackTrace();return null;}DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();Document doc = dBuilder.parse("/home/amazon/feedSubmission"+feedType+"Result.xml");doc.getDocumentElement().normalize();System.out.println("Root element :" + doc.getDocumentElement().getNodeName());ProcessFeed feed = new ProcessFeed();NodeList nodes = doc.getElementsByTagName("ProcessingSummary");for (int temp = 0; temp < nodes.getLength(); temp++) {Node n = nodes.item(temp);System.out.println("\nCurrent Element :" + n.getNodeName());if (n.getNodeType() == Node.ELEMENT_NODE) {Element eElement = (Element) n;System.out.println((new StringBuilder()).append("MessagesProcessed: ").append(eElement.getElementsByTagName("MessagesProcessed").item(0).getTextContent()).toString());feed.setProcessed(eElement.getElementsByTagName("MessagesProcessed").item(0).getTextContent());processed = Integer.parseInt(eElement.getElementsByTagName("MessagesProcessed").item(0).getTextContent());System.out.println((new StringBuilder()).append("MessagesSuccessful : ").append(eElement.getElementsByTagName("MessagesSuccessful").item(0).getTextContent()).toString());feed.setSuccess(eElement.getElementsByTagName("MessagesSuccessful").item(0).getTextContent());success = Integer.parseInt(eElement.getElementsByTagName("MessagesSuccessful").item(0).getTextContent());feed.setError(eElement.getElementsByTagName("MessagesWithError").item(0).getTextContent());System.out.println((new StringBuilder()).append("MessageWithError : ").append(eElement.getElementsByTagName("MessagesWithError").item(0).getTextContent()).toString());error = Integer.parseInt(eElement.getElementsByTagName("MessagesWithError").item(0).getTextContent());feed.setWarn(eElement.getElementsByTagName("MessagesWithWarning").item(0).getTextContent());System.out.println((new StringBuilder()).append("MessagesWithWarning : ").append(eElement.getElementsByTagName("MessagesWithWarning").item(0).getTextContent()).toString());warn = Integer.parseInt(eElement.getElementsByTagName("MessagesWithWarning").item(0).getTextContent());}}if(feedType.equals("FulfillmentFeed")){NodeList nodesFail = doc.getElementsByTagName("Result");String failedOrderId = "";for (int temp = 0; temp < nodesFail.getLength(); temp++) {Node n = nodesFail.item(temp);if (n.getNodeType() == Node.ELEMENT_NODE) {Element eElement = (Element) n;String messageID = eElement.getElementsByTagName("MessageID").item(0).getTextContent();failedOrderId+=" "+SubmitFulfillmentFeedAndFetchResults.messageIdOrderMap.get(messageID).toString()+"\n";SubmitFulfillmentFeedAndFetchResults.messageIdOrderMap.remove(BigInteger.valueOf(Long.parseLong(messageID)));}}in.shop2020.model.v1.order.TransactionService.Client tcl;in.shop2020.utils.HelperService.Client hcl;in.shop2020.logistics.LogisticsService.Client lcl;AmazonOrder amazonOrder;LineItem lineItem;Provider provider;String emailBody = null;String emailIdFrom = "help@saholic.com";for (Entry<BigInteger, Order> entry : SubmitFulfillmentFeedAndFetchResults.messageIdOrderMap.entrySet()){System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());try {lineItem = entry.getValue().getLineitems().get(0);tcl = new TransactionClient().getClient();tcl.updateAmazonOrderStatus(entry.getValue().getId(),"Order-Fulfillment-Sent");lcl = new LogisticsClient().getClient();try {provider = lcl.getProvider(entry.getValue().getLogistics_provider_id());} catch (LogisticsServiceException e1) {e1.printStackTrace();continue;}amazonOrder = tcl.getAmazonOrder(entry.getValue().getId());hcl = new HelperClient("helper_service_server_host_prod", "helper_service_server_port_prod").getClient();emailBody = "Dear Customer ,<br><br>"+"We are pleased to inform that we have shipped the Junglee Order ID : " +amazonOrder.getAmazonOrderCode()+ " for your product " + (getVaildName(lineItem.getBrand())+" "+getVaildName(lineItem.getModel_name())+" "+getVaildName(lineItem.getModel_number())+" "+getVaildName(lineItem.getColor())) +" on " +(new java.util.Date(entry.getValue().getShipping_timestamp()).toLocaleString())+ "." +"The shipment will be delivered to you via " + provider.getName() + " Courier Service" + " AWB# : " + entry.getValue().getAirwaybill_no() +".<br><br>"+"Expected delivery date for your order is " +(new java.util.Date(entry.getValue().getExpected_delivery_time()).toLocaleString()) +".<br><br>"+"For scheduling the delivery of your product at some specific timings, we recommend you to contact the helpline for " +provider.getName() +" with your "+"complete AWB# On "+ courierIdPhoneMap.get(entry.getValue().getLogistics_provider_id())+".<br><br>"+"Warm Regards, <br>"+"Saholic Team";try {//hcl.saveUserEmailForSending(Arrays.asList(new String[] {"vikram.raghav@saholic.com"}), emailIdFrom, "Shipping Details for Order ID: " + amazonOrder.getAmazonOrderCode(), emailBody, "Amazon MFN", "Amazon Order Shipping Confirmation", null, Arrays.asList(new String[] {"vikram.raghav@shop2020.in"}), 1);hcl.saveUserEmailForSending(Arrays.asList(new String[] {entry.getValue().getCustomer_email()}), emailIdFrom, "Shipping Details for Order ID: " + amazonOrder.getAmazonOrderCode(), emailBody, "Amazon MFN", "Amazon Order Shipping Confirmation", null, new ArrayList<String>(), 1);} catch (HelperServiceException e) {e.printStackTrace();continue;}} catch (TTransportException e) {e.printStackTrace();} catch (TException e) {e.printStackTrace();}}if(!failedOrderId.isEmpty()){String[] sendTo = { "eng@shop2020.in" };String emailSubjectTxt = "Fulfillment Feed for junglee Failure";String emailFromAddress = "build@shop2020.in";String password = "cafe@nes";GmailUtils mailer = new GmailUtils();try {mailer.sendSSLMessage(sendTo, emailSubjectTxt, " Failed to Send Fulfillment for these Order IDs : "+"\n"+failedOrderId, emailFromAddress, password, "/home/amazon/feedSubmissionOrderAcknowledgementResult.xml");}catch (Exception e) {e.printStackTrace();}}}if(feedType.equals("OrderAcknowledgement")){NodeList nodesFail = doc.getElementsByTagName("Result");String failedamazonOrderId = "";for (int temp = 0; temp < nodesFail.getLength(); temp++) {Node n = nodesFail.item(temp);if (n.getNodeType() == Node.ELEMENT_NODE) {Element eElement = (Element) n;String messageID = eElement.getElementsByTagName("MessageID").item(0).getTextContent();failedamazonOrderId+=" "+CreateandSubmitOrderAcknowledgementFeed.messageIdamazonOrderIdMap.get(messageID).toString()+"\n";CreateandSubmitOrderAcknowledgementFeed.messageIdamazonOrderIdMap.remove(BigInteger.valueOf(Long.parseLong(messageID)));}}in.shop2020.model.v1.order.TransactionService.Client tcl;for (Map.Entry<BigInteger, String> entry : CreateandSubmitOrderAcknowledgementFeed.messageIdamazonOrderIdMap.entrySet()){System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());try {tcl = new TransactionClient().getClient();tcl.changeAmazonOrderStatus(entry.getValue(),"Order-Cancellation-Sent");} catch (TTransportException e) {e.printStackTrace();} catch (TException e) {e.printStackTrace();}}if(!failedamazonOrderId.isEmpty()){String[] sendTo = { "eng@shop2020.in" };String emailSubjectTxt = "Acknowledgement Feed Failure for Amazon";String emailFromAddress = "build@shop2020.in";String password = "cafe@nes";GmailUtils mailer = new GmailUtils();try {mailer.sendSSLMessage(sendTo, emailSubjectTxt, " Failed to Send Acknowledgement for these Amazon Order IDs : "+"\n"+failedamazonOrderId, emailFromAddress, password, "/home/amazon/feedSubmissionOrderAcknowledgementResult.xml");}catch (Exception e) {e.printStackTrace();}}}if(StringUtils.equals(feedType, "FbaListingFeed") || StringUtils.equals(feedType,"NonFbaListingFeed") || StringUtils.equals(feedType, "FbbListingFeed")){ArrayList<Long> skuList = new ArrayList<Long>();NodeList nodesFail = doc.getElementsByTagName("AdditionalInfo");for (int temp = 0; temp < nodesFail.getLength(); temp++) {Node n = nodesFail.item(temp);if (n.getNodeType() == Node.ELEMENT_NODE) {Element eElement = (Element) n;if (StringUtils.equals(feedType, "FbaListingFeed")){System.out.println(eElement.getElementsByTagName("SKU").item(0).getTextContent().split("FBA")[1]);skuList.add(Long.valueOf(eElement.getElementsByTagName("SKU").item(0).getTextContent().split("FBA")[1]));}if (StringUtils.equals(feedType, "FbbListingFeed")){System.out.println(eElement.getElementsByTagName("SKU").item(0).getTextContent().split("FBB")[1]);skuList.add(Long.valueOf(eElement.getElementsByTagName("SKU").item(0).getTextContent().split("FBB")[1]));}else {System.out.println(eElement.getElementsByTagName("SKU").item(0).getTextContent());skuList.add(Long.valueOf(eElement.getElementsByTagName("SKU").item(0).getTextContent()));}}}Client CatalogClient = null;try {CatalogClient = new CatalogClient().getClient();} catch (TTransportException e) {e.printStackTrace();}try {itemIds.removeAll(skuList);CatalogClient.updateTimestampForAmazonFeeds(feedType, itemIds,System.currentTimeMillis());} catch (TException e) {e.printStackTrace();}}if (timestamp != 0){ArrayList<Long> skuList = new ArrayList<Long>();NodeList nodesFail = doc.getElementsByTagName("AdditionalInfo");for (int temp = 0; temp < nodesFail.getLength(); temp++) {Node n = nodesFail.item(temp);if (n.getNodeType() == Node.ELEMENT_NODE) {Element eElement = (Element) n;if (StringUtils.equals(feedType, "FbaPricing") || StringUtils.equals(feedType, "FullFbaPricing")){System.out.println(eElement.getElementsByTagName("SKU").item(0).getTextContent().split("FBA")[1]);skuList.add(Long.valueOf(eElement.getElementsByTagName("SKU").item(0).getTextContent().split("FBA")[1]));}else if (StringUtils.equals(feedType, "FbbPricing")){System.out.println(eElement.getElementsByTagName("SKU").item(0).getTextContent().split("FBB")[1]);skuList.add(Long.valueOf(eElement.getElementsByTagName("SKU").item(0).getTextContent().split("FBB")[1]));}else{System.out.println(eElement.getElementsByTagName("SKU").item(0).getTextContent());skuList.add(Long.valueOf(eElement.getElementsByTagName("SKU").item(0).getTextContent()));}}}Client CatalogClient = null;try {CatalogClient = new CatalogClient().getClient();} catch (TTransportException e) {e.printStackTrace();}try {itemIds.removeAll(skuList);CatalogClient.updateTimestampForAmazonFeeds(feedType, itemIds, timestamp);} catch (TException e) {e.printStackTrace();}}if(success == processed)feed.setResult("true");elsefeed.setResult("false");return feed;}public static void main(String args[]) throws ParserConfigurationException, SAXException, IOException{JungleeCheckFeedSubmission service = new JungleeCheckFeedSubmission();//ProcessFeed result = service.getResult("5598618360", "NonFbaPricing",412500);}public String getVaildName(String name){return name!=null?name:"";}}