Subversion Repositories SmartDukaan

Rev

Rev 2119 | Rev 2208 | 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;
1961 ankur.sing 12
 
13
import java.util.ArrayList;
2105 ankur.sing 14
import java.util.Calendar;
2068 ankur.sing 15
import java.util.Collections;
1992 ankur.sing 16
import java.util.HashMap;
1961 ankur.sing 17
import java.util.List;
1992 ankur.sing 18
import java.util.Map;
1961 ankur.sing 19
 
20
import com.google.gwt.core.client.GWT;
21
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
22
 
23
@SuppressWarnings("serial")
24
public class CatalogServiceImpl extends RemoteServiceServlet implements CatalogService {
25
 
26
    public List<Item> getAllItems(){
27
        List<Item> itemList = new ArrayList<Item>();
28
 
29
        try {
30
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
31
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
32
 
2119 ankur.sing 33
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getAllItems(false);
34
 
35
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
36
                //List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
37
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
38
            }
39
        } catch (Exception e) {
40
            e.printStackTrace();
41
        }
42
        Collections.sort(itemList, new ItemsComparator());
43
        return itemList;
44
    }
45
 
46
    public List<Item> getAllActiveItems(){
47
        List<Item> itemList = new ArrayList<Item>();
48
 
49
        try {
50
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
51
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
52
 
1961 ankur.sing 53
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getAllItems(true);
1992 ankur.sing 54
 
55
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
2105 ankur.sing 56
                //List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
57
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
1992 ankur.sing 58
            }
1961 ankur.sing 59
        } catch (Exception e) {
60
            e.printStackTrace();
61
        }
2068 ankur.sing 62
        Collections.sort(itemList, new ItemsComparator());
1961 ankur.sing 63
        return itemList;
64
    }
65
 
66
    public List<Item> getBestDeals(){
67
        List<Item> itemList = new ArrayList<Item>();
68
 
69
        try {
70
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
71
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
72
 
73
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getBestDeals();
1992 ankur.sing 74
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
2105 ankur.sing 75
                //List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
76
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
1992 ankur.sing 77
            }
1961 ankur.sing 78
        } catch(Exception e){
79
            e.printStackTrace();
80
        }
2068 ankur.sing 81
        Collections.sort(itemList, new ItemsComparator());
1961 ankur.sing 82
        return itemList;
83
    }
84
 
85
    public List<Item> getBestSellers(){
86
        List<Item> itemList = new ArrayList<Item>();
87
 
88
        try {
89
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
90
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
91
 
92
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getBestSellers();
1992 ankur.sing 93
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
2105 ankur.sing 94
                //List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
95
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
1992 ankur.sing 96
            }
1961 ankur.sing 97
        } catch(Exception e){
98
            e.printStackTrace();
99
        }
2068 ankur.sing 100
        Collections.sort(itemList, new ItemsComparator());
1961 ankur.sing 101
        return itemList;        
102
    }
103
 
104
    public List<Item> getLatestArrivals(){
105
        List<Item> itemList = new ArrayList<Item>();
106
 
107
        try {
108
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
109
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
110
 
111
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getLatestArrivals();
1992 ankur.sing 112
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
2105 ankur.sing 113
                //List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
114
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
1992 ankur.sing 115
            }
1961 ankur.sing 116
        } catch(Exception e){
117
            e.printStackTrace();
118
        }
2068 ankur.sing 119
        Collections.sort(itemList, new ItemsComparator());
1961 ankur.sing 120
        return itemList;
121
    }
122
 
123
    public Item getItem(long itemId){
124
        try{
125
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
126
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
127
            in.shop2020.model.v1.catalog.Item thriftItem = catalogClient.getItem(itemId);
1992 ankur.sing 128
 
129
            List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
2119 ankur.sing 130
            List<in.shop2020.model.v1.catalog.VendorItemMapping> vim = catalogClient.getVendorItemMappings(thriftItem.getId());
131
            return getItemFromThriftItem(thriftItem, vip, vim);
1961 ankur.sing 132
        }catch(Exception e){
133
            // Oops! We didn't receive the details. We should let the user know
134
            // that the catalog service is currently unavailable.
135
            e.printStackTrace();
136
        }
137
        return null;
138
    }
