Subversion Repositories SmartDukaan

Rev

Rev 2372 | Rev 2427 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1961 ankur.sing 1
package in.shop2020.catalog.dashboard.server;
2
 
3
import in.shop2020.catalog.dashboard.client.CatalogService;
4
import in.shop2020.catalog.dashboard.shared.Item;
2068 ankur.sing 5
import in.shop2020.catalog.dashboard.shared.ItemsComparator;
2119 ankur.sing 6
import in.shop2020.catalog.dashboard.shared.VendorItemMapping;
7
import in.shop2020.catalog.dashboard.shared.VendorPricings;
2378 ankur.sing 8
import in.shop2020.config.ConfigException;
1961 ankur.sing 9
import in.shop2020.model.v1.catalog.InventoryService;
2105 ankur.sing 10
import in.shop2020.model.v1.catalog.status;
1961 ankur.sing 11
import in.shop2020.thrift.clients.CatalogServiceClient;
2378 ankur.sing 12
import in.shop2020.thrift.clients.config.ConfigClient;
2119 ankur.sing 13
import in.shop2020.utils.CategoryManager;
2359 ankur.sing 14
import in.shop2020.utils.ConfigClientKeys;
1961 ankur.sing 15
 
2359 ankur.sing 16
import java.io.ByteArrayOutputStream;
17
import java.io.IOException;
1961 ankur.sing 18
import java.util.ArrayList;
2105 ankur.sing 19
import java.util.Calendar;
2068 ankur.sing 20
import java.util.Collections;
1992 ankur.sing 21
import java.util.HashMap;
1961 ankur.sing 22
import java.util.List;
1992 ankur.sing 23
import java.util.Map;
2359 ankur.sing 24
import java.util.Map.Entry;
1961 ankur.sing 25
 
2359 ankur.sing 26
import javax.servlet.ServletOutputStream;
27
import javax.servlet.http.HttpServletResponse;
28
 
1961 ankur.sing 29
import com.google.gwt.core.client.GWT;
30
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
31
 
32
@SuppressWarnings("serial")
33
public class CatalogServiceImpl extends RemoteServiceServlet implements CatalogService {
34
 
35
    public List<Item> getAllItems(){
36
        List<Item> itemList = new ArrayList<Item>();
2359 ankur.sing 37
 
1961 ankur.sing 38
        try {
39
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
40
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 41
 
2119 ankur.sing 42
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getAllItems(false);
2359 ankur.sing 43
 
2119 ankur.sing 44
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
45
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
46
            }
47
        } catch (Exception e) {
48
            e.printStackTrace();
49
        }
50
        Collections.sort(itemList, new ItemsComparator());
51
        return itemList;
52
    }
2208 ankur.sing 53
 
2359 ankur.sing 54
    public List<Item> getAllActiveItems(){
2208 ankur.sing 55
        List<Item> itemList = new ArrayList<Item>();
2359 ankur.sing 56
 
2208 ankur.sing 57
        try {
58
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
59
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 60
 
61
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getAllItems(true);
62
 
2208 ankur.sing 63
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
2359 ankur.sing 64
                List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
65
                List<in.shop2020.model.v1.catalog.VendorItemMapping> vim = catalogClient.getVendorItemMappings(thriftItem.getId());
66
                itemList.add(getItemFromThriftItem(thriftItem, vip, vim));
2208 ankur.sing 67
            }
68
        } catch (Exception e) {
69
            e.printStackTrace();
70
        }
71
        Collections.sort(itemList, new ItemsComparator());
72
        return itemList;
73
    }
2359 ankur.sing 74
 
75
    @Override
76
    public List<Item> getAllPhasedOutItems(){
77
        return getItemsByStatus(status.PHASED_OUT);
78
    }
79
 
80
    @Override
2208 ankur.sing 81
    public List<Item> getAllPausedItems(){
2359 ankur.sing 82
        return getItemsByStatus(status.PAUSED);
2208 ankur.sing 83
    }
2359 ankur.sing 84
 
85
    @Override
86
    public List<Item> getAllInProcessItems() {
87
        return getItemsByStatus(status.IN_PROCESS);
88
    }
