diff options
| author | Simon Rettberg | 2015-08-25 18:44:48 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2015-08-25 18:44:48 +0200 |
| commit | 5f83401752f5c590d002c8edc161471c204ca242 (patch) | |
| tree | 09df13620552a9ab643136bfcf48adf5c30c8f84 | |
| parent | [client] Mark invalid image versions in lecture details window (diff) | |
| download | tutor-module-5f83401752f5c590d002c8edc161471c204ca242.tar.gz tutor-module-5f83401752f5c590d002c8edc161471c204ca242.tar.xz tutor-module-5f83401752f5c590d002c8edc161471c204ca242.zip | |
[server] Group image version delete on deleteImageBase
| -rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java | 22 | ||||
| -rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java | 13 |
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); } } |
