From 8024947f9bffee38e2955a2541df6f70c531efde Mon Sep 17 00:00:00 2001 From: Frantisek Simon <frantisek.simon@nic.cz> Date: Fri, 22 Jan 2016 11:18:36 +0100 Subject: [PATCH] #78 Only download user on non game screens every 30 sec --- .../cz/nic/tablexia/TablexiaApplication.java | 12 +++++++++++ .../DownloadUserSynchronizationEvent.java | 21 +++++++++++++++++++ .../screen/AbstractTablexiaScreen.java | 9 ++++++-- .../sync/RestSynchronizationService.java | 4 ++-- .../nic/tablexia/sync/work/DownloadUser.java | 5 +++++ 5 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 core/src/cz/nic/tablexia/bus/event/DownloadUserSynchronizationEvent.java diff --git a/core/src/cz/nic/tablexia/TablexiaApplication.java b/core/src/cz/nic/tablexia/TablexiaApplication.java index fdadf9878..a2cfdaede 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 000000000..2bc094385 --- /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 a74ef18be..3d076dc26 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 42fb4fd52..105e8ddd9 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 117673cd3..c070836e1 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(); -- GitLab