89
 
90
    @Override
91
    public List<Item> getAllContentCompleteItems() {
92
        return getItemsByStatus(status.CONTENT_COMPLETE);
93
    }
94
 
95
    public List<Item> getBestDeals(){
2119 ankur.sing 96
        List<Item> itemList = new ArrayList<Item>();
97
        try {
98
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
99
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 100
 
101
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getBestDeals();
1992 ankur.sing 102
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
2105 ankur.sing 103
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
1992 ankur.sing 104
            }
2359 ankur.sing 105
        } catch(Exception e){
1961 ankur.sing 106
            e.printStackTrace();
107
        }
2068 ankur.sing 108
        Collections.sort(itemList, new ItemsComparator());
1961 ankur.sing 109
        return itemList;
110
    }
111
 
2359 ankur.sing 112
    @Override
113
    public List<Item> getRiskyItems() {
1961 ankur.sing 114
        List<Item> itemList = new ArrayList<Item>();
115
        try {
116
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
117
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 118
 
119
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getItemsByRiskyFlag();
1992 ankur.sing 120
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
2105 ankur.sing 121
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
1992 ankur.sing 122
            }
1961 ankur.sing 123
        } catch(Exception e){
124
            e.printStackTrace();
125
        }
2068 ankur.sing 126
        Collections.sort(itemList, new ItemsComparator());
1961 ankur.sing 127
        return itemList;
128
    }
2359 ankur.sing 129
 
1961 ankur.sing 130
    public List<Item> getBestSellers(){
131
        List<Item> itemList = new ArrayList<Item>();
2359 ankur.sing 132
 
1961 ankur.sing 133
        try {
134
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
135
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 136
 
1961 ankur.sing 137
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getBestSellers();
1992 ankur.sing 138
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
2105 ankur.sing 139
                //List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
140
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
1992 ankur.sing 141
            }
1961 ankur.sing 142
        } catch(Exception e){
143
            e.printStackTrace();
144
        }
2068 ankur.sing 145
        Collections.sort(itemList, new ItemsComparator());
1961 ankur.sing 146
        return itemList;        
147
    }
2359 ankur.sing 148
 
1961 ankur.sing 149
    public List<Item> getLatestArrivals(){
150
        List<Item> itemList = new ArrayList<Item>();
2359 ankur.sing 151
 
1961 ankur.sing 152
        try {
153
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
154
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 155
 
1961 ankur.sing 156
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getLatestArrivals();
1992 ankur.sing 157
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
2105 ankur.sing 158
                //List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
159
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
1992 ankur.sing 160
            }
1961 ankur.sing 161
        } catch(Exception e){
162
            e.printStackTrace();
163
        }
2068 ankur.sing 164
        Collections.sort(itemList, new ItemsComparator());
1961 ankur.sing 165
        return itemList;
166
    }
2359 ankur.sing 167
 
1961 ankur.sing 168
    public Item getItem(long itemId){
169
        try{
170
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
171
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
172
            in.shop2020.model.v1.catalog.Item thriftItem = catalogClient.getItem(itemId);
2359 ankur.sing 173
 
1992 ankur.sing 174
            List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
2119 ankur.sing 175
            List<in.shop2020.model.v1.catalog.VendorItemMapping> vim = catalogClient.getVendorItemMappings(thriftItem.getId());
176
            return getItemFromThriftItem(thriftItem, vip, vim);
1961 ankur.sing 177
        }catch(Exception e){
178
            e.printStackTrace();
179
        }
180
        return null;
181
    }
2359 ankur.sing 182
 
