diff options
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/db/DbImage.java')
-rw-r--r-- | src/main/java/org/openslx/imagemaster/db/DbImage.java | 88 |
1 files changed, 44 insertions, 44 deletions
diff --git a/src/main/java/org/openslx/imagemaster/db/DbImage.java b/src/main/java/org/openslx/imagemaster/db/DbImage.java index dc2ab34..a7a2adb 100644 --- a/src/main/java/org/openslx/imagemaster/db/DbImage.java +++ b/src/main/java/org/openslx/imagemaster/db/DbImage.java @@ -1,8 +1,6 @@ package org.openslx.imagemaster.db; import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.Date; import java.util.List; import org.openslx.imagemaster.Globals; @@ -20,22 +18,22 @@ public class DbImage public final String uuid; public final int imageVersion; public final String imageName; + /** + * Relative path of image file (relative to Globals.getImageDir()) + */ public final String imagePath; public final Timestamp imageCreateTime; public final Timestamp imageUpdateTime; - public final String imageOwner; + public final int imageOwnerId; public final String contentOperatingSystem; public final boolean isValid; public final boolean isDeleted; public final String shortDescription; public final String longDescription; - public final Timestamp timestamp; public final long fileSize; - public final String token; public final int[] blockStatus; - public final String serverSessionId; - public DbImage(String uuid) + public DbImage( String uuid ) { this.uuid = uuid; this.imageVersion = 0; @@ -43,23 +41,20 @@ public class DbImage this.imagePath = null; this.imageCreateTime = null; this.imageUpdateTime = null; - this.imageOwner = null; + this.imageOwnerId = 0; this.contentOperatingSystem = null; this.isValid = false; this.isDeleted = false; this.shortDescription = null; this.longDescription = null; - this.timestamp = new Timestamp( 0 ); this.fileSize = 0; - this.token = null; this.blockStatus = null; - this.serverSessionId = null; } - public DbImage(String uuid, int imageVersion, String imageName, String imagePath, - Timestamp imageCreateTime, Timestamp imageUpdateTime, String imageOwner, String contentOperatingSystem, + public DbImage( String uuid, int imageVersion, String imageName, String imagePath, + Timestamp imageCreateTime, Timestamp imageUpdateTime, int imageOwnerId, String contentOperatingSystem, boolean isValid, boolean isDeleted, String shortDescription, String longDescription, - Timestamp timestamp, long fileSize, String token, String missingBlocksList, String serverSessionId) + long fileSize, String missingBlocksList ) { this.uuid = uuid; this.imageVersion = imageVersion; @@ -67,26 +62,24 @@ public class DbImage this.imagePath = imagePath; this.imageCreateTime = imageCreateTime; this.imageUpdateTime = imageUpdateTime; - this.imageOwner = imageOwner; + this.imageOwnerId = imageOwnerId; this.contentOperatingSystem = contentOperatingSystem; this.isValid = isValid; this.isDeleted = isDeleted; this.shortDescription = shortDescription; this.longDescription = longDescription; - this.timestamp = timestamp; this.fileSize = fileSize; - this.token = token; String[] parts = missingBlocksList.split( ";" ); blockStatus = new int[ Util.getNumberOfBlocks( fileSize, Globals.blockSize ) ]; // initialize array to ones - for ( int i : blockStatus ) { - blockStatus[i] = UploadingImage.valid; + for ( int i = 0; i < blockStatus.length; ++i ) { + blockStatus[i] = UploadingImage.VALID; } - for ( int i = 0; i < parts.length; i++ ) { - blockStatus[i] = UploadingImage.missing; + for ( String block : parts ) { // Now mark missing blocks (if any) + int i = Util.tryToParseInt( block, -1 ); + if ( i >= 0 && i < blockStatus.length ) + blockStatus[i] = UploadingImage.MISSING; } - - this.serverSessionId = serverSessionId; } /** @@ -104,38 +97,30 @@ public class DbImage * Insert a new image into database * * @param imageData The metadata of the image - * @param ts The timestamp of inserting - * @param token The token that is able to upload this image - * @param amountBlocks The blocks that are missing for this image - * @param serverSessionId The server that is uploading this image + * @param filepath Local storage path of image * @return Affected rows */ - public static int insert( ImageData imageData, long ts, String token, int amountBlocks, String serverSessionId, String filepath ) + public static int insert( ImageData imageData, String filepath ) { - Date createTime = new Date( imageData.imageCreateTime ); - Date updateTime = new Date( imageData.imageUpdateTime ); - Date timestamp = new Date( ts ); - SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); - + int numBlocks = Util.getNumberOfBlocks( imageData.fileSize, Globals.blockSize ); String missingBlocksList = ""; - for ( int i = 0; i < amountBlocks; i++ ) { + for ( int i = 0; i < numBlocks; i++ ) { missingBlocksList = missingBlocksList + String.valueOf( i ) + ";"; } + DbUser user = DbUser.forLogin( imageData.imageOwner ); + int owner = 0; + if (user != null) + owner = user.userId; return MySQL .update( - "INSERT INTO images (UUID, image_version, image_name, image_path, image_createTime, image_updateTime, image_owner, content_operatingSystem, status_isValid, status_isDeleted, image_shortDescription, image_longDescription, timestamp, fileSize, token, missingBlocks, serverSessionId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "INSERT INTO images (UUID, image_version, image_name, image_path, image_createTime, image_updateTime, image_owner, content_operatingSystem, status_isValid, status_isDeleted, image_shortDescription, image_longDescription, fileSize, missingBlocks) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", imageData.uuid, imageData.imageVersion, imageData.imageName, filepath, - sdf.format( createTime ), sdf.format( updateTime ), imageData.imageOwner, + imageData.imageCreateTime, imageData.imageUpdateTime, owner, imageData.contentOperatingSystem, imageData.statusIsValid, imageData.statusIsDeleted, imageData.imageShortDescription, - imageData.imageLongDescription, sdf.format( timestamp ), imageData.fileSize, - token, missingBlocksList, serverSessionId ); - } - - public String getUuid() - { - return this.uuid; + imageData.imageLongDescription, imageData.fileSize, + missingBlocksList ); } /** @@ -218,8 +203,23 @@ public class DbImage */ public ImageData getImageData() { + String owner = "unknown"; + DbUser user = DbUser.forLogin( this.imageOwnerId ); + if (user != null) + owner = user.getLogin(); return new ImageData( this.uuid, this.imageVersion, this.imageName, this.imageCreateTime.getTime(), - this.imageUpdateTime.getTime(), this.imageOwner, this.contentOperatingSystem, this.isValid, + this.imageUpdateTime.getTime(), owner, this.contentOperatingSystem, this.isValid, this.isDeleted, this.shortDescription, this.longDescription, this.fileSize ); } + + /** + * Get absolute path of this image + * + * @return absolute path + */ + public String getAbsolutePath() + { + return Globals.getImageDir() + "/" + this.imagePath; + } + } |