139
 
2105 ankur.sing 140
    private Item getItemFromThriftItem(in.shop2020.model.v1.catalog.Item thriftItem, 
141
            List<in.shop2020.model.v1.catalog.VendorItemPricing> tVendorPricings, 
142
            List<in.shop2020.model.v1.catalog.VendorItemMapping> tVendorMappings){
1992 ankur.sing 143
 
2119 ankur.sing 144
        Map<Long, VendorItemMapping> vItemMap = new HashMap<Long, VendorItemMapping>();
145
        VendorItemMapping vItemMapping;
2105 ankur.sing 146
        if(tVendorMappings != null) {
2119 ankur.sing 147
            for(in.shop2020.model.v1.catalog.VendorItemMapping vim : tVendorMappings) {
148
                vItemMapping = new VendorItemMapping();
149
                vItemMapping.setVendorId(vim.getVendorId());
150
                vItemMapping.setItemKey(vim.getItemKey());
151
                vItemMap.put(vItemMapping.getVendorId(), vItemMapping);
1992 ankur.sing 152
            }
153
        }
2119 ankur.sing 154
 
155
        // TODO: For testing. Remove this code before moving to production.
156
        /* 
157
        Map<Long, VendorItemMapping> vItemMap = new HashMap<Long, VendorItemMapping>();
158
        vItemMap.put(1L, new VendorItemMapping(1, "Item Key Test 1"));
159
        vItemMap.put(1L, new VendorItemMapping(1, "Item Key Test 2"));
160
        */
161
 
162
        Map<Long, VendorPricings> vendorPricingMap = new HashMap<Long, VendorPricings>();
163
        VendorPricings vPricings;
2105 ankur.sing 164
        if(tVendorPricings != null) {
2119 ankur.sing 165
            for(in.shop2020.model.v1.catalog.VendorItemPricing vip : tVendorPricings) {
166
                vPricings = new VendorPricings();
167
                vPricings.setVendorId(vip.getVendorId());
168
                vPricings.setMop(vip.getMop());
169
                vPricings.setDealerPrice(vip.getDealerPrice());
170
                vPricings.setTransferPrice(vip.getTransferPrice());
171
                vendorPricingMap.put(vPricings.getVendorId(), vPricings);
2105 ankur.sing 172
            }
173
        }
174
 
1961 ankur.sing 175
        Item item = new Item(thriftItem.getId(),
176
                thriftItem.getProductGroup(),
177
                thriftItem.getBrand(),
178
                thriftItem.getModelNumber(),
179
                thriftItem.getModelName(),
180
                thriftItem.getColor(),
2119 ankur.sing 181
                //thriftItem.getCategory(),
182
                CategoryManager.getCategoryManager().getCategoryLabel(thriftItem.getCategory()),
2126 ankur.sing 183
                thriftItem.getCategory(),
1961 ankur.sing 184
                thriftItem.getComments(),
185
                thriftItem.getCatalogItemId(),
186
                thriftItem.getFeatureId(),
187
                thriftItem.getFeatureDescription(),
2126 ankur.sing 188
                thriftItem.isSetMrp() ? thriftItem.getMrp() : -1,
1961 ankur.sing 189
                thriftItem.getMop(),
2126 ankur.sing 190
                thriftItem.isSetSellingPrice() ? thriftItem.getSellingPrice() : -1,
1961 ankur.sing 191
                thriftItem.getDealerPrice(),
2126 ankur.sing 192
                thriftItem.isSetWeight() ? thriftItem.getWeight() : -1,
1961 ankur.sing 193
                thriftItem.getAddedOn(),
194
                thriftItem.getStartDate(),
195
                thriftItem.getRetireDate(),
196
                thriftItem.getUpdatedOn(),
1992 ankur.sing 197
                thriftItem.getItemStatus().name(),
2126 ankur.sing 198
                thriftItem.getItemStatus().getValue(),
1961 ankur.sing 199
                thriftItem.getOtherInfo(),
200
                thriftItem.getBestDealText(),
2126 ankur.sing 201
                thriftItem.isSetBestDealValue() ? thriftItem.getBestDealValue() : -1,
202
                thriftItem.isSetBestSellingRank() ? thriftItem.getBestSellingRank() : -1,
2066 ankur.sing 203
                thriftItem.isDefaultForEntity(),
1992 ankur.sing 204
                (thriftItem.getItemInventory() != null ? thriftItem.getItemInventory().getAvailability() : null),
2119 ankur.sing 205
                vendorPricingMap,
206
                vItemMap
1992 ankur.sing 207
                );
1961 ankur.sing 208
        return item;
209
    }