2105 ankur.sing 183
    private Item getItemFromThriftItem(in.shop2020.model.v1.catalog.Item thriftItem, 
184
            List<in.shop2020.model.v1.catalog.VendorItemPricing> tVendorPricings, 
185
            List<in.shop2020.model.v1.catalog.VendorItemMapping> tVendorMappings){
2359 ankur.sing 186
 
187
        Map<String, VendorItemMapping> vItemMap = new HashMap<String, VendorItemMapping>();
2119 ankur.sing 188
        VendorItemMapping vItemMapping;
2105 ankur.sing 189
        if(tVendorMappings != null) {
2119 ankur.sing 190
            for(in.shop2020.model.v1.catalog.VendorItemMapping vim : tVendorMappings) {
191
                vItemMapping = new VendorItemMapping();
192
                vItemMapping.setVendorId(vim.getVendorId());
193
                vItemMapping.setItemKey(vim.getItemKey());
2359 ankur.sing 194
                vItemMap.put(vItemMapping.getVendorId() + Item.KEY_SEPARATOR + vim.getItemKey(), vItemMapping);
1992 ankur.sing 195
            }
196
        }
2359 ankur.sing 197
 
2119 ankur.sing 198
        // TODO: For testing. Remove this code before moving to production.
199
        /* 
200
        Map<Long, VendorItemMapping> vItemMap = new HashMap<Long, VendorItemMapping>();
201
        vItemMap.put(1L, new VendorItemMapping(1, "Item Key Test 1"));
202
        vItemMap.put(1L, new VendorItemMapping(1, "Item Key Test 2"));
2359 ankur.sing 203
         */
204
 
2119 ankur.sing 205
        Map<Long, VendorPricings> vendorPricingMap = new HashMap<Long, VendorPricings>();
206
        VendorPricings vPricings;
2105 ankur.sing 207
        if(tVendorPricings != null) {
2119 ankur.sing 208
            for(in.shop2020.model.v1.catalog.VendorItemPricing vip : tVendorPricings) {
209
                vPricings = new VendorPricings();
210
                vPricings.setVendorId(vip.getVendorId());
211
                vPricings.setMop(vip.getMop());
212
                vPricings.setDealerPrice(vip.getDealerPrice());
213
                vPricings.setTransferPrice(vip.getTransferPrice());
214
                vendorPricingMap.put(vPricings.getVendorId(), vPricings);
2105 ankur.sing 215
            }
216
        }
2359 ankur.sing 217
 
1961 ankur.sing 218
        Item item = new Item(thriftItem.getId(),
219
                thriftItem.getProductGroup(),
220
                thriftItem.getBrand(),
221
                thriftItem.getModelNumber(),
222
                thriftItem.getModelName(),
223
                thriftItem.getColor(),
2119 ankur.sing 224
                //thriftItem.getCategory(),
225
                CategoryManager.getCategoryManager().getCategoryLabel(thriftItem.getCategory()),
2126 ankur.sing 226
                thriftItem.getCategory(),
1961 ankur.sing 227
                thriftItem.getComments(),
228
                thriftItem.getCatalogItemId(),
229
                thriftItem.getFeatureId(),
230
                thriftItem.getFeatureDescription(),
2126 ankur.sing 231
                thriftItem.isSetMrp() ? thriftItem.getMrp() : -1,
1961 ankur.sing 232
                thriftItem.getMop(),
2126 ankur.sing 233
                thriftItem.isSetSellingPrice() ? thriftItem.getSellingPrice() : -1,
1961 ankur.sing 234
                thriftItem.getDealerPrice(),
2126 ankur.sing 235
                thriftItem.isSetWeight() ? thriftItem.getWeight() : -1,
1961 ankur.sing 236
                thriftItem.getAddedOn(),
237
                thriftItem.getStartDate(),
238
                thriftItem.getRetireDate(),
239
                thriftItem.getUpdatedOn(),
1992 ankur.sing 240
                thriftItem.getItemStatus().name(),
2126 ankur.sing 241
                thriftItem.getItemStatus().getValue(),
2359 ankur.sing 242
                thriftItem.getStatus_description(),
1961 ankur.sing 243
                thriftItem.getOtherInfo(),
244
                thriftItem.getBestDealText(),
2126 ankur.sing 245
                thriftItem.isSetBestDealValue() ? thriftItem.getBestDealValue() : -1,
246
                thriftItem.isSetBestSellingRank() ? thriftItem.getBestSellingRank() : -1,
2066 ankur.sing 247
                thriftItem.isDefaultForEntity(),
2252 ankur.sing 248
                thriftItem.isRisky(),
1992 ankur.sing 249
                (thriftItem.getItemInventory() != null ? thriftItem.getItemInventory().getAvailability() : null),
2119 ankur.sing 250
                vendorPricingMap,
2359 ankur.sing 251
                vItemMap);
1961 ankur.sing 252
        return item;
253
    }
254
 
255
    @Override
1992 ankur.sing 256
    public boolean updateItem(Item item) {
257
        GWT.log("Got a call to update item, Item Id: " + item.getId());
1961 ankur.sing 258
        try{
259
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
260
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 261
 
1992 ankur.sing 262
            in.shop2020.model.v1.catalog.Item tItem = catalogClient.getItem(item.getId());
2126 ankur.sing 263
            setThriftItemParams(tItem, item);
2359 ankur.sing 264
            //          tItem.setAddedOn(item.getAddedOn());
265
 
266
            //          tItem.setCatalogItemId(item.getCatalogItemId());
267
            //          tItem.setCategory(item.getCategory());
268
 
269
            //          tItem.setFeatureId(item.getFeatureId());
270
            //          tItem.setFeatureDescription(item.getFeatureDescription());
271
 
2105 ankur.sing 272
            long rItemId;
273
            if((rItemId = catalogClient.updateItem(tItem)) != item.getId()) {
274
                GWT.log("Error updating item, returned Item Id: " + rItemId);
275
                return false;
276
            }
277
            GWT.log("Item updated successfully, Item Id: " + item.getId());
2359 ankur.sing 278
 
279
            Map<String, VendorItemMapping> vendorMappings = item.getVendorKeysMap();
2119 ankur.sing 280
            if(vendorMappings != null && !vendorMappings.isEmpty()) {
281
                in.shop2020.model.v1.catalog.VendorItemMapping tVendorMapping;
2359 ankur.sing 282
 
283
                for(Entry<String, VendorItemMapping> e : vendorMappings.entrySet()) {
2119 ankur.sing 284
                    tVendorMapping = new in.shop2020.model.v1.catalog.VendorItemMapping();
2359 ankur.sing 285
                    VendorItemMapping v = e.getValue();
2119 ankur.sing 286
                    tVendorMapping.setVendorId(v.getVendorId());
287
                    tVendorMapping.setItemKey(v.getItemKey());
288
                    tVendorMapping.setItemId(item.getId());
289
                    tVendorMapping.setVendorCategory(item.getVendorCategory());
2359 ankur.sing 290
                    catalogClient.addVendorItemMapping(e.getKey().substring(e.getKey().indexOf(Item.KEY_SEPARATOR)+1), tVendorMapping);
2119 ankur.sing 291
                    GWT.log("VendorItemMapping updated. " + tVendorMapping.getVendorId() + ", " + tVendorMapping.getItemId() + ", " +
292
                            tVendorMapping.getItemKey() + ", " + tVendorMapping.getVendorCategory());
293
                }
294
            }
2359 ankur.sing 295
 
2119 ankur.sing 296
            Map<Long, VendorPricings> vendorPricings = item.getVendorPricesMap();
297
            if(vendorPricings != null && !vendorPricings.isEmpty()) {
2105 ankur.sing 298
                in.shop2020.model.v1.catalog.VendorItemPricing tVendorPricing;
2119 ankur.sing 299
                for(VendorPricings v : vendorPricings.values()) {
300
                    tVendorPricing = new in.shop2020.model.v1.catalog.VendorItemPricing();
2105 ankur.sing 301
                    tVendorPricing.setVendorId(v.getVendorId());
302
                    tVendorPricing.setItemId(item.getId());
303
                    tVendorPricing.setMop(v.getMop());
304
                    tVendorPricing.setTransferPrice(v.getTransferPrice());
305
                    tVendorPricing.setDealerPrice(v.getDealerPrice());
306
                    catalogClient.addVendorItemPricing(tVendorPricing);
307
                    GWT.log("VendorItemPricing updated. " + tVendorPricing.getVendorId() + ", " + tVendorPricing.getItemId() + ", " +
308
                            tVendorPricing.getMop() + ", " + tVendorPricing.getTransferPrice() + ", " + tVendorPricing.getDealerPrice());
309
                }
310
            }
2359 ankur.sing 311
 
2105 ankur.sing 312
        }catch(Exception e){
313
            e.printStackTrace();
314
        }
315
        return true;
1961 ankur.sing 316
    }
