summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/db
diff options
context:
space:
mode:
authorNils Schwabe2014-04-28 18:18:59 +0200
committerNils Schwabe2014-04-28 18:18:59 +0200
commit287ad92152c530b400a5405a4672a41d92e4d368 (patch)
tree42dcb2c698672ae371d70a81ea5c49f3280db9c6 /src/main/java/org/openslx/imagemaster/db
parentAdd remove image from process list (when user gets deleted after timeout) (diff)
downloadmasterserver-287ad92152c530b400a5405a4672a41d92e4d368.tar.gz
masterserver-287ad92152c530b400a5405a4672a41d92e4d368.tar.xz
masterserver-287ad92152c530b400a5405a4672a41d92e4d368.zip
Add ftp users and images in processing list are remembered
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/db')
-rw-r--r--src/main/java/org/openslx/imagemaster/db/DbImage.java77
-rw-r--r--src/main/java/org/openslx/imagemaster/db/DbUser.java19
-rw-r--r--src/main/java/org/openslx/imagemaster/db/LdapUser.java8
3 files changed, 89 insertions, 15 deletions
diff --git a/src/main/java/org/openslx/imagemaster/db/DbImage.java b/src/main/java/org/openslx/imagemaster/db/DbImage.java
index f5b8ee4..5ab2c4b 100644
--- a/src/main/java/org/openslx/imagemaster/db/DbImage.java
+++ b/src/main/java/org/openslx/imagemaster/db/DbImage.java
@@ -1,18 +1,71 @@
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.thrift.iface.ImageData;
public class DbImage
{
- private String UUID;
+ public final String UUID;
+ public final int imageVersion;
+ public final String imageName;
+ public final String imagePath;
+ public final Timestamp imageCreateTime;
+ public final Timestamp imageUpdateTime;
+ public final String imageOwner;
+ 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 String ftpUser;
+ public final long fileSize;
+
public DbImage(String UUID)
{
this.UUID = UUID;
+ this.imageVersion = 0;
+ this.imageName = null;
+ this.imagePath = null;
+ this.imageCreateTime = null;
+ this.imageUpdateTime = null;
+ this.imageOwner = null;
+ this.contentOperatingSystem = null;
+ this.isValid = false;
+ this.isDeleted = false;
+ this.shortDescription = null;
+ this.longDescription = null;
+ this.timestamp = new Timestamp( 0 );
+ this.ftpUser = null;
+ this.fileSize = 0;
+ }
+
+ public DbImage(String UUID, int imageVersion, String imageName, String imagePath,
+ Timestamp imageCreateTime, Timestamp imageUpdateTime, int imageOwner, String contentOperatingSystem,
+ boolean isValid, boolean isDeleted, String shortDescription, String longDescription,
+ Timestamp timestamp, String ftpUser, long fileSize)
+ {
+ this.UUID = UUID;
+ this.imageVersion = imageVersion;
+ this.imageName = imageName;
+ this.imagePath = imagePath;
+ this.imageCreateTime = imageCreateTime;
+ this.imageUpdateTime = imageUpdateTime;
+ this.imageOwner = DbUser.getUserNameById( imageOwner );
+ this.contentOperatingSystem = contentOperatingSystem;
+ this.isValid = isValid;
+ this.isDeleted = isDeleted;
+ this.shortDescription = shortDescription;
+ this.longDescription = longDescription;
+ this.timestamp = timestamp;
+ this.ftpUser = ftpUser;
+ this.fileSize = fileSize;
}
/**
@@ -32,22 +85,29 @@ public class DbImage
}
}
- public static int insert( ImageData imageData )
+ /**
+ * Insert a new image into database
+ * @param imageData The metadata of the image
+ * @param ts The timestamp of inserting
+ * @return Affected rows
+ */
+ public static int insert( ImageData imageData, long ts, String ftpUser )
{
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 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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
+ "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, ftpUser, fileSize) 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 );
+ imageData.imageLongDescription, sdf.format( timestamp ), ftpUser, imageData.fileSize );
}
public String getUUID()
@@ -60,8 +120,13 @@ public class DbImage
return MySQL.update( "UPDATE images SET images.image_path = ? WHERE images.UUID = ?", location, imageData.uuid );
}
- public static int delete( ImageData imageData )
+ public static int delete( String UUID )
+ {
+ return MySQL.update( "DELETE FROM images WHERE images.UUID=?", UUID );
+ }
+
+ public static List<DbImage> getUploadingImages()
{
- return MySQL.update( "DELETE FROM images WHERE images.UUID=?", imageData.uuid );
+ return MySQL.findAll( DbImage.class, "SELECT images.UUID, images.image_version, images.image_name, images.image_path, images.image_createTime, images.image_updateTime, images.image_owner, images.content_operatingSystem, images.status_isValid, images.status_isDeleted, images.image_shortDescription, images.image_longDescription, images.timestamp, images.ftpUser, images.fileSize FROM images WHERE image_path = ?", "!uploading!" );
}
}
diff --git a/src/main/java/org/openslx/imagemaster/db/DbUser.java b/src/main/java/org/openslx/imagemaster/db/DbUser.java
index 45cbb2a..8cf4b55 100644
--- a/src/main/java/org/openslx/imagemaster/db/DbUser.java
+++ b/src/main/java/org/openslx/imagemaster/db/DbUser.java
@@ -55,11 +55,20 @@ public class DbUser extends 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 = ? LIMIT 1", username );
- if ( user != null ) {
- return user.userId;
- } else {
- return 0;
- }
+ if ( user == null ) return 0;
+ return user.userId;
+ }
+
+ public static String getUserNameById( int id )
+ {
+ 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.userid = ? LIMIT 1", id );
+ if (user == null) return "";
+ return user.username;
}
}
diff --git a/src/main/java/org/openslx/imagemaster/db/LdapUser.java b/src/main/java/org/openslx/imagemaster/db/LdapUser.java
index 08eb127..deb30f3 100644
--- a/src/main/java/org/openslx/imagemaster/db/LdapUser.java
+++ b/src/main/java/org/openslx/imagemaster/db/LdapUser.java
@@ -80,7 +80,6 @@ public class LdapUser extends User
String[] temp = login.split( "@" );
if ( temp.length != 2 )
throw new AuthenticationException( AuthenticationError.GENERIC_ERROR, "Login must be in form user@organization.com" );
- username = temp[0];
LdapConnectionConfig ldapConfig = new LdapConnectionConfig();
ldapConfig.setTrustManagers( new MyTrustManager() );
@@ -93,7 +92,8 @@ public class LdapUser extends User
// bind connection
try {
if ( connection.connect() ) {
- String name = Globals.getPropertyString( PropString.LDAPBINDQUERY ).replace( "%", username );
+ String name = Globals.getPropertyString( PropString.LDAPBINDQUERY ).replace( "%", login ).replace( "@", "\\40" );
+ log.info( "Bind with: " + name );
connection.bind( name, password );
}
} catch ( LdapException e1 ) {
@@ -124,11 +124,11 @@ public class LdapUser extends User
// make search query
try {
EntryCursor cursor = connection.search( Globals.getPropertyString( Globals.PropString.LDAPSEARCHBASEDN ),
- Globals.getPropertyString( Globals.PropString.LDAPSEARCHFILTER ).replace( "%", username ), SearchScope.SUBTREE );
+ Globals.getPropertyString( Globals.PropString.LDAPSEARCHFILTER ).replace( "%", login ), SearchScope.SUBTREE );
// only use the first result
cursor.next();
Entry entry = cursor.get();
- username = entry.get( "uid" ).getString();
+ username = entry.get( "cn" ).getString();
organization = "Test Organization"; // will be filled with bwIDM LDAP server
firstName = entry.get( "givenName" ).getString();
lastName = entry.get( "sn" ).getString();