210
 
211
    @Override
1992 ankur.sing 212
    public boolean updateItem(Item item) {
213
        GWT.log("Got a call to update item, Item Id: " + item.getId());
1961 ankur.sing 214
        try{
215
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
216
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
1992 ankur.sing 217
 
218
            in.shop2020.model.v1.catalog.Item tItem = catalogClient.getItem(item.getId());
2126 ankur.sing 219
            setThriftItemParams(tItem, item);
2027 ankur.sing 220
//          tItem.setAddedOn(item.getAddedOn());
221
 
222
//          tItem.setCatalogItemId(item.getCatalogItemId());
223
//          tItem.setCategory(item.getCategory());
224
 
225
//          tItem.setFeatureId(item.getFeatureId());
226
//          tItem.setFeatureDescription(item.getFeatureDescription());
227
 
2105 ankur.sing 228
            long rItemId;
229
            if((rItemId = catalogClient.updateItem(tItem)) != item.getId()) {
230
                GWT.log("Error updating item, returned Item Id: " + rItemId);
231
                return false;
232
            }
233
            GWT.log("Item updated successfully, Item Id: " + item.getId());
234
 
2119 ankur.sing 235
            Map<Long, VendorItemMapping> vendorMappings = item.getVendorMappingsMap();
236
            if(vendorMappings != null && !vendorMappings.isEmpty()) {
237
                in.shop2020.model.v1.catalog.VendorItemMapping tVendorMapping;
238
                for(VendorItemMapping v : vendorMappings.values()) {
239
                    tVendorMapping = new in.shop2020.model.v1.catalog.VendorItemMapping();
240
                    tVendorMapping.setVendorId(v.getVendorId());
241
                    tVendorMapping.setItemKey(v.getItemKey());
242
                    tVendorMapping.setItemId(item.getId());
243
                    tVendorMapping.setVendorCategory(item.getVendorCategory());
244
                    catalogClient.addVendorItemMapping(tVendorMapping);
245
                    GWT.log("VendorItemMapping updated. " + tVendorMapping.getVendorId() + ", " + tVendorMapping.getItemId() + ", " +
246
                            tVendorMapping.getItemKey() + ", " + tVendorMapping.getVendorCategory());
247
                }
248
            }
249
 
250
            Map<Long, VendorPricings> vendorPricings = item.getVendorPricesMap();
251
            if(vendorPricings != null && !vendorPricings.isEmpty()) {
2105 ankur.sing 252
                in.shop2020.model.v1.catalog.VendorItemPricing tVendorPricing;
2119 ankur.sing 253
                for(VendorPricings v : vendorPricings.values()) {
254
                    tVendorPricing = new in.shop2020.model.v1.catalog.VendorItemPricing();
2105 ankur.sing 255
                    tVendorPricing.setVendorId(v.getVendorId());
256
                    tVendorPricing.setItemId(item.getId());
257
                    tVendorPricing.setMop(v.getMop());
258
                    tVendorPricing.setTransferPrice(v.getTransferPrice());
259
                    tVendorPricing.setDealerPrice(v.getDealerPrice());
260
                    catalogClient.addVendorItemPricing(tVendorPricing);
261
                    GWT.log("VendorItemPricing updated. " + tVendorPricing.getVendorId() + ", " + tVendorPricing.getItemId() + ", " +
262
                            tVendorPricing.getMop() + ", " + tVendorPricing.getTransferPrice() + ", " + tVendorPricing.getDealerPrice());
263
                }
264
            }
265
 
266
        }catch(Exception e){
267
            e.printStackTrace();
268
        }
269
        return true;
1961 ankur.sing 270
    }
