summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-06-23 19:10:48 +0200
committerSimon Rettberg2015-06-23 19:10:48 +0200
commit8ad025dd99468f71d2fa5c49e0bcf359b055ec97 (patch)
tree6208ff7d598116e36b21882e5a018a99d2506103 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java
parentfix bwLehrpool logo not beeing read from the resources (diff)
downloadtutor-module-8ad025dd99468f71d2fa5c49e0bcf359b055ec97.tar.gz
tutor-module-8ad025dd99468f71d2fa5c49e0bcf359b055ec97.tar.xz
tutor-module-8ad025dd99468f71d2fa5c49e0bcf359b055ec97.zip
[server] More methods implemented
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java102
1 files changed, 102 insertions, 0 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 51daed49..4dae8039 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
@@ -4,15 +4,18 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
import org.apache.log4j.Logger;
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.thrift.iface.ImageBaseWrite;
import org.openslx.bwlp.thrift.iface.ImageDetailsRead;
import org.openslx.bwlp.thrift.iface.ImagePermissions;
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.bwlp.thrift.iface.ImageVersionDetails;
+import org.openslx.bwlp.thrift.iface.ImageVersionWrite;
import org.openslx.bwlp.thrift.iface.ShareMode;
import org.openslx.bwlp.thrift.iface.TNotFoundException;
import org.openslx.bwlp.thrift.iface.UserInfo;
@@ -169,6 +172,86 @@ public class DbImage {
}
/**
+ * Create new row in the imagebase table.
+ *
+ * @param user the user the image will belong to
+ * @param imageName name of the image to be created
+ * @return UUID of the newly created image
+ * @throws SQLException
+ */
+ public static String createImage(UserInfo user, String imageName) throws SQLException {
+ try (MysqlConnection connection = Database.getConnection()) {
+ MysqlStatement stmt = connection.prepareStatement("INSERT INTO imagebase"
+ + " (imagebaseid, displayname, createtime, updatetime, ownerid, updaterid, sharemode,"
+ + " istemplate, canlinkdefault, candownloaddefault, caneditdefault, canadmindefault)"
+ + " VALUES"
+ + " (:baseid, :name, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), :userid, :userid, 'LOCAL',"
+ + " 0, 0, 0, 0, 0)");
+ String imageUuid = UUID.randomUUID().toString();
+ stmt.setString("baseid", imageUuid);
+ stmt.setString("name", imageName);
+ stmt.setString("userid", user.userId);
+ stmt.executeUpdate();
+ connection.commit();
+ return imageUuid;
+ } catch (SQLException e) {
+ LOGGER.error("Query failed in DbImage.createImage()", e);
+ throw e;
+ }
+ }
+
+ public static void updateImageMetadata(UserInfo user, String imageBaseId, ImageBaseWrite image)
+ throws SQLException {
+ try (MysqlConnection connection = Database.getConnection()) {
+ /*
+ 1: string imageName,
+ 2: string description,
+ 3: i32 osId,
+ 4: bool isTemplate,
+ 5: ImagePermissions defaultPermissions,
+ 6: ShareMode shareMode,
+ 7: optional UUID ownerId,
+ */
+ MysqlStatement stmt = connection.prepareStatement("UPDATE imagebase"
+ + " SET displayname = :imagename, description = :description,"
+ + " osid = :osid, virtid = :virtid, istemplate = :istemplate, canlinkdefault = :canlink,"
+ + " candownloaddefault = :candownload, caneditdefault = :canedit,"
+ + " updaterid = :updaterid, updatetime = UNIX_TIMESTAMP(),"
+ + " canadmindefault = :canadmin" + " WHERE imagebaseid = :baseid");
+ stmt.setString("baseid", imageBaseId);
+ stmt.setString("imagename", image.imageName);
+ stmt.setString("description", image.description);
+ stmt.setInt("osid", image.osId);
+ stmt.setString("virtid", image.virtId);
+ stmt.setBoolean("istemplate", image.isTemplate);
+ stmt.setBoolean("canlink", image.defaultPermissions.link);
+ stmt.setBoolean("candownload", image.defaultPermissions.download);
+ stmt.setBoolean("canedit", image.defaultPermissions.edit);
+ stmt.setBoolean("canadmin", image.defaultPermissions.admin);
+ stmt.setString("updaterid", user.userId);
+ stmt.executeUpdate();
+ connection.commit();
+ } catch (SQLException e) {
+ LOGGER.error("Query failed in DbImage.updateImageMetadata()", e);
+ throw e;
+ }
+ }
+
+ public static void setImageOwner(String imageBaseId, String newOwnerId) throws SQLException {
+ try (MysqlConnection connection = Database.getConnection()) {
+ MysqlStatement stmt = connection.prepareStatement("UPDATE imagebase"
+ + " SET ownerid = :ownerid WHERE imagebaseid = :baseid");
+ stmt.setString("ownerid", newOwnerId);
+ stmt.setString("baseid", imageBaseId);
+ stmt.executeQuery();
+ connection.commit();
+ } catch (SQLException e) {
+ LOGGER.error("Query failed in DbImage.setImageOwner()", e);
+ throw e;
+ }
+ }
+
+ /**
* Get the UUID of the image base belonging to the given image version UUID.
* Returns <code>null</code> if the UUID does not exist.
*
@@ -208,4 +291,23 @@ public class DbImage {
return ShareMode.valueOf(string);
}
+ public static void updateImageVersion(UserInfo user, String imageVersionId, ImageVersionWrite image)
+ throws SQLException {
+ try (MysqlConnection connection = Database.getConnection()) {
+ MysqlStatement stmt = connection.prepareStatement("UPDATE imageversion v, imagebase b SET"
+ + " v.isenabled = :isenabled, v.isrestricted = :isrestricted,"
+ + " b.updaterid = :userid, b.updatetime = UNIX_TIMESTAMP()"
+ + " WHERE v.imageversionid = :versionid AND v.imagebaseid = b.imagebaseid");
+ stmt.setString("versionid", imageVersionId);
+ stmt.setString("userid", user.userId);
+ stmt.setBoolean("isenabled", image.isEnabled);
+ stmt.setBoolean("isrestricted", image.isRestricted);
+ stmt.executeQuery();
+ connection.commit();
+ } catch (SQLException e) {
+ LOGGER.error("Query failed in DbImage.updateImageVersion()", e);
+ throw e;
+ }
+ }
+
}