summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2015-09-09 11:11:04 +0200
committerSimon Rettberg2015-09-09 11:11:04 +0200
commit1b7793a849cb7302c71012a81f1c4996b5d40e48 (patch)
treea62ff2b67fead2625d1b96166c082d53a9edd53f
parent[server] Json package changed (diff)
downloadtutor-module-1b7793a849cb7302c71012a81f1c4996b5d40e48.tar.gz
tutor-module-1b7793a849cb7302c71012a81f1c4996b5d40e48.tar.xz
tutor-module-1b7793a849cb7302c71012a81f1c4996b5d40e48.zip
[client] Tweak caching strategies for meta data
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java2
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java2
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java15
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/MetaDataCache.java18
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/OrganizationCache.java2
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/thrift/cache/UserCache.java2
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;