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