summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java
diff options
context:
space:
mode:
authorSimon Rettberg2015-08-25 18:44:48 +0200
committerSimon Rettberg2015-08-25 18:44:48 +0200
commit5f83401752f5c590d002c8edc161471c204ca242 (patch)
tree09df13620552a9ab643136bfcf48adf5c30c8f84 /dozentenmodulserver/src/main/java
parent[client] Mark invalid image versions in lecture details window (diff)
downloadtutor-module-5f83401752f5c590d002c8edc161471c204ca242.tar.gz
tutor-module-5f83401752f5c590d002c8edc161471c204ca242.tar.xz
tutor-module-5f83401752f5c590d002c8edc161471c204ca242.zip
[server] Group image version delete on deleteImageBase
Diffstat (limited to 'dozentenmodulserver/src/main/java')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java22
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java13
2 files changed, 23 insertions, 12 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java
index 0952223b..2e2393f8 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java
@@ -432,20 +432,24 @@ public class DbImage {
* @throws SQLException
* @throws TNotFoundException
*/
- public static void markForDeletion(String imageVersionId) throws SQLException, TNotFoundException {
+ public static void markForDeletion(String... imageVersionIds) throws SQLException, TNotFoundException {
+ if (imageVersionIds == null || imageVersionIds.length == 0)
+ return;
try (MysqlConnection connection = Database.getConnection()) {
// Disable version in question
MysqlStatement disableStmt = connection.prepareStatement("UPDATE imageversion SET"
+ " expiretime = UNIX_TIMESTAMP() - 86400, isvalid = 0"
+ " WHERE imageversionid = :versionid");
- disableStmt.setString("versionid", imageVersionId);
- disableStmt.executeUpdate();
+ for (String imageVersionId : imageVersionIds) {
+ disableStmt.setString("versionid", imageVersionId);
+ disableStmt.executeUpdate();
+ }
connection.commit();
} catch (SQLException e) {
LOGGER.error("Query failed in DbImage.markForDeletion()", e);
throw e;
}
- updateLatestVersionAsync(imageVersionId);
+ updateLatestVersionAsync(imageVersionIds);
}
public static void setShareMode(String imageBaseId, ImageBaseWrite newData) throws SQLException {
@@ -482,7 +486,7 @@ public class DbImage {
verStmt.setString("filepath", filePath);
verStmt.setString("uploaderid", owner.userId);
verStmt.setBoolean("isrestricted", versionSettings == null ? false : versionSettings.isRestricted);
- verStmt.setBoolean("isvalid", true); // TODO
+ verStmt.setBoolean("isvalid", true);
verStmt.setBoolean("isprocessed", false);
verStmt.setBinary("mastersha1", null); // TODO
verStmt.setBinary("virtualizerconfig", machineDescription);
@@ -567,12 +571,16 @@ public class DbImage {
});
}
- private static void updateLatestVersionAsync(final String changingImageVersionId) {
+ private static void updateLatestVersionAsync(final String... changingImageVersionIds) {
+ if (changingImageVersionIds == null || changingImageVersionIds.length == 0)
+ return;
QuickTimer.scheduleOnce(new Task() {
@Override
public void fire() {
try (MysqlConnection connection = Database.getConnection()) {
- versionValidityChanged(connection, changingImageVersionId, null);
+ for (String changingImageVersionId : changingImageVersionIds) {
+ versionValidityChanged(connection, changingImageVersionId, null);
+ }
connection.commit();
} catch (SQLException | TNotFoundException e) {
LOGGER.error("Query failed in DbImage.updateLatestVersionAsync()", e);
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
index d2fe1b44..4656519e 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
@@ -330,12 +330,15 @@ public class ServerHandler implements SatelliteServer.Iface {
throw new TInternalServerError();
}
User.canDeleteImageOrFail(imageDetails);
+ String[] ids = new String[imageDetails.versions.size()];
+ int index = 0;
for (ImageVersionDetails version : imageDetails.versions) {
- try {
- DbImage.markForDeletion(version.versionId);
- } catch (Exception e) {
- LOGGER.warn("Could not delete version when trying to delete base image", e);
- }
+ ids[index++] = version.versionId;
+ }
+ try {
+ DbImage.markForDeletion(ids);
+ } catch (Exception e) {
+ LOGGER.warn("Could not delete version when trying to delete base image", e);
}
}