Subversion Repositories SmartDukaan

Rev

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

package in.shop2020.catalog.dashboard.server;

import in.shop2020.catalog.dashboard.client.CatalogService;
import in.shop2020.catalog.dashboard.shared.Item;
import in.shop2020.model.v1.catalog.InventoryService;
import in.shop2020.thrift.clients.CatalogServiceClient;

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

@SuppressWarnings("serial")
public class CatalogServiceImpl extends RemoteServiceServlet implements CatalogService {

    public List<Item> getAllItems(){
        List<Item> itemList = new ArrayList<Item>();
        
        try {
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
            
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getAllItems(true);
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems)
                itemList.add(getItemFromThriftItem(thriftItem));
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return itemList;
    }
    
    public List<Item> getBestDeals(){
        List<Item> itemList = new ArrayList<Item>();
        
        try {
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
            
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getBestDeals();
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems)
                itemList.add(getItemFromThriftItem(thriftItem));
        } catch(Exception e){
            e.printStackTrace();
        }
        
        return itemList;
    }
    
    public List<Item> getBestSellers(){
        List<Item> itemList = new ArrayList<Item>();
        
        try {
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
            
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getBestSellers();
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems)
                itemList.add(getItemFromThriftItem(thriftItem));
        } catch(Exception e){
            e.printStackTrace();
        }
        
        return itemList;        
    }
    
    public List<Item> getLatestArrivals(){
        List<Item> itemList = new ArrayList<Item>();
        
        try {
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
            
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getLatestArrivals();
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems)
                itemList.add(getItemFromThriftItem(thriftItem));
        } catch(Exception e){
            e.printStackTrace();
        }
        
        return itemList;
    }
    
    public Item getItem(long itemId){
        try{
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
            in.shop2020.model.v1.catalog.Item thriftItem = catalogClient.getItem(itemId);
            return getItemFromThriftItem(thriftItem);
        }catch(Exception e){
            // Oops! We didn't receive the details. We should let the user know
            // that the catalog service is currently unavailable.
            e.printStackTrace();
        }
        return null;
    }
    
    public void reduceReservationCount(long itemId, long warehouseId, double quantity){
        GWT.log("Got a call to reduce the reservation count for item " + itemId + " and warehouse " + warehouseId);
        try{
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
            catalogClient.reduceReservationCount(itemId, warehouseId, quantity);
        }catch(Exception e){
            // TODO: Oops! We couldn't reduce the item reservation count. This will
            // result in underestimation of inventory stock. Should be corrected
            // periodically.
            e.printStackTrace();
        }
    }
    
    private Item getItemFromThriftItem(in.shop2020.model.v1.catalog.Item thriftItem){
        Item item = new Item(thriftItem.getId(),
                thriftItem.getProductGroup(),
                thriftItem.getBrand(),
                thriftItem.getModelNumber(),
                thriftItem.getModelName(),
                thriftItem.getColor(),
                thriftItem.getCategory(),
                thriftItem.getComments(),
                thriftItem.getCatalogItemId(),
                thriftItem.getFeatureId(),
                thriftItem.getFeatureDescription(),
                //thriftItem.getItemInventory(),
                thriftItem.getMrp(),
                thriftItem.getMop(),
                thriftItem.getSellingPrice(),
                thriftItem.getDealerPrice(),
                thriftItem.getWeight(),
                thriftItem.getAddedOn(),
                thriftItem.getStartDate(),
                thriftItem.getRetireDate(),
                thriftItem.getUpdatedOn(),
                //thriftItem.getItemStatus(),
                thriftItem.getOtherInfo(),
                thriftItem.getBestDealText(),
                thriftItem.getBestDealValue());
        return item;
    }

    @Override
    public void updatePrice(long itemId, double sellingPrice) {
        GWT.log("Got a call to update price of " + itemId + ", selling price " + sellingPrice);
        try{
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
            //TODO: Implement update price method in service
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}