diff --git a/core/src/cz/nic/tablexia/TablexiaApplication.java b/core/src/cz/nic/tablexia/TablexiaApplication.java index fdadf9878818e9d20cbb66ac203a9e405d4451e8..a2cfdaedeaa3cc628b0a4785dc1b99037745c5c0 100644 --- a/core/src/cz/nic/tablexia/TablexiaApplication.java +++ b/core/src/cz/nic/tablexia/TablexiaApplication.java @@ -31,6 +31,7 @@ import cz.nic.tablexia.bus.ApplicationBus; import cz.nic.tablexia.bus.ApplicationBus.ApplicationEvent; import cz.nic.tablexia.bus.event.DeleteUserSynchronizationEvent; import cz.nic.tablexia.bus.event.DimmerControlEvent; +import cz.nic.tablexia.bus.event.DownloadUserSynchronizationEvent; import cz.nic.tablexia.bus.event.StartFullSynchronizationEvent; import cz.nic.tablexia.bus.event.StartIncrementalSynchronizationEvent; import cz.nic.tablexia.debug.DebugInfo; @@ -46,6 +47,7 @@ import cz.nic.tablexia.screen.AbstractTablexiaScreen.ScreenLoadingListener; import cz.nic.tablexia.shared.model.User; import cz.nic.tablexia.sync.RestSynchronizationService; import cz.nic.tablexia.sync.work.DeleteUser; +import cz.nic.tablexia.sync.work.DownloadUser; import cz.nic.tablexia.sync.work.PushDataToServer; import cz.nic.tablexia.util.Log; import cz.nic.tablexia.util.ui.TablexiaButton; @@ -799,4 +801,14 @@ public abstract class TablexiaApplication implements ApplicationListener { RestSynchronizationService.doSyncWork(new DeleteUser(syncEvent.getUser())); } } + + @Handler + public void handleSynchronizationEvent(DownloadUserSynchronizationEvent syncEvent) { + if (syncEvent.getUser().getUuid() == null || syncEvent.getUser().getUuid().isEmpty()) { + Log.err(this.getClass(), "Calling download user without uuid"); + return; + } + Log.debug(this.getClass(), "Download user request for uuid: " + syncEvent.getUser().getUuid()); + RestSynchronizationService.doSyncWork(new DownloadUser(syncEvent.getUser().getUuid())); + } } diff --git a/core/src/cz/nic/tablexia/bus/event/DownloadUserSynchronizationEvent.java b/core/src/cz/nic/tablexia/bus/event/DownloadUserSynchronizationEvent.java new file mode 100644 index 0000000000000000000000000000000000000000..2bc0943859615c24cfd801b86d98f343d0e7f68f --- /dev/null +++ b/core/src/cz/nic/tablexia/bus/event/DownloadUserSynchronizationEvent.java @@ -0,0 +1,21 @@ +package cz.nic.tablexia.bus.event; + +import cz.nic.tablexia.bus.ApplicationBus; +import cz.nic.tablexia.shared.model.User; + +/** + * Created by frantisek on 22.1.16. + */ +public class DownloadUserSynchronizationEvent implements ApplicationBus.ApplicationEvent { + + private final User user; + + public DownloadUserSynchronizationEvent(User user) { + this.user = user; + } + + public User getUser() { + return user; + } + +} diff --git a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java index a74ef18bee0e6ab179426ae350174f4c3d1fe2c1..3d076dc26f185d5bb93c9ae39556eb72a64dbd09 100644 --- a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java +++ b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java @@ -36,6 +36,7 @@ import cz.nic.tablexia.TablexiaSettings; import cz.nic.tablexia.TablexiaStorage; import cz.nic.tablexia.bus.ApplicationBus; import cz.nic.tablexia.bus.ApplicationBus.ApplicationEvent; +import cz.nic.tablexia.bus.event.DownloadUserSynchronizationEvent; import cz.nic.tablexia.bus.event.StartFullSynchronizationEvent; import cz.nic.tablexia.bus.event.StartIncrementalSynchronizationEvent; import cz.nic.tablexia.loader.TablexiaAbstractFileManager; @@ -457,12 +458,16 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter { stage.draw(); } - if (lastTimeForUserSync != null && getSelectedUser() != null && canSyncOnResume() && System.currentTimeMillis() - lastTimeForUserSync > USER_SYNC_DELAY) { + if (lastTimeForUserSync != null && hasSynchronizedUser() && canSyncOnResume() && System.currentTimeMillis() - lastTimeForUserSync > USER_SYNC_DELAY) { lastTimeForUserSync = System.currentTimeMillis(); - ApplicationBus.getInstance().publishAsync(new StartIncrementalSynchronizationEvent(getSelectedUser().getId())); + ApplicationBus.getInstance().publishAsync(new DownloadUserSynchronizationEvent(getSelectedUser())); } } + private boolean hasSynchronizedUser() { + return getSelectedUser() != null && getSelectedUser().getUuid() != null && !getSelectedUser().getUuid().isEmpty(); + } + public void addDisposable(Disposable disposable) { disposables.add(disposable); } diff --git a/core/src/cz/nic/tablexia/sync/RestSynchronizationService.java b/core/src/cz/nic/tablexia/sync/RestSynchronizationService.java index 42fb4fd52e89fd54c9500d8fb17267fa726e36f9..105e8ddd9faa35faad08c7b85e711684ab8f301c 100644 --- a/core/src/cz/nic/tablexia/sync/RestSynchronizationService.java +++ b/core/src/cz/nic/tablexia/sync/RestSynchronizationService.java @@ -50,10 +50,10 @@ public class RestSynchronizationService { } public static void doSyncWork(SyncWork work) { - /*if (Tablexia.connectionManager.isUsingMobileData()) { + if (Tablexia.connectionManager.isUsingMobileData()) { Log.debug(RestSynchronizationService.class, "Using mobile data connection - synchronization disabled"); return; - }*/ + } work.send(new RestSynchronizationService(work.getUrl(), work.getHttpMethod(), work)); } diff --git a/core/src/cz/nic/tablexia/sync/work/DownloadUser.java b/core/src/cz/nic/tablexia/sync/work/DownloadUser.java index 117673cd3a513b68689a71b862a7a37919625c82..c070836e1d9a02b7f7394457d44a91de4e78c437 100644 --- a/core/src/cz/nic/tablexia/sync/work/DownloadUser.java +++ b/core/src/cz/nic/tablexia/sync/work/DownloadUser.java @@ -38,6 +38,11 @@ public class DownloadUser extends SyncWork { json.setIgnoreUnknownFields(true); User user = json.fromJson(User.class, userJson); + if (user == null) { + Log.err(this.getClass(), "Failed to deserialize user from JSON"); + return; + } + long start = System.currentTimeMillis(); user.setId(UserDAO.importUser(user)); long finish = System.currentTimeMillis();