2066 ankur.sing 271
 
272
 
273
    @Override
274
    public Map<Long, String> getAllVendors() {
275
        Map<Long, String> vendorMap = new HashMap<Long, String>();
276
        try {
277
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
278
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
279
 
280
            List<in.shop2020.model.v1.catalog.Vendor> vendors = catalogClient.getAllVendors();
281
 
282
            for(in.shop2020.model.v1.catalog.Vendor v : vendors) {
283
                vendorMap.put(v.getId(), v.getName());
284
            }
285
        } catch (Exception e) {
286
            e.printStackTrace();
287
        }
288
        return vendorMap;
289
    }
290
 
291
    @Override
292
    public Map<Long, String> getAllWarehouses() {
293
        Map<Long, String> warehouseMap = new HashMap<Long, String>();
294
        try {
295
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
296
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
297
 
298
            List<in.shop2020.model.v1.catalog.Warehouse> warehouses = catalogClient.getAllWarehouses(true);
299
 
300
            for(in.shop2020.model.v1.catalog.Warehouse w : warehouses) {
301
                warehouseMap.put(w.getId(), w.getDisplayName());
302
            }
303
        } catch (Exception e) {
304
            e.printStackTrace();
305
        }
306
        return warehouseMap;
307
    }
2105 ankur.sing 308
 
309
    @Override
310
    public long addItem(Item item) {
311
        long itemId = 0;
312
        try {
313
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
314
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
2126 ankur.sing 315
 
2105 ankur.sing 316
 
317
            in.shop2020.model.v1.catalog.Item tItem = new in.shop2020.model.v1.catalog.Item();
2126 ankur.sing 318
            setThriftItemParams(tItem, item);
2105 ankur.sing 319
            itemId = catalogClient.addItem(tItem);
320
 
2119 ankur.sing 321
            Map<Long, VendorPricings> vendorPricings = item.getVendorPricesMap();
322
            if(vendorPricings != null && !vendorPricings.isEmpty()) {
2105 ankur.sing 323
                in.shop2020.model.v1.catalog.VendorItemPricing tVendorPricing;
2119 ankur.sing 324
                for(VendorPricings v : vendorPricings.values()) {
325
                    tVendorPricing = new in.shop2020.model.v1.catalog.VendorItemPricing();
326
                    tVendorPricing.setVendorId(v.getVendorId());
327
                    tVendorPricing.setItemId(itemId);
328
                    tVendorPricing.setMop(v.getMop());
329
                    tVendorPricing.setTransferPrice(v.getTransferPrice());
330
                    tVendorPricing.setDealerPrice(v.getDealerPrice());
331
                    catalogClient.addVendorItemPricing(tVendorPricing);
332
                }
333
            }
334
 
335
            Map<Long, VendorItemMapping> vendorKeysMap = item.getVendorMappingsMap();
336
            if(vendorKeysMap != null && !vendorKeysMap.isEmpty()) {
2105 ankur.sing 337
                in.shop2020.model.v1.catalog.VendorItemMapping tVendorMapping;
2119 ankur.sing 338
                for(VendorItemMapping v : vendorKeysMap.values()) {
339
                    tVendorMapping = new in.shop2020.model.v1.catalog.VendorItemMapping();
2105 ankur.sing 340
                    tVendorMapping.setVendorId(v.getVendorId());
341
                    tVendorMapping.setItemKey(v.getItemKey());
342
                    tVendorMapping.setItemId(itemId);
343
                    tVendorMapping.setVendorCategory(item.getVendorCategory());
344
                    catalogClient.addVendorItemMapping(tVendorMapping);
345
                }
346
            }
347
        } catch (Exception e) {
348
            e.printStackTrace();
349
        }
350
        return itemId;
351
    }
