summaryrefslogtreecommitdiffstats
path: root/src/main/java/org
diff options
context:
space:
mode:
authorNils Schwabe2014-04-11 12:09:58 +0200
committerNils Schwabe2014-04-11 12:09:58 +0200
commit7e776645ecd93190221b188b3c1c3de749fb03a7 (patch)
tree1730cbe9d06a56e3f3005558d4ed064d4169aff3 /src/main/java/org
parentAdded some functionallity to the ImageProcessor. (diff)
downloadmasterserver-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')
-rw-r--r--src/main/java/org/openslx/imagemaster/db/DbImage.java54
-rw-r--r--src/main/java/org/openslx/imagemaster/db/DbUser.java23
-rw-r--r--src/main/java/org/openslx/imagemaster/db/ImageProcessor.java43
-rw-r--r--src/main/java/org/openslx/imagemaster/db/LDAPUser.java6
-rw-r--r--src/main/java/org/openslx/imagemaster/server/ApiServer.java2
-rw-r--r--src/main/java/org/openslx/imagemaster/session/User.java4
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;