Skip to content
Snippets Groups Projects
Commit 8024947f authored by Frantisek Simon's avatar Frantisek Simon
Browse files

#78 Only download user on non game screens every 30 sec

parent 278d2142
No related branches found
No related tags found
No related merge requests found
...@@ -31,6 +31,7 @@ import cz.nic.tablexia.bus.ApplicationBus; ...@@ -31,6 +31,7 @@ import cz.nic.tablexia.bus.ApplicationBus;
import cz.nic.tablexia.bus.ApplicationBus.ApplicationEvent; import cz.nic.tablexia.bus.ApplicationBus.ApplicationEvent;
import cz.nic.tablexia.bus.event.DeleteUserSynchronizationEvent; import cz.nic.tablexia.bus.event.DeleteUserSynchronizationEvent;
import cz.nic.tablexia.bus.event.DimmerControlEvent; 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.StartFullSynchronizationEvent;
import cz.nic.tablexia.bus.event.StartIncrementalSynchronizationEvent; import cz.nic.tablexia.bus.event.StartIncrementalSynchronizationEvent;
import cz.nic.tablexia.debug.DebugInfo; import cz.nic.tablexia.debug.DebugInfo;
...@@ -46,6 +47,7 @@ import cz.nic.tablexia.screen.AbstractTablexiaScreen.ScreenLoadingListener; ...@@ -46,6 +47,7 @@ import cz.nic.tablexia.screen.AbstractTablexiaScreen.ScreenLoadingListener;
import cz.nic.tablexia.shared.model.User; import cz.nic.tablexia.shared.model.User;
import cz.nic.tablexia.sync.RestSynchronizationService; import cz.nic.tablexia.sync.RestSynchronizationService;
import cz.nic.tablexia.sync.work.DeleteUser; 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.sync.work.PushDataToServer;
import cz.nic.tablexia.util.Log; import cz.nic.tablexia.util.Log;
import cz.nic.tablexia.util.ui.TablexiaButton; import cz.nic.tablexia.util.ui.TablexiaButton;
...@@ -799,4 +801,14 @@ public abstract class TablexiaApplication implements ApplicationListener { ...@@ -799,4 +801,14 @@ public abstract class TablexiaApplication implements ApplicationListener {
RestSynchronizationService.doSyncWork(new DeleteUser(syncEvent.getUser())); 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()));
}
} }
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;
}
}
...@@ -36,6 +36,7 @@ import cz.nic.tablexia.TablexiaSettings; ...@@ -36,6 +36,7 @@ import cz.nic.tablexia.TablexiaSettings;
import cz.nic.tablexia.TablexiaStorage; import cz.nic.tablexia.TablexiaStorage;
import cz.nic.tablexia.bus.ApplicationBus; import cz.nic.tablexia.bus.ApplicationBus;
import cz.nic.tablexia.bus.ApplicationBus.ApplicationEvent; 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.StartFullSynchronizationEvent;
import cz.nic.tablexia.bus.event.StartIncrementalSynchronizationEvent; import cz.nic.tablexia.bus.event.StartIncrementalSynchronizationEvent;
import cz.nic.tablexia.loader.TablexiaAbstractFileManager; import cz.nic.tablexia.loader.TablexiaAbstractFileManager;
...@@ -457,12 +458,16 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter { ...@@ -457,12 +458,16 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
stage.draw(); 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(); 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) { public void addDisposable(Disposable disposable) {
disposables.add(disposable); disposables.add(disposable);
} }
......
...@@ -50,10 +50,10 @@ public class RestSynchronizationService { ...@@ -50,10 +50,10 @@ public class RestSynchronizationService {
} }
public static void doSyncWork(SyncWork work) { public static void doSyncWork(SyncWork work) {
/*if (Tablexia.connectionManager.isUsingMobileData()) { if (Tablexia.connectionManager.isUsingMobileData()) {
Log.debug(RestSynchronizationService.class, "Using mobile data connection - synchronization disabled"); Log.debug(RestSynchronizationService.class, "Using mobile data connection - synchronization disabled");
return; return;
}*/ }
work.send(new RestSynchronizationService(work.getUrl(), work.getHttpMethod(), work)); work.send(new RestSynchronizationService(work.getUrl(), work.getHttpMethod(), work));
} }
......
...@@ -38,6 +38,11 @@ public class DownloadUser extends SyncWork { ...@@ -38,6 +38,11 @@ public class DownloadUser extends SyncWork {
json.setIgnoreUnknownFields(true); json.setIgnoreUnknownFields(true);
User user = json.fromJson(User.class, userJson); 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(); long start = System.currentTimeMillis();
user.setId(UserDAO.importUser(user)); user.setId(UserDAO.importUser(user));
long finish = System.currentTimeMillis(); long finish = System.currentTimeMillis();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment