Subversion Repositories SmartDukaan

Rev

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