2359 ankur.sing 317
 
318
 
2066 ankur.sing 319
    @Override
320
    public Map<Long, String> getAllVendors() {
321
        Map<Long, String> vendorMap = new HashMap<Long, String>();
322
        try {
323
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
324
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 325
 
2066 ankur.sing 326
            List<in.shop2020.model.v1.catalog.Vendor> vendors = catalogClient.getAllVendors();
2359 ankur.sing 327
 
2066 ankur.sing 328
            for(in.shop2020.model.v1.catalog.Vendor v : vendors) {
329
                vendorMap.put(v.getId(), v.getName());
330
            }
331
        } catch (Exception e) {
332
            e.printStackTrace();
333
        }
334
        return vendorMap;
335
    }
336
 
337
    @Override
338
    public Map<Long, String> getAllWarehouses() {
339
        Map<Long, String> warehouseMap = new HashMap<Long, String>();
340
        try {
341
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
342
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 343
 
2066 ankur.sing 344
            List<in.shop2020.model.v1.catalog.Warehouse> warehouses = catalogClient.getAllWarehouses(true);
2359 ankur.sing 345
 
2066 ankur.sing 346
            for(in.shop2020.model.v1.catalog.Warehouse w : warehouses) {
347
                warehouseMap.put(w.getId(), w.getDisplayName());
348
            }
349
        } catch (Exception e) {
350
            e.printStackTrace();
351
        }
352
        return warehouseMap;
353
    }
2105 ankur.sing 354
 
355
    @Override
356
    public long addItem(Item item) {
357
        long itemId = 0;
358
        try {
359
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
360
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2126 ankur.sing 361
 
2359 ankur.sing 362
 
2105 ankur.sing 363
            in.shop2020.model.v1.catalog.Item tItem = new in.shop2020.model.v1.catalog.Item();
2126 ankur.sing 364
            setThriftItemParams(tItem, item);
2105 ankur.sing 365
            itemId = catalogClient.addItem(tItem);
366
 
2119 ankur.sing 367
            Map<Long, VendorPricings> vendorPricings = item.getVendorPricesMap();
368
            if(vendorPricings != null && !vendorPricings.isEmpty()) {
2105 ankur.sing 369
                in.shop2020.model.v1.catalog.VendorItemPricing tVendorPricing;
2119 ankur.sing 370
                for(VendorPricings v : vendorPricings.values()) {
371
                    tVendorPricing = new in.shop2020.model.v1.catalog.VendorItemPricing();
372
                    tVendorPricing.setVendorId(v.getVendorId());
373
                    tVendorPricing.setItemId(itemId);
374
                    tVendorPricing.setMop(v.getMop());
375
                    tVendorPricing.setTransferPrice(v.getTransferPrice());
376
                    tVendorPricing.setDealerPrice(v.getDealerPrice());
377
                    catalogClient.addVendorItemPricing(tVendorPricing);
378
                }
379
            }
2359 ankur.sing 380
 
381
            Map<String, VendorItemMapping> vendorKeysMap = item.getVendorKeysMap();
2119 ankur.sing 382
            if(vendorKeysMap != null && !vendorKeysMap.isEmpty()) {
2105 ankur.sing 383
                in.shop2020.model.v1.catalog.VendorItemMapping tVendorMapping;
2359 ankur.sing 384
                for(Entry<String, VendorItemMapping> e : vendorKeysMap.entrySet()) {
2119 ankur.sing 385
                    tVendorMapping = new in.shop2020.model.v1.catalog.VendorItemMapping();
2359 ankur.sing 386
                    VendorItemMapping v = e.getValue();
2105 ankur.sing 387
                    tVendorMapping.setVendorId(v.getVendorId());
388
                    tVendorMapping.setItemKey(v.getItemKey());
389
                    tVendorMapping.setItemId(itemId);
390
                    tVendorMapping.setVendorCategory(item.getVendorCategory());
2359 ankur.sing 391
                    catalogClient.addVendorItemMapping(e.getKey().substring(e.getKey().indexOf(Item.KEY_SEPARATOR)+1), tVendorMapping);
2105 ankur.sing 392
                }
393
            }
394
        } catch (Exception e) {
395
            e.printStackTrace();
396
        }
397
        return itemId;
398
    }
