Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

/*******************************************************************************
 *  Copyright 2009 Amazon Services.
 *  Licensed under the Apache License, Version 2.0 (the "License"); 
 *  
 *  You may not use this file except in compliance with the License. 
 *  You may obtain a copy of the License at: http://aws.amazon.com/apache2.0
 *  This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
 *  CONDITIONS OF ANY KIND, either express or implied. See the License for the 
 *  specific language governing permissions and limitations under the License.
 * ***************************************************************************** 
 *
 *  Marketplace Web Service Java Library
 *  API Version: 2009-01-01
 *  Generated: Wed Feb 18 13:28:48 PST 2009 
 * 
 */

package com.amazonaws.mws.samples;

import in.shop2020.feeds.products.AmazonEnvelope;
import in.shop2020.feeds.products.CE;
import in.shop2020.feeds.products.HandheldOrPDA;
import in.shop2020.feeds.products.Header;
import in.shop2020.feeds.products.Product;
import in.shop2020.feeds.products.StandardProductID;
import in.shop2020.model.v1.catalog.Amazonlisted;
import in.shop2020.model.v1.catalog.CatalogService.Client;
import in.shop2020.model.v1.catalog.CatalogServiceException;
import in.shop2020.thrift.clients.CatalogClient;
import in.shop2020.utils.GmailUtils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
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.List;
import java.util.Random;
import java.util.TimeZone;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.parsers.ParserConfigurationException;

import org.apache.commons.codec.binary.Base64;
import org.apache.thrift.TException;
import org.apache.thrift.transport.TTransportException;
import org.xml.sax.SAXException;

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;

/**
 * 
 * Submit Feed Samples
 * 
 * 
 */
public class SubmitFBDListingFeed {

    /**
     * Just add a few required parameters, and try the service Submit Feed
     * functionality
     * 
     * @param args
     *            unused
     *            
     */
    /**
     * @param args
     * @throws TException 
     * @throws CatalogServiceException 
     */
    static java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
    static Calendar cal=GregorianCalendar.getInstance();
    final public static String AMAZON_FBD_LISTING_XML = "/home/amazon/FbdListing.xml";
    final public static String AMAZON_FBD_SKU_PREFIX = "FBD";
    final public static boolean PURGE_OR_REPLACE   = false;
    public static  List<Amazonlisted> aItems=null;
    public static List<Long> itemIdsToUpdate=null;
    //public static List<in.shop2020.model.v1.catalog.Item> thriftItems=null;
    //public static Map<Long,AmazonItem> allItemsMap = new HashMap<Long,AmazonItem>();
    
