View Javadoc
1   package com.srv4pos.server.api.sync.sample;
2   
3   import com.srv4pos.server.api.keyboardentry.KeyboardEntryInfo;
4   import com.srv4pos.server.api.sync.EntitySyncAdapter;
5   import com.srv4pos.server.api.sync.Uploader;
6   
7   import java.util.List;
8   
9   /**
10   * Created by moonsweel on 22.06.16.
11   */
12  public class KeyboardEntrySyncAdapter implements EntitySyncAdapter<KeyboardEntryInfo> {
13      private MemoryLocalStorage storage;
14  
15      public KeyboardEntrySyncAdapter(MemoryLocalStorage storage) {
16          this.storage = storage;
17      }
18  
19      public void upload(Uploader<KeyboardEntryInfo> uploader) {
20          List<SyncKeyboardEntry> keyboardEntries = storage.getKeyboardEntries();
21          for (SyncKeyboardEntry KeyboardEntry : keyboardEntries) {
22              if (!KeyboardEntry.isSynced()) {
23                  doUpload(uploader, KeyboardEntry);
24              }
25          }
26      }
27  
28      private void doUpload(Uploader<KeyboardEntryInfo> uploader, SyncKeyboardEntry keyboardEntry) {
29          final KeyboardEntryInfo keyboardEntryInfo = keyboardEntry.getInfo();
30  
31          keyboardEntryInfo.setKeyboard(keyboardEntry.getKeyboard().getInfo().getIdentifier());
32          if (keyboardEntry.getProduct() != null) {
33              keyboardEntryInfo.setProduct(keyboardEntry.getProduct().getInfo().getIdentifier());
34          }
35  
36          final String newIdentifier = uploader.upload(keyboardEntryInfo, null);
37          if (newIdentifier != null && newIdentifier.length() > 0) {
38              keyboardEntryInfo.setIdentifier(newIdentifier);
39          }
40  
41          keyboardEntry.setSynced(true);
42      }
43  
44      public void createOrUpdateEntityFromInfo(KeyboardEntryInfo info) {
45          SyncKeyboard keyboard = storage.getKeyboardByIdentifier(info.getKeyboard());
46          SyncProduct product = storage.getProductByIdentifier(info.getProduct());
47          SyncKeyboardEntry keyboardEntry = storage.getKeyboardEntryByIdentifier(info.getIdentifier());
48  
49          if (keyboardEntry == null) {
50              keyboardEntry = new SyncKeyboardEntry(info, keyboard, product);
51              storage.add(keyboardEntry); // adding even if info is in "deleted" state (info.isDeleted() == true)
52          } else {
53              keyboardEntry.setInfo(info);
54              keyboardEntry.setKeyboard(keyboard);
55          }
56  
57          keyboardEntry.setSynced(true);
58      }
59  }