2119 ankur.sing 399
 
400
    @Override
401
    public long checkSimilarItem(String productGroup, String brand, String modelNumber, String color) {
2359 ankur.sing 402
 
2119 ankur.sing 403
        try {
404
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
405
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
406
            return catalogClient.checkSimilarItem(productGroup, brand, modelNumber, color);
407
        } catch (Exception e) {
408
            // TODO Auto-generated catch block
409
            e.printStackTrace();
410
        }
411
        return 0;
412
    }
2359 ankur.sing 413
 
2126 ankur.sing 414
    private void setThriftItemParams(in.shop2020.model.v1.catalog.Item tItem, Item item) {
415
        tItem.setId(tItem.getId());
416
        tItem.setProductGroup(item.getProductGroup());
417
        tItem.setBrand(item.getBrand());
418
        tItem.setModelName(item.getModelName());
419
        tItem.setModelNumber(item.getModelNumber());
420
        tItem.setColor(item.getColor());
2359 ankur.sing 421
 
422
        tItem.setStatus_description(item.getItemStatusDesc());
2126 ankur.sing 423
        tItem.setComments(item.getComments());
2359 ankur.sing 424
 
2126 ankur.sing 425
        if(item.getMrp() != -1) {
426
            tItem.setMrp(item.getMrp());
427
        } else {
428
            tItem.setMrpIsSet(false);
429
        }
430
        if(item.getSellingPrice() != -1) {
431
            tItem.setSellingPrice(item.getSellingPrice());
432
        } else {
433
            tItem.setSellingPriceIsSet(false);
434
        }
435
        if(item.getWeight() != -1) {
436
            tItem.setWeight(item.getWeight());
437
        } else {
438
            tItem.setWeightIsSet(false);
439
        }
2359 ankur.sing 440
 
2126 ankur.sing 441
        tItem.setMop(item.getMop());
442
        tItem.setDealerPrice(item.getDealerPrice());
443
        tItem.setTransferPrice(item.getTransferPrice());
444
 
445
        tItem.setBestDealText(item.getBestDealsText());
446
        if(item.getBestDealsValue() != -1) {
447
            tItem.setBestDealValue(item.getBestDealsValue());
448
        } else {
449
            tItem.setBestDealValueIsSet(false);
450
        }
451
        if(item.getBestSellingRank() != -1) {
452
            tItem.setBestSellingRank(item.getBestSellingRank());
453
        } else {
454
            tItem.setBestSellingRankIsSet(false);
455
        }
456
        tItem.setDefaultForEntity(item.isDefaultForEntity());
2252 ankur.sing 457
        tItem.setRisky(item.isRisky());
2359 ankur.sing 458
 
2126 ankur.sing 459
        tItem.setStartDate(item.getStartDate());
460
        tItem.setUpdatedOn(Calendar.getInstance().getTimeInMillis());
461
        tItem.setRetireDate(item.getRetireDate());
462
        tItem.setHotspotCategory(item.getVendorCategory());
463
    }
464
 
465
    @Override
466
    public void pauseItem(long itemId) {
467
        try {
468
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
469
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 470
 
2126 ankur.sing 471
            catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.PAUSED);
472
        } catch (Exception e) {
473
            e.printStackTrace();
474
        }
2359 ankur.sing 475
 
2126 ankur.sing 476
    }
477
 
478
    @Override
479
    public void markInProcess(long itemId) {
480
        try {
481
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
482
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 483
 
2126 ankur.sing 484
            catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.IN_PROCESS);
485
        } catch (Exception e) {
486
            e.printStackTrace();
487
        }
