diff options
author | Simon Rettberg | 2015-09-09 11:11:04 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-09-09 11:11:04 +0200 |
commit | 1b7793a849cb7302c71012a81f1c4996b5d40e48 (patch) | |
tree | a62ff2b67fead2625d1b96166c082d53a9edd53f /dozentenmodul/src | |
parent | [server] Json package changed (diff) | |
download | tutor-module-1b7793a849cb7302c71012a81f1c4996b5d40e48.tar.gz tutor-module-1b7793a849cb7302c71012a81f1c4996b5d40e48.tar.xz tutor-module-1b7793a849cb7302c71012a81f1c4996b5d40e48.zip |
[client] Tweak caching strategies for meta data
Diffstat (limited to 'dozentenmodul/src')
6 files changed, 32 insertions, 9 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java index 4293916e..4741e291 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java @@ -59,7 +59,7 @@ public class ImageTable extends ListTable<ImageSummaryRead> { if (column == COL_NAME || column == COL_USABLE || column == COL_TEMPLATE) return value; if (column == COL_OS) - return FormatHelper.osName(MetaDataCache.getOsById((int) value)); + return FormatHelper.osName(MetaDataCache.getOsById((int) value, true)); if (column == COL_OWNER) return FormatHelper.userName(UserCache.find((String) value)); if (column == COL_LASTCHANGE) diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java index 107f5687..c70842a8 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java @@ -401,7 +401,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe cboOperatingSystem.setSelectedItem(new OperatingSystem(image.getOsId(), null, null, null, 0, 0)); } - Virtualizer virt = MetaDataCache.getVirtualizerById(image.getVirtId()); + Virtualizer virt = MetaDataCache.getVirtualizerById(image.getVirtId(), true); if (virt != null) lblVirtualizer.setText(virt.getVirtName()); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java index 7d38cf84..f8932a15 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java @@ -44,6 +44,10 @@ import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.MainWindow; import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.gui.helper.QFileChooser; +import org.openslx.dozmod.thrift.cache.ImageCache; +import org.openslx.dozmod.thrift.cache.LectureCache; +import org.openslx.dozmod.thrift.cache.MetaDataCache; +import org.openslx.dozmod.thrift.cache.UserCache; import org.openslx.dozmod.util.FormatHelper; import org.openslx.dozmod.util.VmWrapper; import org.openslx.dozmod.util.VmWrapper.MetaDataMissingException; @@ -152,6 +156,17 @@ public class ThriftActions { ThriftManager.setSatelliteAddress( GraphicalCertHandler.getSslContext(Session.getSatelliteAddress()), Session.getSatelliteAddress(), App.THRIFT_SSL_PORT, App.THRIFT_TIMEOUT_MS); + QuickTimer.scheduleOnce(new Task() { + @Override + public void fire() { + // Cache useful data from server + MetaDataCache.getOperatingSystems(); + MetaDataCache.getVirtualizers(); + UserCache.getAll(); + ImageCache.get(false); + LectureCache.get(false); + } + }); return true; } return false; diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/MetaDataCache.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/MetaDataCache.java index 98f54d36..0e9f8ea4 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/MetaDataCache.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/MetaDataCache.java @@ -55,10 +55,14 @@ public class MetaDataCache { } public static OperatingSystem getOsById(int id) { + return getOsById(id, false); + } + + public static OperatingSystem getOsById(int id, boolean forceCache) { // First, try in "always cached" mode - List<OperatingSystem> list = osCache.get(CacheMode.ALWAYS_CACHED); + List<OperatingSystem> list = osCache.get(CacheMode.FORCE_CACHED); OperatingSystem os = getOsById(id, list); - if (os != null) + if (os != null || forceCache) return os; // Try again with a potential refresh List<OperatingSystem> newList = osCache.get(CacheMode.DEFAULT); @@ -85,12 +89,16 @@ public class MetaDataCache { public static List<Virtualizer> getVirtualizers() { return virtualizerCache.get(); } - + public static Virtualizer getVirtualizerById(String virtId) { + return getVirtualizerById(virtId, false); + } + + public static Virtualizer getVirtualizerById(String virtId, boolean forceCache) { // First, try in "always cached" mode - List<Virtualizer> list = virtualizerCache.get(CacheMode.ALWAYS_CACHED); + List<Virtualizer> list = virtualizerCache.get(CacheMode.FORCE_CACHED); Virtualizer virt = getVirtualizerById(virtId, list); - if (virt != null) + if (virt != null || forceCache) return virt; // Try again with a potential refresh List<Virtualizer> newList = virtualizerCache.get(CacheMode.DEFAULT); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/OrganizationCache.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/OrganizationCache.java index 95a6aa2e..69e48552 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/OrganizationCache.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/OrganizationCache.java @@ -66,7 +66,7 @@ public class OrganizationCache { */ public static Organization find(String organizationId) { // First, try in "always cached" mode - List<Organization> list = cache.get(CacheMode.ALWAYS_CACHED); + List<Organization> list = cache.get(CacheMode.PREFER_CACHED); Organization org = find(organizationId, list); if (org != null) return org; diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/UserCache.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/UserCache.java index fd23c376..809c29fd 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/UserCache.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/UserCache.java @@ -66,7 +66,7 @@ public class UserCache { */ public static UserInfo find(String userId) { // First, try in "always cached" mode - List<UserInfo> list = cache.get(CacheMode.ALWAYS_CACHED); + List<UserInfo> list = cache.get(CacheMode.PREFER_CACHED); UserInfo user = find(userId, list); if (user != null) return user; |