View Javadoc
1   package com.srv4pos.server.api.sync.sample;
2   
3   import com.srv4pos.server.api.sale.SaleInfo;
4   import com.srv4pos.server.api.sync.EntitySyncAdapter;
5   import com.srv4pos.server.api.sync.Uploader;
6   
7   import java.util.List;
8   import java.util.Locale;
9   
10  /**
11   * Created by moonsweel on 22/02/2017.
12   */
13  public class SaleSyncAdapter implements EntitySyncAdapter<SaleInfo> {
14  
15      private final MemoryLocalStorage storage;
16  
17      public SaleSyncAdapter(MemoryLocalStorage storage) {
18          this.storage = storage;
19      }
20  
21      public void upload(Uploader<SaleInfo> uploader) {
22          List<SyncSale> sales = storage.getSales();
23          for (SyncSale sale : sales) {
24              if (!sale.isSynced()) {
25                  doUpload(uploader, sale);
26              }
27          }
28      }
29  
30      private void doUpload(Uploader<SaleInfo> uploader, SyncSale sale) {
31          SaleInfo saleInfo = sale.getInfo();
32  
33          if (sale.getTreasurer() != null) {
34              saleInfo.setTreasurer(sale.getTreasurer().getInfo().getIdentifier());
35          }
36  
37          if (sale.getDay() != null) {
38              saleInfo.setDay(sale.getDay().getInfo().getIdentifier());
39          }
40  
41          String newIdentifier = uploader.upload(saleInfo, null);
42          if (newIdentifier != null && newIdentifier.length() > 0) {
43              saleInfo.setIdentifier(newIdentifier.toUpperCase(Locale.getDefault()));
44          }
45          sale.setSynced(true);
46      }
47  
48      public void createOrUpdateEntityFromInfo(SaleInfo info) {
49          SyncTreasurer treasurer = storage.getTreasurerByIdentifier(info.getTreasurer());
50          if (treasurer == null) {
51              info.setTreasurer(null);
52          }
53  
54          SyncDay day = storage.getDayByIdentifier(info.getDay());
55          if (day == null) {
56              info.setDay(null);
57          }
58  
59          SyncTrip trip = storage.getTripByIdentifier(info.getTripIdentifier());
60          if (trip == null) {
61              info.setTripIdentifier(null);
62          }
63  
64          SyncSale sale = storage.getSaleByIdentifier(info.getIdentifier());
65          if (sale == null) {
66              sale = new SyncSale(info, treasurer, day, trip);
67              storage.add(sale);
68          } else {
69              sale.setInfo(info);
70              sale.setTreasurer(treasurer);
71              sale.setDay(day);
72          }
73  
74          sale.setSynced(true);
75      }
76  }