diff options
author | Nils Schwabe | 2014-04-11 12:09:58 +0200 |
---|---|---|
committer | Nils Schwabe | 2014-04-11 12:09:58 +0200 |
commit | 7e776645ecd93190221b188b3c1c3de749fb03a7 (patch) | |
tree | 1730cbe9d06a56e3f3005558d4ed064d4169aff3 /src/main/java/org | |
parent | Added some functionallity to the ImageProcessor. (diff) | |
download | masterserver-7e776645ecd93190221b188b3c1c3de749fb03a7.tar.gz masterserver-7e776645ecd93190221b188b3c1c3de749fb03a7.tar.xz masterserver-7e776645ecd93190221b188b3c1c3de749fb03a7.zip |
added connection to image database
--> images are now processed after ftp upload
--> image is moved to image_dir
--> DB is updated with imageData
Diffstat (limited to 'src/main/java/org')
6 files changed, 110 insertions, 22 deletions
diff --git a/src/main/java/org/openslx/imagemaster/db/DbImage.java b/src/main/java/org/openslx/imagemaster/db/DbImage.java new file mode 100644 index 0000000..d3e8a94 --- /dev/null +++ b/src/main/java/org/openslx/imagemaster/db/DbImage.java @@ -0,0 +1,54 @@ +package org.openslx.imagemaster.db; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.openslx.imagemaster.thrift.iface.ImageData; + +public class DbImage { + private String UUID; + + public DbImage(String UUID) { + this.UUID = UUID; + } + + /** + * Check if image with imageData already exists. (Only checks the UUID.) + * + * @param imageData + * @return + */ + public static boolean exists(ImageData imageData) { + if (MySQL.findUniqueOrNull(DbImage.class, + "SELECT images.UUID FROM images WHERE images.UUID = ?", + imageData.uuid) == null) { + return false; + } else { + return true; + } + } + + public static int insert(ImageData imageData) { + Date createTime = new Date(imageData.imageCreateTime); + Date updateTime = new Date(imageData.imageUpdateTime); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + int ownerId = DbUser.getUserIdByName(imageData.imageOwner); + + 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) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + imageData.uuid, imageData.imageVersion, imageData.imageName, "!uploading!", + sdf.format(createTime), sdf.format(updateTime), ownerId, + imageData.conentOperatingSystem, imageData.statusIsValid, + imageData.statusIsDeleted, imageData.imageShortDescription, + imageData.imageLongDescription); + } + + public String getUUID() { + return this.UUID; + } + + public static int update(ImageData imageData, String location) { + return MySQL.update("UPDATE images SET images.image_path = ? WHERE images.UUID = ?", location, imageData.uuid); + } +} diff --git a/src/main/java/org/openslx/imagemaster/db/DbUser.java b/src/main/java/org/openslx/imagemaster/db/DbUser.java index 9370f40..774917d 100644 --- a/src/main/java/org/openslx/imagemaster/db/DbUser.java +++ b/src/main/java/org/openslx/imagemaster/db/DbUser.java @@ -1,16 +1,15 @@ package org.openslx.imagemaster.db; import org.apache.log4j.Logger; -import org.openslx.imagemaster.session.Authenticator; import org.openslx.imagemaster.session.User; public class DbUser extends User { - private static Logger log = Logger.getLogger( Authenticator.class ); + private static Logger log = Logger.getLogger( DbUser.class ); - public DbUser(String username, String password, String organization, + public DbUser(int userId, String username, String password, String organization, String firstName, String lastName, String eMail, String satelliteAddress) { - super(username, password, organization, firstName, lastName, eMail, + super(userId, username, password, organization, firstName, lastName, eMail, satelliteAddress); } @@ -29,7 +28,7 @@ public class DbUser extends User { return MySQL .findUniqueOrNull( DbUser.class, - "SELECT user.username, user.password, user.organization, user.firstname, user.lastname, user.email, satellite.address FROM user" + "SELECT user.userid, user.username, user.password, user.organization, user.firstname, user.lastname, user.email, satellite.address FROM user" + " LEFT JOIN satellite USING (organization)" + " WHERE user.username = ? AND user.organization = ? LIMIT 1", parts[0], parts[1]); @@ -41,5 +40,19 @@ public class DbUser extends User { user.username, user.password, user.organization, user.firstName, user.lastName, user.eMail); return false; } + + public static int getUserIdByName(String username) { + DbUser user = MySQL + .findUniqueOrNull( + DbUser.class, + "SELECT user.userid, user.username, user.password, user.organization, user.firstname, user.lastname, user.email, satellite.address FROM user" + + " LEFT JOIN satellite USING (organization)" + + " WHERE user.username = ? LIMIT 1", username); + if (user != null) { + return user.userId; + } else { + return 0; + } + } } diff --git a/src/main/java/org/openslx/imagemaster/db/ImageProcessor.java b/src/main/java/org/openslx/imagemaster/db/ImageProcessor.java index 804e4b9..d43b507 100644 --- a/src/main/java/org/openslx/imagemaster/db/ImageProcessor.java +++ b/src/main/java/org/openslx/imagemaster/db/ImageProcessor.java @@ -19,20 +19,27 @@ public class ImageProcessor { log.info("Will now process '" + filename + "' from user '" + username + "'"); - // look for database entry, update it and move image to right location - String oldFileName = Globals.properties.getProperty("ftp_base_dir") + "/" + username - + "/" + filename; + // move image to right location + String oldFileName = Globals.properties.getProperty("ftp_base_dir") + "/" + username + "/" + filename; + String newFileName = Globals.properties.getProperty("image_dir") + "/" + images.get(username).uuid; + File imageFile = new File(oldFileName); + if (!imageFile.exists()) { - // image file does not exist?? + // image file does not exist return; } - String newFileName = Globals.properties.getProperty("image_dir") + "/" + images.get(username).imageName; + imageFile.renameTo( new File(newFileName) ); + log.info("Moved file from " + oldFileName + " to " + newFileName ); File tempUserDir = new File (Globals.properties.getProperty("ftp_base_dir") + "/" + username); tempUserDir.delete(); + + // update database + DbImage.update(images.get(username), newFileName); + log.info("Updated db: " + images.get(username).uuid); } /** @@ -44,13 +51,25 @@ public class ImageProcessor { */ public static boolean addImageDataToProcess(ImageData imageData, String username) { - /* - * TODO: - * check if imagedata is correct - * check if image is already in db - */ - - // if everything went fine, add image to processing list + log.info("Adding image to process list: " + imageData.imageName + ", submitted by " + username); + + if (imageData.uuid.isEmpty() || imageData.imageName.isEmpty() + || imageData.imageOwner.isEmpty() || imageData.conentOperatingSystem.isEmpty() + || imageData.imageShortDescription.isEmpty() + || imageData.imageLongDescription.isEmpty()) { + return false; + } + + // TODO: check some regex? + + if (DbImage.exists(imageData)) { + return false; + } + + // if everything went fine, add image to db + DbImage.insert(imageData); + + // and to processinglist images.put(username, imageData); return true; } diff --git a/src/main/java/org/openslx/imagemaster/db/LDAPUser.java b/src/main/java/org/openslx/imagemaster/db/LDAPUser.java index 1034116..2d17b08 100644 --- a/src/main/java/org/openslx/imagemaster/db/LDAPUser.java +++ b/src/main/java/org/openslx/imagemaster/db/LDAPUser.java @@ -39,10 +39,10 @@ class MyTrustManager implements X509TrustManager { public class LDAPUser extends User { - protected LDAPUser(String username, String password, String organization, + protected LDAPUser(int userId, String username, String password, String organization, String firstName, String lastName, String eMail, String satelliteAddress) { - super(username, password, organization, firstName, lastName, eMail, + super(userId, username, password, organization, firstName, lastName, eMail, satelliteAddress); } @@ -129,6 +129,6 @@ public class LDAPUser extends User { return null; } } - return new LDAPUser(username, Sha512Crypt.Sha512_crypt(password, null, 0), organization, firstName, lastName, eMail, satelliteAddress); + return new LDAPUser(0, username, Sha512Crypt.Sha512_crypt(password, null, 0), organization, firstName, lastName, eMail, satelliteAddress); } } diff --git a/src/main/java/org/openslx/imagemaster/server/ApiServer.java b/src/main/java/org/openslx/imagemaster/server/ApiServer.java index 7a24c43..57df2b9 100644 --- a/src/main/java/org/openslx/imagemaster/server/ApiServer.java +++ b/src/main/java/org/openslx/imagemaster/server/ApiServer.java @@ -100,7 +100,7 @@ public class ApiServer { String generatedPass = RandomString.generate(16, true); if (!ImageProcessor.addImageDataToProcess(imageDescription, generatedUser)) { - throw new TException("ImageData is not valid. Does this image exist already?"); + throw new TException("ImageData is not valid."); } String dir = Globals.properties.getProperty("ftp_base_dir") + "/" diff --git a/src/main/java/org/openslx/imagemaster/session/User.java b/src/main/java/org/openslx/imagemaster/session/User.java index 52c8c78..7ff9a24 100644 --- a/src/main/java/org/openslx/imagemaster/session/User.java +++ b/src/main/java/org/openslx/imagemaster/session/User.java @@ -13,10 +13,12 @@ public abstract class User public final String firstName, lastName; public final String eMail; public final String satelliteAddress; + public final int userId; - protected User(String username, String password, String organization, String firstName, String lastName, String eMail, + protected User(int userId, String username, String password, String organization, String firstName, String lastName, String eMail, String satelliteAddress) { + this.userId = userId; this.username = username; this.organization = organization; this.password = password; |