    static{
        
        CatalogClient catalogServiceClient = null;
        try {
            catalogServiceClient = new CatalogClient();
        } catch (TTransportException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Client catalogClient = catalogServiceClient.getClient();
        try {
            aItems = catalogClient.getAllItemstoListOnFbd();
            //thriftItems = catalogClient.getAllAliveItems();
            /*InventoryClient inventoryServiceClient = null;
            try {
                inventoryServiceClient = new InventoryClient();
            } catch (TTransportException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
            Map<Long, ItemInventory> availability = inventoryClient.getInventorySnapshot(0);
            //System.out.println("Availability is " + availability );*/
            /*for(in.shop2020.model.v1.catalog.Item thriftItem:thriftItems){
                long availableno=0;
                if(availability.get(thriftItem.getId())!=null){ 
                    ItemInventory iteminventory = availability.get(thriftItem.getId());
                    Map<Long,Long> itemavailability = new HashMap<Long,Long>();
                    itemavailability = iteminventory.getAvailability();
                    for (Map.Entry<Long,Long> entry : itemavailability.entrySet()) {
                        availableno =  availableno + entry.getValue();
                    }
                }   
                AmazonItem item = new AmazonItem(thriftItem.getId(),thriftItem.getModelName(),thriftItem.getModelNumber(),thriftItem.getSellingPrice(),thriftItem.getColor(),availableno);
                allItemsMap.put(item.getId(),item);

            }*/
            
        } catch (TException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
    }
    public static void main(String... args) throws CatalogServiceException, TException {

        /************************************************** **********************
         * Access Key ID and Secret Access Key ID, obtained from:
         * http://aws.amazon.com
         ***********************************************************************/
        

        //public static final String marketplaceId = "A21TJRUUN4KGV";

        
                
        
        final String accessKeyId = "AKIAII3SGRXBJDPCHSGQ";
        final String secretAccessKey = "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";

        final String appName = "Test";
        final String appVersion = "1.0";

        MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig();

        /************************************************************************
         * Uncomment to set the appropriate MWS endpoint.
         ************************************************************************/
        // US
        // config.setServiceURL("https://mws.amazonservices.com");
        // UK
        // config.setServiceURL("https://mws.amazonservices.co.uk");
        // Germany
        // config.setServiceURL("https://mws.amazonservices.de");
        // France
        // config.setServiceURL("https://mws.amazonservices.fr");
        // Italy
        // config.setServiceURL("https://mws.amazonservices.it");
        // Japan
        // config.setServiceURL("https://mws.amazonservices.jp");
        // China
        // config.setServiceURL("https://mws.amazonservices.com.cn");
        // Canada
        // config.setServiceURL("https://mws.amazonservices.ca");
        // India
        config.setServiceURL("https://mws.amazonservices.in");

        /************************************************************************
         * You can also try advanced configuration options. Available options are:
         *
         *  - Signature Version
         *  - Proxy Host and Proxy Port
         *  - User Agent String to be sent to Marketplace Web Service
         *
         ***********************************************************************/

        /************************************************************************
         * Instantiate Http Client Implementation of Marketplace Web Service        
         ***********************************************************************/

        MarketplaceWebService service = new MarketplaceWebServiceClient(
                accessKeyId, secretAccessKey, appName, appVersion, config);


        /************************************************************************
         * Setup request parameters and uncomment invoke to try out sample for
         * Submit Feed
         ***********************************************************************/

        /************************************************************************
         * Marketplace and Merchant IDs are required parameters for all
         * Marketplace Web Service calls.
         ***********************************************************************/
        //final String merchantId = "AF6E300VE0X4D";
        final String merchantId = "AF6E3O0VE0X4D";  
        // marketplaces to which this feed will be submitted; look at the
        // API reference document on the MWS website to see which marketplaces are
        // included if you do not specify the list yourself
        final IdList marketplaces = new IdList(Arrays.asList(
                "A21TJRUUN4KGV"));

        SubmitFeedRequest requestlisting = new SubmitFeedRequest();
        //SubmitFeedRequest requestinventory = new SubmitFeedRequest();
        //SubmitFeedRequest requestpricing = new SubmitFeedRequest();
        requestlisting.setMerchant(merchantId);
        //requestinventory.setMerchant(merchantId);
        //requestpricing.setMerchant(merchantId);
        requestlisting.setMarketplaceIdList(marketplaces);
        //requestinventory.setMarketplaceIdList(marketplaces);
        //requestpricing.setMarketplaceIdList(marketplaces);
        requestlisting.setFeedType("_POST_PRODUCT_DATA_");
        //requestinventory.setFeedType("_POST_INVENTORY_AVAILABILITY_DATA_");
        //requestpricing.setFeedType("_POST_PRODUCT_PRICING_DATA_");
        // MWS exclusively offers a streaming interface for uploading your
        // feeds. This is because
        // feed sizes can grow to the 1GB+ range - and as your business grows
        // you could otherwise
        // silently reach the feed size where your in-memory solution will no
        // longer work, leaving you
        // puzzled as to why a solution that worked for a long time suddenly
        // stopped working though
        // you made no changes. For the same reason, we strongly encourage you
        // to generate your feeds to
        // local disk then upload them directly from disk to MWS via Java -
        // without buffering them in JavaFileNotFoundException
        // memory in their entirety.
        // Note: MarketplaceWebServiceClient will not retry a submit feed request
        // because there is no way to reset the InputStream from our client. 
        // To enable retry, recreate the InputStream and resubmit the feed
        // with the new InputStream. 
        //
        try {
            
            createFbdListingFeed();
            FileInputStream listingfis = new FileInputStream(AMAZON_FBD_LISTING_XML);
            requestlisting.setContentMD5(computeContentMD5HeaderValue(listingfis));
            requestlisting.setFeedContent(listingfis);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        try {
                invokeSubmitFeed(service,requestlisting);
                Thread.sleep(10);
    //          invokeSubmitFeed(service,requestinventory);
        //      Thread.sleep(30);
            //  Thread.sleep(180000);
            //  invokeSubmitFeed(service,requestpricing);
            } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    /**
     * Submit Feed request sample Uploads a file for processing together with
     * the necessary metadata to process the file, such as which type of feed it
     * is. PurgeAndReplace if true means that your existing e.g. inventory is
     * wiped out and replace with the contents ocf this feed - use with caution
     * (the default is false).
     * 
     * @param service
     *            instance of MarketplaceWebService service
     * @param request
     *            Action to invoke
     */
    public static void invokeSubmitFeed(MarketplaceWebService service,
            SubmitFeedRequest request) throws InterruptedException {
        boolean retry = false;
        int retryCount = 0;
        while (!retry) {
            try {

                SubmitFeedResponse response = service.submitFeed(request);

                System.out.println("SubmitFeed Action Response");
                System.out
                .println("=============================================================================");
                System.out.println();

                System.out.print("    SubmitFeedResponse");
                System.out.println();
                FeedSubmissionInfo feedSubmissionInfo=null;
                if (response.isSetSubmitFeedResult()) {
                    System.out.print("        SubmitFeedResult");
                    System.out.println();
                    SubmitFeedResult submitFeedResult = response
                    .getSubmitFeedResult();
                    if (submitFeedResult.isSetFeedSubmissionInfo()) {
                        System.out.print("            FeedSubmissionInfo");
                        System.out.println();
                        feedSubmissionInfo = submitFeedResult
                        .getFeedSubmissionInfo();
                        if (feedSubmissionInfo.isSetFeedSubmissionId()) {
                            System.out.print("                FeedSubmissionId");
                            System.out.println();
                            System.out.print("                    "
                                    + feedSubmissionInfo.getFeedSubmissionId());

                            System.out.println();
                        }
                        if (feedSubmissionInfo.isSetFeedType()) {
                            System.out.print("                FeedType");
                            System.out.println();
                            System.out.print("                    "
                                    + feedSubmissionInfo.getFeedType());
                            System.out.println();
                        }
                        if (feedSubmissionInfo.isSetSubmittedDate()) {
                            System.out.print("                SubmittedDate");
                            System.out.println();
                            System.out.print("                    "
                                    + feedSubmissionInfo.getSubmittedDate());
                            System.out.println();
                        }
                        if (feedSubmissionInfo.isSetFeedProcessingStatus()) {
                            System.out
                            .print("                FeedProcessingStatus");
                            System.out.println();
                            System.out.print("                    "
                                    + feedSubmissionInfo.getFeedProcessingStatus());
                            System.out.println();
                        }
                        if (feedSubmissionInfo.isSetStartedProcessingDate()) {
                            System.out
                            .print("                StartedProcessingDate");
                            System.out.println();
                            System.out
                            .print("                    "
                                    + feedSubmissionInfo
                                    .getStartedProcessingDate());
                            System.out.println();
                        }
                        if (feedSubmissionInfo.isSetCompletedProcessingDate()) {
                            System.out
                            .print("                CompletedProcessingDate");
                            System.out.println();
                            System.out.print("                    "
                                    + feedSubmissionInfo
                                    .getCompletedProcessingDate());
                            System.out.println();
                        }
                    }
                }
                if (response.isSetResponseMetadata()) {
                    System.out.print("        ResponseMetadata");
                    System.out.println();
                    ResponseMetadata responseMetadata = response
                    .getResponseMetadata();
                    if (responseMetadata.isSetRequestId()) {
                        System.out.print("            RequestId");
                        System.out.println();
                        System.out.print("                "
                                + responseMetadata.getRequestId());
                        System.out.println();
                    }
                }
                System.out.println(response.getResponseHeaderMetadata());
                retry =true;
                System.out.println("============Sleeping For 10 Minutes=============");
                Thread.sleep(600000);
                CheckFeedSubmission checkResult = new CheckFeedSubmission();
                ProcessFeed feedProcessingResult=null;
                int checkResultCount=0;
                try {
                    while (feedProcessingResult == null){
                        feedProcessingResult = checkResult.getResult(feedSubmissionInfo.getFeedSubmissionId(),"FbdListingFeed",0,itemIdsToUpdate);
                        if (feedProcessingResult == null){
                            checkResultCount++;
                            if (checkResultCount == 5){
                                String text = "";
                                String[] sendTo = {  "kshitij.sood@shop2020.in","chandan.kumar@shop2020.in"};
                                String emailSubjectTxt = "Unable To Receive FBD Listing Feed Result.Submission Id "+feedSubmissionInfo.getFeedSubmissionId();
                                String emailFromAddress = "build@shop2020.in";
                                String password = "cafe@nes";
                                GmailUtils mailer = new GmailUtils();
                                try {
                                    mailer.sendSSLMessage(sendTo, emailSubjectTxt, text, emailFromAddress, password, new ArrayList<File>());
                                }
                                catch (Exception e) {
                                    e.printStackTrace();
                                }
                                System.exit(1);
                            }
                            System.out.println("=====Feed Result Not Ready Retry Again After 5 Minutes=============");
                            Thread.sleep(600000);

                        }

                    }

                } catch (ParserConfigurationException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (SAXException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                String emailSubjectTxt="";
                String[] sendTo;
                if (Boolean.valueOf(feedProcessingResult.getResult())){
                    emailSubjectTxt = "FBD Listing Feed Success "+sdf.format(cal.getTime());
                    sendTo = new String[]{  "kshitij.sood@shop2020.in","chandan.kumar@shop2020.in"};
                }
                else {
                    emailSubjectTxt = "FBD Listing Feed Failure "+sdf.format(cal.getTime());
                    sendTo = new String[]{  "kshitij.sood@shop2020.in","chandan.kumar@shop2020.in"};
                }
                String text = "MessagesProcessed "+feedProcessingResult.getProcessed()+"\n"+"MessagesSuccessful "+feedProcessingResult.getSuccess()+"\n"+"" +
                "MessagesWithError "+feedProcessingResult.getError()+"\n"+"MessagesWithWarning "+feedProcessingResult.getWarn(); 
                String emailFromAddress = "build@shop2020.in";
                String password = "cafe@nes";
                GmailUtils mailer = new GmailUtils();
                try {
                    mailer.sendSSLMessage(sendTo, emailSubjectTxt, text, emailFromAddress, password, "/home/amazon/feedSubmission"+"FbdListingFeed"+"Result.xml" );
                }
                catch (Exception ex) {
                    ex.printStackTrace();
                }
                System.out.println();
            } catch (MarketplaceWebServiceException ex) {

                System.out.println("Caught Exception: " + ex.getMessage());
                System.out.println("Response Status Code: " + ex.getStatusCode());
                System.out.println("Error Code: " + ex.getErrorCode());
                System.out.println("Error Type: " + ex.getErrorType());
                System.out.println("Request ID: " + ex.getRequestId());
                System.out.print("XML: " + ex.getXML());
                System.out.println("ResponseHeaderMetadata: " + ex.getResponseHeaderMetadata());

                if (retryCount == 2) {
                    StringWriter errors = new StringWriter();
                    ex.printStackTrace(new PrintWriter(errors));
                    String text = errors.toString(); 
                    String[] sendTo = {  "kshitij.sood@shop2020.in","chandan.kumar@shop2020.in"};
                    String emailSubjectTxt = "Unable To Send FBD Listing Feed ";
                    String emailFromAddress = "build@shop2020.in";
                    String password = "cafe@nes";
                    GmailUtils mailer = new GmailUtils();
                    try {
                        mailer.sendSSLMessage(sendTo, emailSubjectTxt, text, emailFromAddress, password, new ArrayList<File>());
                    }
                    catch (Exception e) {
                        e.printStackTrace();
                    }
                    System.exit(1);
                }
                retryCount++;
                Thread.sleep(60000);
            }
        }
    }
    
    public static void createFbdListingFeed() throws CatalogServiceException, TException{

        File file = new File(AMAZON_FBD_LISTING_XML);
        AmazonEnvelope amazonenvelope =  new AmazonEnvelope();
        Header header = new Header();
        header.setDocumentVersion("1.0");
        header.setMerchantIdentifier("AF6E3O0VE0X4D");
        header.setOverrideReleaseId(null);
        amazonenvelope.setHeader(header);
        amazonenvelope.setMessageType("Product");
        amazonenvelope.setMarketplaceName(null);
        amazonenvelope.setPurgeAndReplace(PURGE_OR_REPLACE);
        JAXBContext context;
        Marshaller m=null;
        try {
            context = JAXBContext.newInstance(AmazonEnvelope.class);
            m = context.createMarshaller();
        } catch (JAXBException e) {
            e.printStackTrace();
        }


        XMLGregorianCalendar today = null;
        Calendar localCalendar = Calendar.getInstance(TimeZone.getDefault());

        int currentMonth = localCalendar.get(Calendar.MONTH);
        int currentYear = localCalendar.get(Calendar.YEAR);
        int currentDayOfMonth = localCalendar.get(Calendar.DAY_OF_MONTH);


        try {
            today = DatatypeFactory.newInstance()
            .newXMLGregorianCalendar(
                    new GregorianCalendar(currentYear,currentMonth,currentDayOfMonth));
        } catch (DatatypeConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        amazonenvelope.setEffectiveDate(today);
        List <AmazonEnvelope.Message> messages = amazonenvelope.getMessage();
        int count=0;
        itemIdsToUpdate = new ArrayList<Long>();
        for(Amazonlisted AItem:aItems){
            if (AItem.getFbdtaxCode().length()==0){
                continue;
            }
            //long itemid = AItem.getItemid();
            //if(allItemsMap.get(Long.valueOf(itemid))!=null){
            AmazonEnvelope.Message message = new AmazonEnvelope.Message();
            Product product = new Product();
            product.setSKU(AMAZON_FBD_SKU_PREFIX+String.valueOf(AItem.getItemid()));
            /*System.out.println("Amazon Item id is " + AItem);
                    System.out.println("Amazon Item id is " + AItem.getItemid());
                    System.out.println("Item is " + item);
                    System.out.println("Item id is " + item.getId());
                    System.out.println("Item color is " + item.getColor());*/
            /*if(AItem.getEan().length() > 0){
                            StandardProductID spid = new StandardProductID();
                            spid.setType("EAN");
                            spid.setValue(AItem.getEan());
                            product.setStandardProductID(spid);
                        }
                    else{
                        if(AItem.getUpc().length() > 0){
                            StandardProductID spid = new StandardProductID();
                            spid.setType("UPC");
                            spid.setValue(AItem.getUpc());
                            product.setStandardProductID(spid);
                        }
                    }*/
            StandardProductID spid = new StandardProductID();
            spid.setType("ASIN");
            spid.setValue(AItem.getAsin());
            product.setStandardProductID(spid);
            //product.setItemPackageQuantity(BigInteger.valueOf(1));
            //Product.DescriptionData descdata = new Product.DescriptionData();
            /*if(AItem.getCategory_code()==10002)
            {//Buisness Phones
                descdata.getRecommendedBrowseNode().add(BigInteger.valueOf(1389432031));
                descdata.getRecommendedBrowseNode().add(BigInteger.valueOf(1805560031));
            }
            if(AItem.getCategory_code()==10003)
            {//High End media Phones
                descdata.getRecommendedBrowseNode().add(BigInteger.valueOf(1389432031));
                descdata.getRecommendedBrowseNode().add(BigInteger.valueOf(1805560031));
            }
            if(AItem.getCategory_code()==10004)
            {//Low End media Phones
                descdata.getRecommendedBrowseNode().add(BigInteger.valueOf(1389432031));
                descdata.getRecommendedBrowseNode().add(BigInteger.valueOf(1805559031));
            }

            if(AItem.getCategory_code()==10005)
            {//Basic Phones
                descdata.getRecommendedBrowseNode().add(BigInteger.valueOf(1389432031));
                descdata.getRecommendedBrowseNode().add(BigInteger.valueOf(1805559031));
            }
            descdata.setMfrPartNumber(AItem.getPart_number());
            descdata.setBrand(AItem.getBrand());
            descdata.setAutographed(false);
            descdata.setTitle(AItem.getName()); 
            descdata.setManufacturer(AItem.getManufacturer_name());
            descdata.setIsGiftWrapAvailable(true);
            descdata.setIsGiftMessageAvailable(true);*/
            //product.setDescriptionData(descdata);
            //Product.ProductData productdata = new Product.ProductData();
            //CE ce = new CE();
            //ce.setColor(AItem.getColor());    
            //HandheldOrPDA hhd = new HandheldOrPDA();
            //CE.ProductType productype = new CE.ProductType();
            //productype.setHandheldOrPDA(hhd);
            //ce.setProductType(productype);
            //productdata.setCE(ce);
            //product.setProductData(productdata);
            product.setProductTaxCode(AItem.getFbdtaxCode());
            Random rand = new Random();
            message.setMessageID(BigInteger.valueOf(Math.abs(rand.nextInt())));
            message.setProduct(product);
            message.setOperationType("Update");
            messages.add(message);
            itemIdsToUpdate.add(AItem.getItemid());
            count++;
        }   


        try {
            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            m.marshal(amazonenvelope, file);
            m.marshal(amazonenvelope, System.out);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }


    
    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 a
            fis.getChannel().position( 0 );
            return md5Content;
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
        
 }


    
    

}