View Javadoc
1   package com.srv4pos.server.api.sync.sample;
2   
3   import com.srv4pos.server.api.order.OrderInfo;
4   import com.srv4pos.server.api.sync.EntitySyncAdapter;
5   import com.srv4pos.server.api.sync.Uploader;
6   
7   import java.util.List;
8   
9   public class OrderSyncAdapter implements EntitySyncAdapter<OrderInfo> {
10  
11      private final MemoryLocalStorage storage;
12  
13      public OrderSyncAdapter(MemoryLocalStorage storage) {
14          this.storage = storage;
15      }
16  
17      public void upload(Uploader<OrderInfo> uploader) {
18          List<SyncOrder> orders = storage.getOrders();
19          for (SyncOrder order : orders) {
20              if (!order.isSynced()) {
21                  doUpload(uploader, order);
22              }
23          }
24      }
25  
26      public void createOrUpdateEntityFromInfo(OrderInfo info) {
27          SyncOrder order = storage.getOrderByIdentifier(info.getIdentifier());
28  
29          if (order == null) {
30              order = new SyncOrder(info);
31              storage.add(order); // adding even if info is in "deleted" state (info.isDeleted() == true)
32          } else {
33              order.setInfo(info);
34          }
35  
36          order.setSynced(true);
37      }
38  
39      private void doUpload(Uploader<OrderInfo> uploader, SyncOrder order) {
40          final OrderInfo orderInfo = order.getInfo();
41  
42          // syncing entity only if it was already synced at least once (has identifier) OR is not deleted
43          //if (orderInfo.getIdentifier() != null || !orderInfo.isDeleted()) {
44  
45          final String newIdentifier = uploader.upload(orderInfo, null);
46          if (newIdentifier != null && newIdentifier.length() > 0) {
47              orderInfo.setIdentifier(newIdentifier);
48          }
49          //}
50          order.setSynced(true);
51      }
52  }