488
    }
2359 ankur.sing 489
 
2126 ankur.sing 490
    @Override
491
    public void phaseoutItem(long itemId) {
492
        try {
493
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
494
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 495
 
2126 ankur.sing 496
            catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.PHASED_OUT);
497
        } catch (Exception e) {
498
            e.printStackTrace();
499
        }
500
    }
2359 ankur.sing 501
 
2126 ankur.sing 502
    @Override
503
    public void activateItem(long itemId) {
504
        try {
505
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
506
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 507
 
2126 ankur.sing 508
            catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.ACTIVE);
509
        } catch (Exception e) {
510
            e.printStackTrace();
511
        }
512
    }
2359 ankur.sing 513
 
514
    /*@Override
515
    public void uploadItems(String filename, long vendorId, String category, boolean fullUpdate, boolean dryRun, String suppliedProductGroup) {
516
        try {
517
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
518
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
519
 
520
            catalogClient.runItemLoader(filename, vendorId, category, fullUpdate, dryRun, suppliedProductGroup);
521
        } catch (Exception e) {
522
            e.printStackTrace();
523
        }
524
 
525
    }*/
526
 
527
    @Override
528
    public boolean changeItemRiskyFlag(long itemId, boolean risky) {
529
        try {
530
            // Initialize client for staging server
531
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
532
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
533
 
534
            // Initialize client for production server
535
            CatalogServiceClient catalogServiceClient_Prod = new CatalogServiceClient(CatalogServiceClient.class.getSimpleName(), 
536
                    ConfigClientKeys.catalog_service_server_host_prod.toString(),
537
                    ConfigClientKeys.catalog_service_server_port.toString());
538
            InventoryService.Client catalogClient_Prod = catalogServiceClient_Prod.getClient();
539
            catalogClient.changeItemRiskyFlag(itemId, risky);
540
 
541
            try{
542
                catalogClient_Prod.changeItemRiskyFlag(itemId, risky);
543
            }catch(Exception e){
544
                e.printStackTrace();
545
                // If not able to change risky flag on production, revert on staging and return false (to show error to user).
546
                catalogClient.changeItemRiskyFlag(itemId, !risky);        
547
                return false;
548
            }
549
        } catch (Exception e) {
550
            e.printStackTrace();
551
            return false;
552
        }
553
        return true;
554
    }
555
 
556
    List<Item> getItemsByVendorCategory(String category) {
557
        List<Item> itemList = new ArrayList<Item>();
558
        try {
559
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
560
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
561
 
562
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getItemsByVendorCategory(category);
563
 
564
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
565
                List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
566
                List<in.shop2020.model.v1.catalog.VendorItemMapping> vim = catalogClient.getVendorItemMappings(thriftItem.getId());
567
                itemList.add(getItemFromThriftItem(thriftItem, vip, vim));
568
            }
569
        } catch (Exception e) {
570
            e.printStackTrace();
571
        }
572
        Collections.sort(itemList, new ItemsComparator());
573
        return itemList;
574
    }
575
 
576
    List<Item> getItemsByStatus(status st) {
577
        List<Item> itemList = new ArrayList<Item>();
578
        try {
579
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
580
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
581
 
582
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getAllItemsByStatus(st);
583
 
584
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
585
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
586
            }
587
        } catch (Exception e) {
588
            e.printStackTrace();
589
        }
590
        Collections.sort(itemList, new ItemsComparator());
591
        return itemList;
592
    }
593
 
594
    @Override