2119 ankur.sing 352
 
353
    @Override
354
    public long checkSimilarItem(String productGroup, String brand, String modelNumber, String color) {
355
 
356
        try {
357
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
358
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
359
            return catalogClient.checkSimilarItem(productGroup, brand, modelNumber, color);
360
        } catch (Exception e) {
361
            // TODO Auto-generated catch block
362
            e.printStackTrace();
363
        }
364
        return 0;
365
    }
2126 ankur.sing 366
 
367
    private void setThriftItemParams(in.shop2020.model.v1.catalog.Item tItem, Item item) {
368
        tItem.setId(tItem.getId());
369
        tItem.setProductGroup(item.getProductGroup());
370
        tItem.setBrand(item.getBrand());
371
        tItem.setModelName(item.getModelName());
372
        tItem.setModelNumber(item.getModelNumber());
373
        tItem.setColor(item.getColor());
374
 
375
        tItem.setComments(item.getComments());
376
 
377
        if(item.getMrp() != -1) {
378
            tItem.setMrp(item.getMrp());
379
        } else {
380
            tItem.setMrpIsSet(false);
381
        }
382
        if(item.getSellingPrice() != -1) {
383
            tItem.setSellingPrice(item.getSellingPrice());
384
        } else {
385
            tItem.setSellingPriceIsSet(false);
386
        }
387
        if(item.getWeight() != -1) {
388
            tItem.setWeight(item.getWeight());
389
        } else {
390
            tItem.setWeightIsSet(false);
391
        }
392
 
393
        tItem.setMop(item.getMop());
394
        tItem.setDealerPrice(item.getDealerPrice());
395
        tItem.setTransferPrice(item.getTransferPrice());
396
 
397
        tItem.setBestDealText(item.getBestDealsText());
398
        if(item.getBestDealsValue() != -1) {
399
            tItem.setBestDealValue(item.getBestDealsValue());
400
        } else {
401
            tItem.setBestDealValueIsSet(false);
402
        }
403
        if(item.getBestSellingRank() != -1) {
404
            tItem.setBestSellingRank(item.getBestSellingRank());
405
        } else {
406
            tItem.setBestSellingRankIsSet(false);
407
        }
408
        tItem.setDefaultForEntity(item.isDefaultForEntity());
409
 
410
        tItem.setStartDate(item.getStartDate());
411
        tItem.setUpdatedOn(Calendar.getInstance().getTimeInMillis());
412
        tItem.setRetireDate(item.getRetireDate());
413
        tItem.setHotspotCategory(item.getVendorCategory());
414
    }
415
 
416
    @Override
417
    public void pauseItem(long itemId) {
418
        try {
419
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
420
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
421
 
422
            catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.PAUSED);
423
        } catch (Exception e) {
424
            e.printStackTrace();
425
        }
426
 
427
    }
428
 
429
    @Override
430
    public void markInProcess(long itemId) {
431
        try {
432
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
433
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
434
 
435
            catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.IN_PROCESS);
436
        } catch (Exception e) {
437
            e.printStackTrace();
438
        }
439
 
440
    }
441
 
442
    @Override
443
    public void phaseoutItem(long itemId) {
444
        try {
445
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
446
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
447
 
448
            catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.PHASED_OUT);
449
        } catch (Exception e) {
450
            e.printStackTrace();
451
        }
452
    }
453
 
454
    @Override
455
    public void activateItem(long itemId) {
456
        try {
457
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
458
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
459
 
460
            catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.ACTIVE);
461
        } catch (Exception e) {
462
            e.printStackTrace();
463
        }
464
    }
1961 ankur.sing 465
}