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   import com.srv4pos.server.api.transportation.TripInfo;
7   
8   import java.util.ArrayList;
9   import java.util.List;
10  
11  /**
12   * Created by moonsweel on 07/06/2017.
13   */
14  
15  public class TripSyncAdapter implements EntitySyncAdapter<TripInfo> {
16  
17      private final MemoryLocalStorage storage;
18  
19      public TripSyncAdapter(MemoryLocalStorage storage) {
20          this.storage = storage;
21      }
22  
23      public void upload(Uploader<TripInfo> uploader) {
24          List<SyncTrip> trips = storage.getTrips();
25          for (SyncTrip trip : trips) {
26              if (!trip.isSynced()) {
27                  doUpload(uploader, trip);
28              }
29          }
30      }
31  
32      private void doUpload(Uploader<TripInfo> uploader, SyncTrip trip) {
33          TripInfo tripInfo = trip.getInfo();
34  
35          if (trip.getSales() != null) {
36              List<SaleInfo> sales = new ArrayList<SaleInfo>();
37              for (SyncSale sale : trip.getSales()) {
38                  sales.add(sale.getInfo());
39              }
40              tripInfo.setSales(sales);
41          }
42  
43          uploader.upload(tripInfo, null);
44          trip.setSynced(true);
45      }
46  
47      public void createOrUpdateEntityFromInfo(TripInfo info) {
48          List<SyncSale> sales = storage.getSalesByTripIdentifier(info.getIdentifier());
49          if (sales == null) {
50              info.setSales(null);
51          }
52  
53          SyncTrip trip = storage.getTripByIdentifier(info.getIdentifier());
54  
55          if (trip == null) {
56              trip = new SyncTrip(info, sales);
57              storage.add(trip);
58          } else  {
59              trip.setInfo(info);
60              trip.setSales(sales);
61          }
62  
63          trip.setSynced(true);
64      }
65  }