View Javadoc
1   package com.srv4pos.server.api.sync.sample;
2   
3   import com.srv4pos.server.api.day.DayInfo;
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 DaySyncAdapter implements EntitySyncAdapter<DayInfo> {
10  
11      private final MemoryLocalStorage storage;
12  
13      public DaySyncAdapter(MemoryLocalStorage storage) {
14          this.storage = storage;
15      }
16  
17      public void upload(Uploader<DayInfo> uploader) {
18          List<SyncDay> days = storage.getDays();
19          for (SyncDay day : days) {
20              if (!day.isSynced()) {
21                  doUpload(uploader, day);
22              }
23          }
24      }
25  
26      private void doUpload(Uploader<DayInfo> uploader, SyncDay day) {
27          final DayInfo dayInfo = day.getInfo();
28          final SyncTreasurer treasurer = day.getTreasurer();
29          if (treasurer != null) {
30              dayInfo.setClosedDayTreasurer(treasurer.getInfo().getIdentifier());
31          }
32          String newIdentifier = uploader.upload(dayInfo, null);
33          if (newIdentifier != null && newIdentifier.length() > 0) {
34              dayInfo.setIdentifier(newIdentifier);
35          }
36          day.setSynced(true);
37      }
38  
39      public void createOrUpdateEntityFromInfo(DayInfo info) {
40          SyncTreasurer treasurer = storage.getTreasurerByIdentifier(info.getClosedDayTreasurer());
41          if (treasurer == null) {
42              info.setClosedDayTreasurer(null);
43          }
44  
45          SyncDay day = storage.getDayByIdentifier(info.getIdentifier());
46          if (day == null) {
47              day = new SyncDay(info, treasurer);
48              storage.add(day);
49          } else {
50              day.setInfo(info);
51              day.setTreasurer(treasurer);
52          }
53  
54          day.setSynced(true);
55      }
56  }