diff options
author | Simon Rettberg | 2016-07-26 10:33:23 +0200 |
---|---|---|
committer | Simon Rettberg | 2016-07-26 10:33:23 +0200 |
commit | c1b671d4837e00427f10aa7bc86063ebf05fb7a2 (patch) | |
tree | 81a0bf786b7d96294b8688e361690cdd3a5f1f16 | |
parent | [client] Add rudimentary menu entry to extend image expire date (diff) | |
download | tutor-module-c1b671d4837e00427f10aa7bc86063ebf05fb7a2.tar.gz tutor-module-c1b671d4837e00427f10aa7bc86063ebf05fb7a2.tar.xz tutor-module-c1b671d4837e00427f10aa7bc86063ebf05fb7a2.zip |
[server] Implement loading of SatelliteConfig from DB
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/RuntimeConfig.java | 71 | ||||
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbConfiguration.java | 20 |
2 files changed, 69 insertions, 22 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/RuntimeConfig.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/RuntimeConfig.java index 3a0aaf79..987a3f90 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/RuntimeConfig.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/RuntimeConfig.java @@ -1,47 +1,74 @@ package org.openslx.bwlp.sat; +import java.sql.SQLException; + import org.openslx.bwlp.sat.database.Paginator; +import org.openslx.bwlp.sat.database.mappers.DbConfiguration; import org.openslx.bwlp.sat.util.Constants; import org.openslx.bwlp.thrift.iface.ImagePermissions; import org.openslx.bwlp.thrift.iface.LecturePermissions; import org.openslx.bwlp.thrift.iface.SatelliteConfig; +import org.openslx.util.GenericDataCache; public class RuntimeConfig { - private static final SatelliteConfig satConfig; - - static { - // TODO: Periodically read from DB - satConfig = new SatelliteConfig(); - satConfig.setDefaultImagePermissions(new ImagePermissions(true, true, false, false)); - satConfig.setDefaultLecturePermissions(new LecturePermissions(false, false)); - satConfig.setMaxImageValidityDays(220); - satConfig.setMaxLectureValidityDays(220); - satConfig.setPageSize(Paginator.PER_PAGE); - satConfig.setMaxConnectionsPerTransfer(Constants.MAX_CONNECTIONS_PER_TRANSFER); - satConfig.setMaxTransfers(Constants.MAX_UPLOADS_PER_USER); - satConfig.setMaxLocationsPerLecture(4); - } + private static GenericDataCache<SatelliteConfig> cache = new GenericDataCache<SatelliteConfig>(60000) { + + @Override + protected SatelliteConfig update() throws Exception { + SatelliteConfig satConfig; + try { + satConfig = DbConfiguration.getSatelliteConfig(); + } catch (SQLException e) { + satConfig = null; + } + if (satConfig == null) { + satConfig = new SatelliteConfig(); + } + if (satConfig.defaultImagePermissions == null) { + satConfig.setDefaultImagePermissions(new ImagePermissions(true, true, false, false)); + } + if (satConfig.defaultLecturePermissions == null) { + satConfig.setDefaultLecturePermissions(new LecturePermissions(false, false)); + } + if (satConfig.maxImageValidityDays == 0) { + satConfig.setMaxImageValidityDays(220); + } else if (satConfig.maxImageValidityDays < 7) { + satConfig.maxImageValidityDays = 7; + } + if (satConfig.maxLectureValidityDays == 0) { + satConfig.setMaxLectureValidityDays(220); + } else if (satConfig.maxLectureValidityDays < 7) { + satConfig.setMaxLectureValidityDays(7); + } + satConfig.setPageSize(Paginator.PER_PAGE); + satConfig.setMaxConnectionsPerTransfer(Constants.MAX_CONNECTIONS_PER_TRANSFER); + satConfig.setMaxTransfers(Constants.MAX_UPLOADS_PER_USER); + satConfig.setMaxLocationsPerLecture(4); + return satConfig; + } + }; public static SatelliteConfig get() { - return satConfig.deepCopy(); + return cache.get().deepCopy(); } public static long getMaxImageValiditySeconds() { - return satConfig.getMaxImageValidityDays() * 86400l; + return cache.get().getMaxImageValidityDays() * 86400l; } public static long getMaxLectureValiditySeconds() { - return satConfig.getMaxLectureValidityDays() * 86400l; + return cache.get().getMaxLectureValidityDays() * 86400l; } - + public static int getMaxLocationsPerLecture() { - return satConfig.getMaxLocationsPerLecture(); + return cache.get().getMaxLocationsPerLecture(); } - + /** - * How long a version that is not the latest version of an image will be kept. - * + * How long a version that is not the latest version of an image will be + * kept. + * * @return maximum lifetime in seconds */ public static long getOldVersionExpireSeconds() { diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbConfiguration.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbConfiguration.java index bce4d214..553034ee 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbConfiguration.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbConfiguration.java @@ -20,6 +20,7 @@ import org.openslx.bwlp.sat.database.Database; import org.openslx.bwlp.sat.database.MysqlConnection; import org.openslx.bwlp.sat.database.MysqlStatement; import org.openslx.bwlp.sat.mail.MailQueue.MailConfig; +import org.openslx.bwlp.thrift.iface.SatelliteConfig; import org.openslx.util.Json; public class DbConfiguration { @@ -30,6 +31,12 @@ public class DbConfiguration { private static final String KEY_MAILCONFIG = "mailconfig"; + private static final String KEY_LIMITS = "runtimelimits"; + + static { + Json.registerThriftClass(SatelliteConfig.class); + } + public static KeyStore loadKeyStore(String password) throws KeyStoreException, SQLException, NoSuchAlgorithmException, CertificateException, IOException { KeyStore keystore = KeyStore.getInstance("JKS"); @@ -98,4 +105,17 @@ public class DbConfiguration { return Json.deserialize(new String(conf, StandardCharsets.UTF_8), MailConfig.class); } + /** + * Return satellite runtime config. + * + * @return + * @throws SQLException + */ + public static SatelliteConfig getSatelliteConfig() throws SQLException { + byte[] conf = retrieve(KEY_LIMITS); + if (conf == null) + return null; + return Json.deserializeThrift(new String(conf, StandardCharsets.UTF_8), SatelliteConfig.class); + } + } |