Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package com.amazonaws.mws.samples;import in.shop2020.feeds.products.AmazonEnvelope;import in.shop2020.feeds.products.AmazonEnvelope.Message;import in.shop2020.feeds.products.Header;import in.shop2020.feeds.products.OrderAcknowledgement;import in.shop2020.model.v1.order.AmazonOrdersToAcknowledge;import in.shop2020.model.v1.order.SourceDetail;import in.shop2020.model.v1.user.User;import in.shop2020.model.v1.user.UserContextException;import in.shop2020.thrift.clients.TransactionClient;import in.shop2020.thrift.clients.UserClient;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.math.BigInteger;import java.security.DigestInputStream;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.ArrayList;import java.util.Arrays;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Random;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Marshaller;import org.apache.commons.codec.binary.Base64;import org.apache.thrift.TException;import org.apache.thrift.transport.TTransportException;import com.amazonaws.mws.MarketplaceWebService;import com.amazonaws.mws.MarketplaceWebServiceClient;import com.amazonaws.mws.MarketplaceWebServiceConfig;import com.amazonaws.mws.MarketplaceWebServiceException;import com.amazonaws.mws.model.FeedSubmissionInfo;import com.amazonaws.mws.model.IdList;import com.amazonaws.mws.model.ResponseMetadata;import com.amazonaws.mws.model.SubmitFeedRequest;import com.amazonaws.mws.model.SubmitFeedResponse;import com.amazonaws.mws.model.SubmitFeedResult;public class CreateOrderAcknowledgementFeed {static java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");static Calendar cal=GregorianCalendar.getInstance();private static final String AMAZON_ORDER_ACKNOWLEDGEMENT_XML = "/home/amazon/OrderAck/OrderAcknowledgement"+sdf.format(cal.getTime())+".xml";public static void main(String... args) {createOrderAcknowlegementFeed();}public static void createOrderAcknowlegementFeed() {TransactionClient tcl=null;List<AmazonOrdersToAcknowledge> amazonOrdersToAcknowledge=null;try {tcl = new TransactionClient();amazonOrdersToAcknowledge = tcl.getClient().getAmazonOrdersToAcknowledge();} catch (TTransportException e2) {// TODO Auto-generated catch blocke2.printStackTrace();} catch (TException e) {// TODO Auto-generated catch blocke.printStackTrace();}if(amazonOrdersToAcknowledge!=null && amazonOrdersToAcknowledge.size() > 0){File file = new File(AMAZON_ORDER_ACKNOWLEDGEMENT_XML);AmazonEnvelope amazonenvelope = new AmazonEnvelope();Header header = new Header();header.setDocumentVersion("1.0");header.setMerchantIdentifier("AF6E3O0VE0X4D");header.setOverrideReleaseId(null);amazonenvelope.setHeader(header);amazonenvelope.setMessageType("OrderAcknowledgement");amazonenvelope.setMarketplaceName(null);List<Message> messages = amazonenvelope.getMessage();Map<String,Long> amazonOrdertxnMap = new HashMap<String,Long>();Map<String,List<String>> amazonOrderIdOrderItemMap = new HashMap<String,List<String>>();Map<String,Integer> amazonOrderItemSuccessMap = new HashMap<String,Integer>();Map<String,Integer> amazonOrderItemFailureMap = new HashMap<String,Integer>();for(AmazonOrdersToAcknowledge amazonOrderToAcknowledge:amazonOrdersToAcknowledge ){if(!amazonOrdertxnMap.containsKey(amazonOrderToAcknowledge.getAmazonOrderId())){amazonOrdertxnMap.put(amazonOrderToAcknowledge.getAmazonOrderId(),amazonOrderToAcknowledge.getTransaction_id());}if(!amazonOrderIdOrderItemMap.containsKey(amazonOrderToAcknowledge.getAmazonOrderId())){List<String> orderItemsList = new ArrayList<String>();orderItemsList.add(amazonOrderToAcknowledge.getAmazonOrderItemId());amazonOrderIdOrderItemMap.put(amazonOrderToAcknowledge.getAmazonOrderId(),orderItemsList);}else{if(!amazonOrderIdOrderItemMap.get(amazonOrderToAcknowledge.getAmazonOrderId()).contains(amazonOrderToAcknowledge.getAmazonOrderItemId()))amazonOrderIdOrderItemMap.get(amazonOrderToAcknowledge.getAmazonOrderId()).add(amazonOrderToAcknowledge.getAmazonOrderItemId());}if(amazonOrderToAcknowledge.getStatus().equals("Order-Payment-Success")){amazonOrderItemSuccessMap.put(amazonOrderToAcknowledge.getAmazonOrderId()+amazonOrderToAcknowledge.getAmazonOrderItemId(),amazonOrderToAcknowledge.getCount());}if(amazonOrderToAcknowledge.getStatus().equals("Order-Payment-Failure")){amazonOrderItemFailureMap.put(amazonOrderToAcknowledge.getAmazonOrderId()+amazonOrderToAcknowledge.getAmazonOrderItemId(),amazonOrderToAcknowledge.getCount());}}JAXBContext context;Marshaller m=null;try {context = JAXBContext.newInstance(AmazonEnvelope.class);m = context.createMarshaller();} catch (JAXBException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}for (Map.Entry<String,List<String>> entry : amazonOrderIdOrderItemMap.entrySet()){OrderAcknowledgement orderAcknowLedgement = new OrderAcknowledgement();List<OrderAcknowledgement.Item> acknowledgementItems = orderAcknowLedgement.getItem();String orderid = entry.getKey();orderAcknowLedgement.setAmazonOrderID(orderid);orderAcknowLedgement.setMerchantOrderID(amazonOrdertxnMap.get(orderid).toString());orderAcknowLedgement.setStatusCode("Failure");for(String orderItemId :entry.getValue()){OrderAcknowledgement.Item orderAcknowledgementItem = new OrderAcknowledgement.Item();if(amazonOrderItemSuccessMap.get(orderid+orderItemId)!=null && amazonOrderItemSuccessMap.get(orderid+orderItemId) > 0){orderAcknowledgementItem.setAmazonOrderItemCode(orderItemId);orderAcknowLedgement.setStatusCode("Success");}else{orderAcknowledgementItem.setAmazonOrderItemCode(orderItemId);orderAcknowledgementItem.setCancelReason("ShippingAddressUndeliverable");}acknowledgementItems.add(orderAcknowledgementItem);}AmazonEnvelope.Message message = new AmazonEnvelope.Message();Random rand = new Random();message.setMessageID(BigInteger.valueOf(Math.abs(rand.nextInt())));message.setOrderAcknowledgement(orderAcknowLedgement);messages.add(message);}System.out.println("Messages is " + messages);try {m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);m.marshal(amazonenvelope, file);m.marshal(amazonenvelope, System.out);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}// GmailUtils gm = GmailUtils();// gm.sendSSLMessage(arg0, arg1, arg2, arg3, arg4, arg5)}}public static String computeContentMD5HeaderValue( FileInputStream fis) {try {DigestInputStream dis = new DigestInputStream( fis,MessageDigest.getInstance( "MD5" ));byte[] buffer = new byte[8192];while( dis.read( buffer ) > 0 );String md5Content = new String(Base64.encodeBase64(dis.getMessageDigest().digest()));// Effectively resets the stream to be beginning of the file via afis.getChannel().position( 0 );return md5Content;} catch (NoSuchAlgorithmException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}}