summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/db
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/db')
-rw-r--r--src/main/java/org/openslx/imagemaster/db/DbImage.java137
-rw-r--r--src/main/java/org/openslx/imagemaster/db/DbSatellite.java31
-rw-r--r--src/main/java/org/openslx/imagemaster/db/DbUser.java16
-rw-r--r--src/main/java/org/openslx/imagemaster/db/LdapUser.java4
4 files changed, 102 insertions, 86 deletions
diff --git a/src/main/java/org/openslx/imagemaster/db/DbImage.java b/src/main/java/org/openslx/imagemaster/db/DbImage.java
index 5070c0d..ca3265f 100644
--- a/src/main/java/org/openslx/imagemaster/db/DbImage.java
+++ b/src/main/java/org/openslx/imagemaster/db/DbImage.java
@@ -15,19 +15,19 @@ public class DbImage
{
public final String uuid;
- public final int imageVersion;
- public final String imageName;
+ public final int revision;
+ public final String title;
/**
* Relative path of image file (relative to Globals.getImageDir())
*/
- public final String imagePath;
- public final long imageCreateTime;
- public final long imageUpdateTime;
- public final int imageOwnerId;
- public final String contentOperatingSystem;
+ public final String relativePath;
+ public final long createTime;
+ public final long updateTime;
+ public final int ownerId;
+ public final String ownerLogin;
+ public final String operatingSystem;
public final boolean isValid;
public final boolean isDeleted;
- public final String shortDescription;
public final String longDescription;
public final long fileSize;
public final int[] blockStatus;
@@ -35,37 +35,37 @@ public class DbImage
public DbImage( String uuid )
{
this.uuid = uuid;
- this.imageVersion = 0;
- this.imageName = null;
- this.imagePath = null;
- this.imageCreateTime = 0;
- this.imageUpdateTime = 0;
- this.imageOwnerId = 0;
- this.contentOperatingSystem = null;
+ this.revision = 0;
+ this.title = null;
+ this.relativePath = null;
+ this.createTime = 0;
+ this.updateTime = 0;
+ this.ownerId = 0;
+ this.ownerLogin = null;
+ this.operatingSystem = null;
this.isValid = false;
this.isDeleted = false;
- this.shortDescription = null;
this.longDescription = null;
this.fileSize = 0;
this.blockStatus = null;
}
public DbImage( String uuid, int imageVersion, String imageName, String imagePath,
- long imageCreateTime, long imageUpdateTime, int imageOwnerId, String contentOperatingSystem,
- boolean isValid, boolean isDeleted, String shortDescription, String longDescription,
+ long imageCreateTime, long imageUpdateTime, int imageOwnerId, String imageOwnerLogin, String contentOperatingSystem,
+ boolean isValid, boolean isDeleted, String longDescription,
long fileSize, String missingBlocksList )
{
this.uuid = uuid;
- this.imageVersion = imageVersion;
- this.imageName = imageName;
- this.imagePath = imagePath;
- this.imageCreateTime = imageCreateTime;
- this.imageUpdateTime = imageUpdateTime;
- this.imageOwnerId = imageOwnerId;
- this.contentOperatingSystem = contentOperatingSystem;
+ this.revision = imageVersion;
+ this.title = imageName;
+ this.relativePath = imagePath;
+ this.createTime = imageCreateTime;
+ this.updateTime = imageUpdateTime;
+ this.ownerId = imageOwnerId;
+ this.ownerLogin = imageOwnerLogin;
+ this.operatingSystem = contentOperatingSystem;
this.isValid = isValid;
this.isDeleted = isDeleted;
- this.shortDescription = shortDescription;
this.longDescription = longDescription;
this.fileSize = fileSize;
@@ -106,19 +106,18 @@ public class DbImage
for ( int i = 0; i < numBlocks; i++ ) {
missingBlocksList = missingBlocksList + String.valueOf( i ) + ";";
}
- DbUser user = DbUser.forLogin( imageData.imageOwner );
+ DbUser user = DbUser.forLogin( imageData.ownerLogin );
int owner = 0;
- if (user != null)
+ 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, fileSize, missingBlocks) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
- imageData.uuid, imageData.imageVersion, imageData.imageName, filepath,
- imageData.imageCreateTime, imageData.imageUpdateTime, owner,
- imageData.contentOperatingSystem, imageData.statusIsValid,
- imageData.statusIsDeleted, imageData.imageShortDescription,
- imageData.imageLongDescription, imageData.fileSize,
+ "INSERT INTO image (uuid, revision, title, path, createtime, updatetime, ownerid, operatingsystem, isvalid, isdeleted, description, filesize, missingblocks) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
+ imageData.uuid, imageData.revision, imageData.title, filepath,
+ imageData.createTime, imageData.updateTime, owner,
+ imageData.operatingSystem, imageData.isValid,
+ imageData.isDeleted, imageData.description, imageData.fileSize,
missingBlocksList );
}
@@ -136,24 +135,7 @@ public class DbImage
missingBlocksList = missingBlocksList + String.valueOf( block ) + ";";
}
}
- return MySQL.update( "UPDATE images SET images.missingBlocks = ? WHERE images.UUID = ?", missingBlocksList, uuid );
- }
-
- /**
- * Updates the database with a new version of an image and its missing blocks.
- *
- * @param version
- * @param amountBlocks
- */
- public void updateVersion( int version, int amountBlocks )
- {
- if ( version <= 0 || amountBlocks <= 0 )
- return;
- String missingBlocksList = "";
- for ( int i = 0; i < amountBlocks; i++ ) {
- missingBlocksList = missingBlocksList + String.valueOf( i ) + ";";
- }
- MySQL.update( "UPDATE images SET images.missingBlocks, images.version VALUES (?, ?)", missingBlocksList, version );
+ return MySQL.update( "UPDATE image SET image.missingblocks = ? WHERE image.uuid = ?", missingBlocksList, uuid );
}
/**
@@ -163,7 +145,7 @@ public class DbImage
*/
public int delete()
{
- return MySQL.update( "UPDATE images SET images.isDeleted=? WHERE images.UUID=?", true, uuid );
+ return MySQL.update( "UPDATE image SET image.isdeleted = 1 WHERE image.uuid = ?", this.uuid );
}
/**
@@ -176,8 +158,10 @@ public class DbImage
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.fileSize, images.token, images.missingBlocks, images.serverSessionId FROM images WHERE missingBlocks != ?",
- "" );
+ "SELECT image.uuid, image.revision, image.title, image.path, image.createtime, image.updatetime, image.ownerid, user.login, image.operatingsystem, image.isvalid, image.isdeleted, image.description, image.filesize, image.missingblocks"
+ + " FROM image"
+ + " INNER JOIN user ON (image.ownerid = user.userid)"
+ + " WHERE missingBlocks != ''" );
}
/**
@@ -191,11 +175,34 @@ public class DbImage
return MySQL
.findUniqueOrNull(
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.fileSize, images.missingBlocks FROM images WHERE uuid = ?",
+ "SELECT image.uuid, image.revision, image.title, image.path, image.createtime, image.updatetime, image.ownerid, user.login, image.operatingsystem, image.isvalid, image.isdeleted, image.description, image.filesize, image.missingblocks"
+ + " FROM image"
+ + " INNER JOIN user ON (image.ownerid = user.userid)"
+ + " WHERE uuid = ?",
uuid );
}
/**
+ * Return all public images as ImageData list, which can be directly
+ * used by the thrift API.
+ *
+ * @param start
+ * @param limit
+ * @return
+ */
+ public static List<ImageData> asImageDataList( int start, int limit )
+ {
+ return MySQL
+ .findAll(
+ ImageData.class,
+ "SELECT image.uuid, image.revision, image.title, image.createtime, image.updatetime, user.login, image.operatingsystem, image.isvalid, image.isdeleted, image.description, image.filesize"
+ + " FROM image"
+ + " INNER JOIN user ON (image.ownerid = user.userid)"
+ + " ORDER BY uuid, revision"
+ + " LIMIT " + start + ", " + limit );
+ }
+
+ /**
* Creates an instance of the thrift ImageData class of this DbImage object.
*
* @return The corresponding image data
@@ -203,22 +210,22 @@ public class DbImage
public ImageData getImageData()
{
String owner = "unknown";
- DbUser user = DbUser.forLogin( this.imageOwnerId );
- if (user != null)
+ DbUser user = DbUser.forLogin( this.ownerId );
+ if ( user != null )
owner = user.getLogin();
- return new ImageData( this.uuid, this.imageVersion, this.imageName, this.imageCreateTime,
- this.imageUpdateTime, owner, this.contentOperatingSystem, this.isValid,
- this.isDeleted, this.shortDescription, this.longDescription, this.fileSize );
+ return new ImageData( this.uuid, this.revision, this.title, this.createTime,
+ this.updateTime, owner, this.operatingSystem, this.isValid,
+ this.isDeleted, this.longDescription, this.fileSize );
}
-
+
/**
* Get absolute path of this image
- *
+ *
* @return absolute path
*/
public String getAbsolutePath()
{
- return Globals.getImageDir() + "/" + this.imagePath;
+ return Globals.getImageDir() + "/" + this.relativePath;
}
-
+
}
diff --git a/src/main/java/org/openslx/imagemaster/db/DbSatellite.java b/src/main/java/org/openslx/imagemaster/db/DbSatellite.java
index a1c9b1a..d9c4366 100644
--- a/src/main/java/org/openslx/imagemaster/db/DbSatellite.java
+++ b/src/main/java/org/openslx/imagemaster/db/DbSatellite.java
@@ -6,8 +6,10 @@ import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.RSAPublicKeySpec;
+import java.util.List;
import org.apache.log4j.Logger;
+import org.openslx.imagemaster.thrift.iface.OrganizationData;
/**
* Represents a satellite in the database.
@@ -32,8 +34,7 @@ public class DbSatellite
keyFact = kf;
}
- // needs to be public in order to be found by MySQL
- public DbSatellite( String organizationId, String address, String name, String prefix, String publickeyString )
+ public DbSatellite( String organizationId, String address, String name, String publickeyString )
{
this.organizationId = organizationId;
this.address = address;
@@ -56,23 +57,31 @@ public class DbSatellite
.findUniqueOrNull(
DbSatellite.class,
"SELECT satellite.organizationid, satellite.address, satellite.name, satellite.publickey FROM satellite"
- + " INNER JOIN satellite_suffix USING (organizationid)"
- + " WHERE satellite_suffix.suffix = ? LIMIT 1",
+ + " INNER JOIN satellite_suffix USING (organizationid)"
+ + " WHERE satellite_suffix.suffix = ? LIMIT 1",
suffix );
}
+ /**
+ * Return all known satellites/organizations as List of {@link OrganizationData}, which can be
+ * used directly by the thrift API.
+ *
+ * @return list of all known organizations/satellites
+ */
+ public static List<OrganizationData> asOrganizationDataList()
+ {
+ return MySQL.findAll( OrganizationData.class, "SELECT satellite.organizationid, satellite.name FROM satellite" );
+ }
+
public static DbSatellite fromPrefix( String prefix )
{
- /*
- return MySQL
- .findUniqueOrNull(
- DbSatellite.class,
- "SELECT satellite.organization, satellite.address, satellite.name, satellite.publickey FROM satellite WHERE satellite.prefix = ? LIMIT 1",
- prefix );
- */
return null;
}
+ /*
+ * Member methods
+ */
+
public String getAddress()
{
return address;
diff --git a/src/main/java/org/openslx/imagemaster/db/DbUser.java b/src/main/java/org/openslx/imagemaster/db/DbUser.java
index b822e4d..6d9fe0a 100644
--- a/src/main/java/org/openslx/imagemaster/db/DbUser.java
+++ b/src/main/java/org/openslx/imagemaster/db/DbUser.java
@@ -12,11 +12,11 @@ public class DbUser extends User
private static Logger log = Logger.getLogger( DbUser.class );
- public DbUser( int userId, String eppn, String password, String organizationId,
+ public DbUser( int userId, String login, String password, String organizationId,
String firstName, String lastName, String eMail,
String satelliteAddress )
{
- super( userId, eppn, password, organizationId, firstName, lastName, eMail,
+ super( userId, login, password, organizationId, firstName, lastName, eMail,
satelliteAddress );
}
@@ -33,9 +33,9 @@ public class DbUser extends User
return MySQL
.findUniqueOrNull(
DbUser.class,
- "SELECT user.userid, user.eppn, user.password, user.organizationid, user.firstname, user.lastname, user.email, satellite.address FROM user"
+ "SELECT user.userid, user.login, user.password, user.organizationid, user.firstname, user.lastname, user.email, satellite.address FROM user"
+ " LEFT JOIN satellite USING (organizationid)"
- + " WHERE user.eppn = ? LIMIT 1",
+ + " WHERE user.login = ? LIMIT 1",
login );
}
@@ -51,7 +51,7 @@ public class DbUser extends User
return MySQL
.findUniqueOrNull(
DbUser.class,
- "SELECT user.userid, user.eppn, user.password, user.organizationid, user.firstname, user.lastname, user.email, satellite.address FROM user"
+ "SELECT user.userid, user.login, user.password, user.organizationid, user.firstname, user.lastname, user.email, satellite.address FROM user"
+ " LEFT JOIN satellite USING (organizationid)"
+ " WHERE user.userid = ? LIMIT 1",
userid );
@@ -72,10 +72,10 @@ public class DbUser extends User
public static boolean insertOrUpdate( User user )
{
- log.debug( "Inserted user '" + user.eppn + "' into db." );
+ log.debug( "Inserted user '" + user.login + "' into db." );
MySQL.update(
- "INSERT INTO user (eppn, password, organizationid, firstname, lastname, email) VALUES (?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE password=VALUES(password), organizationid=VALUES(organizationid), firstname=VALUES(firstname), lastname=VALUES(lastname), email=VALUES(email)",
- user.eppn, user.password, user.organizationId, user.firstName, user.lastName, user.eMail );
+ "INSERT INTO user (login, password, organizationid, firstname, lastname, email) VALUES (?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE password=VALUES(password), organizationid=VALUES(organizationid), firstname=VALUES(firstname), lastname=VALUES(lastname), email=VALUES(email)",
+ user.login, user.password, user.organizationId, user.firstName, user.lastName, user.eMail );
return false;
}
diff --git a/src/main/java/org/openslx/imagemaster/db/LdapUser.java b/src/main/java/org/openslx/imagemaster/db/LdapUser.java
index b026e7e..988f43a 100644
--- a/src/main/java/org/openslx/imagemaster/db/LdapUser.java
+++ b/src/main/java/org/openslx/imagemaster/db/LdapUser.java
@@ -150,7 +150,7 @@ public class LdapUser extends User
/**
* Login user locally if external Ldap server is not available
- * @param eppn Must be in form "username@organization"
+ * @param login Must be in form "username@organization"
* @param password The user's password
*/
private static LdapUser localLogin( String login, String password )
@@ -162,7 +162,7 @@ public class LdapUser extends User
if (!Sha512Crypt.verifyPassword( password, user.password )) return null;
// return ldapuser if valid
- return new LdapUser( user.userId, user.eppn, Sha512Crypt.Sha512_crypt( password, null, 0 ), user.organizationId, user.firstName,
+ return new LdapUser( user.userId, user.login, Sha512Crypt.Sha512_crypt( password, null, 0 ), user.organizationId, user.firstName,
user.lastName, user.eMail, user.satelliteAddress );
}
}