diff options
author | Simon Rettberg | 2015-06-23 19:10:48 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-06-23 19:10:48 +0200 |
commit | 8ad025dd99468f71d2fa5c49e0bcf359b055ec97 (patch) | |
tree | 6208ff7d598116e36b21882e5a018a99d2506103 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java | |
parent | fix bwLehrpool logo not beeing read from the resources (diff) | |
download | tutor-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.java | 102 |
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; + } + } + } |