595
    public boolean updateItemOnProduction(Item item) {
596
        GWT.log("Update item on production, Item Id: " + item.getId());
597
        try{
598
            CatalogServiceClient catalogServiceClient_Prod = new CatalogServiceClient(CatalogServiceClient.class.getSimpleName(), 
599
                    ConfigClientKeys.catalog_service_server_host_prod.toString(),
600
                    ConfigClientKeys.catalog_service_server_port.toString());
601
 
602
            //for testing, put catalog_service_server_port_test in shop2020.cfg
603
            /*CatalogServiceClient catalogServiceClient_Prod = new CatalogServiceClient(CatalogServiceClient.class.getSimpleName(), 
604
                    ConfigClientKeys.catalog_service_server_host.toString(), "catalog_service_server_port_test");*/
605
 
606
            InventoryService.Client catalogClient_Prod = catalogServiceClient_Prod.getClient();
607
 
608
            in.shop2020.model.v1.catalog.Item tItem = catalogClient_Prod.getItem(item.getId());
609
            if(item.getMrp() != -1) {
610
                tItem.setMrp(item.getMrp());
611
            } else {
612
                tItem.setMrpIsSet(false);
613
            }
614
            if(item.getSellingPrice() != -1) {
615
                tItem.setSellingPrice(item.getSellingPrice());
616
            } else {
617
                tItem.setSellingPriceIsSet(false);
618
            }
619
            if(item.getMop() != -1) {
620
                tItem.setMop(item.getMop());
621
            } else {
622
                tItem.setMopIsSet(false);
623
            }
624
            if(item.getDealerPrice() != -1) {
625
                tItem.setDealerPrice(item.getDealerPrice());
626
            } else {
627
                tItem.setDealerPriceIsSet(false);
628
            }
629
            if(item.getTransferPrice() != -1) {
630
                tItem.setTransferPrice(item.getTransferPrice());
631
            } else {
632
                tItem.setTransferPriceIsSet(false);
633
            }
634
 
635
            long rItemId;
636
            if((rItemId = catalogClient_Prod.updateItem(tItem)) != item.getId()) {
637
                GWT.log("Error updating item, returned Item Id: " + rItemId);
638
                return false;
639
            }
640
            GWT.log("Item updated successfully, Item Id: " + item.getId());
641
 
642
            Map<Long, VendorPricings> vendorPricings = item.getVendorPricesMap();
643
            if(vendorPricings != null && !vendorPricings.isEmpty()) {
644
                in.shop2020.model.v1.catalog.VendorItemPricing tVendorPricing;
645
                for(VendorPricings v : vendorPricings.values()) {
646
                    tVendorPricing = new in.shop2020.model.v1.catalog.VendorItemPricing();
647
                    tVendorPricing.setVendorId(v.getVendorId());
648
                    tVendorPricing.setItemId(item.getId());
649
                    tVendorPricing.setMop(v.getMop());
650
                    tVendorPricing.setTransferPrice(v.getTransferPrice());
651
                    tVendorPricing.setDealerPrice(v.getDealerPrice());
652
                    catalogClient_Prod.addVendorItemPricing(tVendorPricing);
653
                    GWT.log("VendorItemPricing updated. " + tVendorPricing.getVendorId() + ", " + tVendorPricing.getItemId() + ", " +
654
                            tVendorPricing.getMop() + ", " + tVendorPricing.getTransferPrice() + ", " + tVendorPricing.getDealerPrice());
655
                }
656
            }
657
        } catch (Exception e) {
658
            e.printStackTrace();
659
            return false;
660
        }
2372 rajveer 661
 
662
        // Push the content of one item to production 
663
        Process p;
664
		try {
2378 ankur.sing 665
		    String scriptPath = ConfigClient.getClient().get(ConfigClientKeys.PUSH_PRICES_TO_PROD_SCRIPT_PATH.toString());
666
			p = Runtime.getRuntime().exec(scriptPath + " " + item.getCatalogItemId());
2372 rajveer 667
			p.waitFor();
668
		} catch (IOException e) {
669
			GWT.log("Not able to update content on production");
670
			e.printStackTrace();
671
			return false;
672
		} catch (InterruptedException e) {
673
			GWT.log("Not able to update content on production");
674
			e.printStackTrace();
675
			return false;
2378 ankur.sing 676
		} catch (ConfigException e) {
677
            // TODO Auto-generated catch block
678
            e.printStackTrace();
679
            return false;
680
        } 
2372 rajveer 681
 
2359 ankur.sing 682
        return true;
683
    }
1961 ankur.sing 684
}
2359 ankur.sing 685
 
686