Subversion Repositories SmartDukaan

Rev

Rev 9405 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020;

import in.shop2020.model.v1.catalog.Item;
import in.shop2020.model.v1.catalog.SnapdealItem;
import in.shop2020.model.v1.inventory.InventoryService.Client;
import in.shop2020.model.v1.inventory.InventoryType;
import in.shop2020.model.v1.inventory.ItemInventory;
import in.shop2020.model.v1.inventory.SnapdealInventoryItem;
import in.shop2020.model.v1.inventory.Warehouse;
import in.shop2020.model.v1.inventory.WarehouseType;
import in.shop2020.serving.model.OrderItems;
import in.shop2020.thrift.clients.CatalogClient;
import in.shop2020.thrift.clients.InventoryClient;
import in.shop2020.thrift.clients.TransactionClient;
import inventory.Inventory;
import inventory.InventoryItems;
import inventory.SnapdealItemForInventory;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.FileEntity;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.ContentBody;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.thrift.TException;
import org.apache.thrift.transport.TTransportException;
import com.google.gson.Gson;

public class CreateSnapDealInventoryFeed {
        private static long time = System.currentTimeMillis();
        private static final String SNAPDEAL_INVENTORY_SHEET = "/home/vikram/snapdeal-inventory-"+time+".xls";
        private static Map<Long, SnapdealItemForInventory> allItemsInventoryMap = new HashMap<Long, SnapdealItemForInventory>();
        private static ArrayList<Inventory> inventoryItemList;
        static Map<Long,Long> itemIdpendingOrdersMap = new HashMap<Long,Long>();
        private static void calculateinventory(){

                CatalogClient catalogServiceClient = null;
                Map<Long,ItemInventory> availability= new HashMap<Long,ItemInventory>();
                try {
                        catalogServiceClient = new CatalogClient();
                } catch (TTransportException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = catalogServiceClient.getClient();
                try {
                        List<Item> aliveItems = catalogClient.getAllAliveItems();
                        Map<Long,Item> aliveItemsMap = new HashMap<Long,Item>(); 
                        for(in.shop2020.model.v1.catalog.Item thriftItem:aliveItems){
                                aliveItemsMap.put(thriftItem.getId(), thriftItem);

                        }
                        InventoryClient inventoryServiceClient = null;
                        try {
                                inventoryServiceClient = new InventoryClient();
                        } catch (TTransportException e) {
                                e.printStackTrace();
                        }
                        in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
                        List<in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems> ignoreItems = inventoryClient.getIgnoredWarehouseidsAndItemids();
                        availability = inventoryClient.getInventorySnapshot(0);
                        List<Warehouse> warehouses = inventoryClient.getWarehouses(WarehouseType.OURS_THIRDPARTY,null,0,0,0);
                        List<Warehouse> ours_warehouses = inventoryClient.getWarehouses(WarehouseType.OURS, InventoryType.GOOD, 0, 0, 0);
                        List<Long> thirdpartywarehouseids = new ArrayList<Long>();
                        List<Long> oursGoodWarehouse = new ArrayList<Long>();
                        for(Warehouse warehouse:warehouses){
                                thirdpartywarehouseids.add(warehouse.getId());
                        }
                        for (Warehouse warehouse:ours_warehouses){
                                oursGoodWarehouse.add(warehouse.getId());
                        }
                        long available=0;
                        long reserve=0;
                        long total_held=0;
                        long heldForSource=0;
                        double nlc=0;
                        double maxnlc=0;
                        Item thriftItem;
                        for(Inventory inventoryItem:inventoryItemList){
                                if(aliveItemsMap.get(Long.parseLong(inventoryItem.getSellerSku())) != null){
                                        thriftItem = aliveItemsMap.get(Long.parseLong(inventoryItem.getSellerSku()));   
                                }
                                else{
                                        continue;
                                }
                                available=0;
                                reserve=0;
                                total_held=0;
                                heldForSource=0;
                                nlc=0;
                                List<Warehouse> vendor_warehouses=null;
                                SnapdealItemForInventory item;
                                if(availability.get(thriftItem.getId())!=null){ 
                                        ItemInventory iteminventory = availability.get(thriftItem.getId());
                                        Map<Long,Long> itemavailability = new HashMap<Long,Long>();
                                        itemavailability = iteminventory.getAvailability();
                                        if (thriftItem.isIsWarehousePreferenceSticky() && thriftItem.getPreferredVendor()!=0){
                                                //System.out.println("Item id "+thriftItem.getId()+".Found prefered vendor and warehouse is marked sticky (Calculating availability)"+thriftItem.getPreferredVendor());                                         
                                                vendor_warehouses = inventoryClient.getWarehouses(WarehouseType.THIRD_PARTY,InventoryType.GOOD , thriftItem.getPreferredVendor(), 0, 0);
                                                vendor_warehouses.addAll(ours_warehouses);
                                                for (Warehouse warehouse:vendor_warehouses){
                                                        in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
                                                        ignoredItem.setItemId(thriftItem.getId());
                                                        ignoredItem.setWarehouseId(warehouse.getId());
                                                        if (itemavailability.get(warehouse.getId())!=null && !thirdpartywarehouseids.contains(warehouse.getId()) && !ignoreItems.contains(ignoredItem)){
                                                                try{
                                                                        nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
                                                                }
                                                                catch(TTransportException e){
                                                                        inventoryClient = inventoryServiceClient.getClient(); 
                                                                        nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
                                                                }
                                                                maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();
                                                                if(nlc !=0 && (maxnlc >= nlc)){
                                                                        total_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);
                                                                        heldForSource = heldForSource + total_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 7);
                                                                        available = available + itemavailability.get(warehouse.getId()) - total_held;
                                                                }
                                                                else{

                                                                }
                                                        }
                                                }
                                        }
                                        else{
                                                for (Map.Entry<Long,Long> entry :  itemavailability.entrySet()) {
                                                        in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
                                                        ignoredItem.setItemId(thriftItem.getId());
                                                        ignoredItem.setWarehouseId(entry.getKey());
                                                        if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){
                                                                nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());
                                                                try{
                                                                        maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();
                                                                }
                                                                catch(TTransportException e){
                                                                        catalogClient = catalogServiceClient.getClient();  
                                                                        maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();
                                                                }
                                                                if(nlc !=0 && (maxnlc >= nlc)){
                                                                        total_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
                                                                        heldForSource = heldForSource + total_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 7);
                                                                        available =  available + entry.getValue() - total_held;
                                                                }
                                                        }
                                                }
                                        }
                                        Map<Long,Long> itemreserve = new HashMap<Long,Long>();
                                        itemreserve = iteminventory.getReserved();
                                        if (thriftItem.isIsWarehousePreferenceSticky() && thriftItem.getPreferredVendor()!=0){
                                                //System.out.println("Item id "+thriftItem.getId()+".Found prefered vendor and warehouse is marked sticky (Calculating Reserve)"+thriftItem.getPreferredVendor());
                                                for (Warehouse warehouse:vendor_warehouses){
                                                        in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
                                                        ignoredItem.setItemId(thriftItem.getId());
                                                        ignoredItem.setWarehouseId(warehouse.getId());
                                                        if (itemreserve.get(warehouse.getId())!=null && !thirdpartywarehouseids.contains(warehouse.getId()) && !ignoreItems.contains(warehouse.getId())){
                                                                nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
                                                                maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();
                                                                if(nlc !=0 && (maxnlc >= nlc)){
                                                                        reserve = reserve + itemreserve.get(warehouse.getId());
                                                                }
                                                        }
                                                }
                                        }else{
                                                for (Map.Entry<Long,Long> entry : itemreserve.entrySet()) {
                                                        in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
                                                        ignoredItem.setItemId(thriftItem.getId());
                                                        ignoredItem.setWarehouseId(entry.getKey());
                                                        if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){
                                                                nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());
                                                                maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();
                                                                if(nlc !=0 && (maxnlc >= nlc)){
                                                                        reserve =  reserve + entry.getValue();
                                                                }
                                                        }
                                                        else{
                                                                //System.out.println("skipping inventory for warehouse id " + entry.getKey());
                                                        }
                                                }
                                        }
                                        item= new SnapdealItemForInventory(thriftItem.getId(),available,reserve,heldForSource,thriftItem.getHoldInventory(),thriftItem.getDefaultInventory(),thriftItem.isRisky(),thriftItem.getItemStatus());
                                }
                                else{
                                        item = new SnapdealItemForInventory(thriftItem.getId(),0,0,0,thriftItem.getHoldInventory(),thriftItem.getDefaultInventory(),thriftItem.isRisky(),thriftItem.getItemStatus());
                                }

                                //System.out.println(" Item details are " + thriftItem.getId() +" " + available + " " + reserve + " " + thriftItem.getHoldInventory() + " "+ thriftItem.getDefaultInventory() + " " + thriftItem.isRisky());
                                //System.out.println("+++++++++++++++++++++++");
                                allItemsInventoryMap.put(thriftItem.getId(),item);

                        }

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

        }
        private static void fetchinventoryfromsnapdeal() throws UnsupportedEncodingException{
                HttpClient client = new DefaultHttpClient();
                HttpPost post = new HttpPost("http://seller.snapdeal.com/login_security_check?spring-security-redirect=http://seller.snapdeal.com/inventory&");
                HttpGet get; 
                BufferedReader rd= null;
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("j_username",
                "khushal.bhatia@saholic.com"));
                nameValuePairs.add(new BasicNameValuePair("j_password",
                "sonline"));
                post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));
                HttpResponse response = null;
                try {
                        response = client.execute(post);
                } catch (ClientProtocolException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                try {
                        rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                } catch (IllegalStateException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                }
                String line = "";
                try {
                        while ((line = rd.readLine()) != null) {
                                System.out.println(line);
                        }
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                int i = 1;
                int items=0;
                long time = System.currentTimeMillis();
                Gson gson = new Gson();
                Client inventoryClient = null;
                try {
                        inventoryClient = new InventoryClient().getClient();
                } catch (TTransportException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                in.shop2020.model.v1.order.TransactionService.Client transactionClient = null;
                try {
                        transactionClient = new TransactionClient().getClient();
                } catch (TTransportException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                SnapdealInventoryItem inventory_item = null;
                long created_orders = 0;
                long pending_orders;
                inventoryItemList = new ArrayList<Inventory>();
                while(true){
                        time = System.currentTimeMillis();
                        get = new HttpGet("http://seller.snapdeal.com/inventory/search?gridType=normal&_search=false&nd="+time+"&rows="+30+"&page="+i+"&sidx=&sord=asc");
                        try {
                                response = client.execute(get);
                        } catch (ClientProtocolException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                        try {
                                rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                        } catch (IllegalStateException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                        InventoryItems inventoryitems = (InventoryItems) gson.fromJson(rd, InventoryItems.class);
                        if(inventoryitems.getRows().size()!=0){
                                for(Inventory inventory : inventoryitems.getRows()){
                                        /*System.out.println("SUPC " + inventory.getSupc());
                                                System.out.println("SKU " + inventory.getSellerSku());
                                                System.out.println("Product Name " + inventory.getProductName());
                                                System.out.println("Quantity " + inventory.getAvailableInventory());
                                                System.out.println("Pending " + inventory.getPendingAvailableInventory());
                                                System.out.println("Status " + inventory.isPendingUpdate());
                                         */
                                        pending_orders=0;
                                        try{
                                                inventory_item = inventoryClient.getSnapdealInventoryForItem(Long.parseLong(inventory.getSellerSku()));
                                        }
                                        catch(NumberFormatException nfe)  
                                        {  
                                                continue;  
                                        } catch (TException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }  
                                        if(inventory_item.getItem_id()!=0){
                                                if(inventory.getAvailableInventory()!=inventory_item.getAvailability()){
                                                        try {
                                                                created_orders = transactionClient.getOrdersCreatedAfterTimestampForSource(inventory_item.getLastUpdatedOnSnapdeal(), 7, Long.parseLong(inventory.getSellerSku()));
                                                        } catch (NumberFormatException e) {
                                                                // TODO Auto-generated catch block
                                                                e.printStackTrace();
                                                        } catch (TException e) {
                                                                // TODO Auto-generated catch block
                                                                e.printStackTrace();
                                                        }
                                                }
                                                if(created_orders == (inventory_item.getAvailability() - inventory.getAvailableInventory())){
                                                }
                                                else{
                                                        pending_orders = (inventory_item.getAvailability() - inventory.getAvailableInventory() - created_orders);
                                                }
                                        }
                                        itemIdpendingOrdersMap.put(Long.parseLong(inventory.getSellerSku()),pending_orders);
                                        inventoryItemList.add(inventory);
                                        items++;
                                }
                        }
                        else{
                                System.out.println("Fetched  " + items);
                                break;
                        }
                        i++;
                }

        }

        @SuppressWarnings("deprecation")
        public static void main(String[] args) throws NumberFormatException, TException, ClientProtocolException, IOException {
                fetchinventoryfromsnapdeal();
                calculateinventory();
                in.shop2020.model.v1.catalog.CatalogService.Client catalogServiceClient = null;
                SnapdealItem snapdealitem = null;
                try {
                        catalogServiceClient = new CatalogClient().getClient();
                } catch (TTransportException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                Client inventoryClient = new InventoryClient().getClient();
                FileInputStream fis = new FileInputStream("/home/vikram/Desktop/SellerInventory.xls");
            Workbook hwb = new HSSFWorkbook(fis);
            Sheet sheet = hwb.getSheetAt(0);
            Row row;
                int iterator=1;
                long availability,reserve,defaultinventory,holdinventory,actualavailability,heldorders;
                SnapdealItemForInventory  inventoryItem;
                for(Inventory inventory:inventoryItemList){
                        System.out.println(inventory.getSupc()+" "+inventory.getSellerSku()+ " " +inventory.getProductName()+" "+inventory.getAvailableInventory()+" "+inventory.isLive()+" "+itemIdpendingOrdersMap.get(Long.parseLong(inventory.getSellerSku())));
                        try{
                                snapdealitem = catalogServiceClient.getSnapdealItem(Long.parseLong(inventory.getSellerSku()));
                        }
                        catch(TTransportException e){
                                catalogServiceClient = new CatalogClient().getClient();
                                snapdealitem = catalogServiceClient.getSnapdealItem(Long.parseLong(inventory.getSellerSku()));
                        }
                        if(snapdealitem.getItem_id()!=0 && snapdealitem.isIsListedOnSnapdeal() && !snapdealitem.isSuppressInventoryFeed()){
                                inventoryItem = allItemsInventoryMap.get(Long.parseLong(inventory.getSellerSku()));
                                if(inventoryItem==null){
                                        continue;
                                }
                                availability = inventoryItem.getAvailability(); 
                                reserve = inventoryItem.getReserve();
                                defaultinventory = inventoryItem.getDefaultInventory();
                                holdinventory = inventoryItem.getHoldInventory();
                                actualavailability = availability - reserve;
                                heldorders = itemIdpendingOrdersMap.get(Long.parseLong(inventory.getSellerSku()));
                                row =   sheet.getRow((short) iterator);
                                row.getCell((short) 0).setCellValue(inventory.getSupc());
                                row.getCell((short) 1).setCellValue(inventory.getSellerSku());
                                row.getCell((short) 2).setCellValue(inventory.getProductName());
                                row.getCell((short) 3).setCellValue(inventory.getAvailableInventory());
                                long inventoryForRiskyItem = actualavailability - holdinventory;
                                if(inventoryItem.getRisky()){
                                        if(inventoryForRiskyItem > 0){
                                                if((Math.round(2/3*inventoryForRiskyItem) - heldorders + inventoryItem.getHeldForSource()) > 0){
                                                        row.getCell((short) 4).setCellValue(Math.round(2/3*inventoryForRiskyItem) - heldorders + inventoryItem.getHeldForSource());
                                                }
                                                else{
                                                        row.getCell((short) 4).setCellValue(0);
                                                }
                                        }
                                        else{
                                                row.getCell((short) 4).setCellValue(0);
                                        }
                                }
                                else{
                                        if(actualavailability > defaultinventory){
                                                if((Math.round(2/3*actualavailability) +  inventoryItem.getHeldForSource()) > heldorders){
                                                        row.getCell((short) 4).setCellValue(Math.round(2/3*actualavailability) +  inventoryItem.getHeldForSource() - heldorders);
                                                }
                                                else{
                                                        row.getCell((short) 4).setCellValue(0);
                                                }
                                        }
                                        else{
                                                if(defaultinventory > heldorders){
                                                        row.getCell((short) 4).setCellValue(defaultinventory - heldorders);
                                                }
                                                else{
                                                        row.getCell((short) 4).setCellValue(0);
                                                }
                                        }
                                }
                                if(inventory.isLive()){
                                        row.getCell((short) 5).setCellValue("Yes");
                                }
                                else{
                                        row.getCell((short) 5).setCellValue("No");
                                }
                                iterator++;
                        }
                        else{
                                continue;
                        }
                }
                FileOutputStream fileOut = null;
                fis.close();
                try {
                        fileOut = new FileOutputStream(SNAPDEAL_INVENTORY_SHEET);
                } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                try {
                        hwb.write(fileOut);
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                HttpClient client = new DefaultHttpClient();
                HttpPost post = new HttpPost("http://seller.snapdeal.com/login_security_check?spring-security-redirect=http://seller.snapdeal.com/inventory&");
                BufferedReader rd= null;
                /*List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("j_username",
                "khushal.bhatia@saholic.com"));
                nameValuePairs.add(new BasicNameValuePair("j_password",
                "sonline"));
                post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));*/
                HttpResponse response = null;
                String line;
/*              try {
                        response = client.execute(post);
                        rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                        while ((line = rd.readLine()) != null) {
                                System.out.println(line);
                        }

                } catch (ClientProtocolException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
*/              post = new HttpPost("http://seller.snapdeal.com/inventory/upload");
                File file = new File("/home/vikram/snapdeal-inventory-1389608325312.xls");
                MultipartEntity mpEntity = new MultipartEntity();
            ContentBody cbFile = new FileBody(file,"application/vnd.ms-excel");
            mpEntity.addPart("file", cbFile);
            post.setEntity(mpEntity);
                response = client.execute(post);
                try {
                        rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                } catch (IllegalStateException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                }
                line = "";
                try {
                        while ((line = rd.readLine()) != null) {
                                System.out.println(line);
                        }
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

        }

}