summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster
diff options
context:
space:
mode:
authorNils Schwabe2014-07-04 13:34:39 +0200
committerNils Schwabe2014-07-04 13:34:39 +0200
commit41c7e8982c98ef9b60f0be99795d14c94549cdb1 (patch)
tree5f8507cfe565524ff35b454983c1ada151652f7a /src/main/java/org/openslx/imagemaster
parentMoved functionallity from DbKey to DbSatellite (diff)
downloadmasterserver-41c7e8982c98ef9b60f0be99795d14c94549cdb1.tar.gz
masterserver-41c7e8982c98ef9b60f0be99795d14c94549cdb1.tar.xz
masterserver-41c7e8982c98ef9b60f0be99795d14c94549cdb1.zip
Fix some small things
Diffstat (limited to 'src/main/java/org/openslx/imagemaster')
-rw-r--r--src/main/java/org/openslx/imagemaster/db/DbImage.java86
-rw-r--r--src/main/java/org/openslx/imagemaster/db/DbSatellite.java21
-rw-r--r--src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java20
-rw-r--r--src/main/java/org/openslx/imagemaster/serverconnection/UploadingImageInfos.java31
-rw-r--r--src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java8
-rw-r--r--src/main/java/org/openslx/imagemaster/util/AsymMessageVerifier.java4
6 files changed, 96 insertions, 74 deletions
diff --git a/src/main/java/org/openslx/imagemaster/db/DbImage.java b/src/main/java/org/openslx/imagemaster/db/DbImage.java
index 5cb53d0..fa089d4 100644
--- a/src/main/java/org/openslx/imagemaster/db/DbImage.java
+++ b/src/main/java/org/openslx/imagemaster/db/DbImage.java
@@ -11,7 +11,7 @@ import org.openslx.imagemaster.thrift.iface.ImageData;
public class DbImage
{
- public final String UUID;
+ public final String uuid;
public final int imageVersion;
public final String imageName;
public final String imagePath;
@@ -28,11 +28,10 @@ public class DbImage
public final String token;
public final List<Integer> missingBlocks;
public final String serverSessionId;
-
- public DbImage(String UUID)
+ public DbImage(String uuid)
{
- this.UUID = UUID;
+ this.uuid = uuid;
this.imageVersion = 0;
this.imageName = null;
this.imagePath = null;
@@ -50,13 +49,13 @@ public class DbImage
this.missingBlocks = null;
this.serverSessionId = null;
}
-
+
public DbImage(String UUID, int imageVersion, String imageName, String imagePath,
Timestamp imageCreateTime, Timestamp imageUpdateTime, String imageOwner, String contentOperatingSystem,
boolean isValid, boolean isDeleted, String shortDescription, String longDescription,
Timestamp timestamp, long fileSize, String token, String missingBlocksList, String serverSessionId)
{
- this.UUID = UUID;
+ this.uuid = UUID;
this.imageVersion = imageVersion;
this.imageName = imageName;
this.imagePath = imagePath;
@@ -71,13 +70,13 @@ public class DbImage
this.timestamp = timestamp;
this.fileSize = fileSize;
this.token = token;
-
+
String[] parts = missingBlocksList.split( ";" );
this.missingBlocks = new LinkedList<>();
- for (int i = 0; i < parts.length - 1; i++) { // do not copy the last empty string (1;2;3;) -> "1","2","3",""
+ for ( int i = 0; i < parts.length - 1; i++ ) { // do not copy the last empty string (1;2;3;) -> "1","2","3",""
this.missingBlocks.add( Integer.valueOf( parts[i] ) );
}
-
+
this.serverSessionId = serverSessionId;
}
@@ -94,6 +93,7 @@ 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
@@ -101,20 +101,20 @@ public class DbImage
* @param serverSessionId The server that is uploading this image
* @return Affected rows
*/
- public static int insert( ImageData imageData, long ts, String token, List<Integer> missingBlocks, String serverSessionId, String filepath)
+ public static int insert( ImageData imageData, long ts, String token, List<Integer> missingBlocks, String serverSessionId, 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" );
-
+
String missingBlocksList = "";
- if (missingBlocks != null) {
- for (Integer block : missingBlocks) {
- missingBlocksList = missingBlocksList + String.valueOf( block ) + ";";
- }
+ if ( missingBlocks != null ) {
+ for ( Integer block : missingBlocks ) {
+ missingBlocksList = missingBlocksList + String.valueOf( block ) + ";";
+ }
}
-
+
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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
@@ -123,53 +123,57 @@ public class DbImage
imageData.conentOperatingSystem, imageData.statusIsValid,
imageData.statusIsDeleted, imageData.imageShortDescription,
imageData.imageLongDescription, sdf.format( timestamp ), imageData.fileSize,
- token, missingBlocksList, serverSessionId);
+ token, missingBlocksList, serverSessionId );
}
public String getUUID()
{
- return this.UUID;
+ return this.uuid;
}
- // TODO: updateLocation? Also make all these update/delete methods non-static,
- // so you can call them on an instance you retreived earlier.
- public static int update( String uuid, String location )
- {
- return MySQL.update( "UPDATE images SET images.image_path = ? WHERE images.UUID = ?", location, uuid );
- }
-
- public static int updateMissingBlocks( String uuid, List<Integer> missingBlocks)
+ public int updateMissingBlocks( List<Integer> missingBlocks )
{
String missingBlocksList = "";
- if (missingBlocks != null) {
- for (Integer block : missingBlocks) {
- missingBlocksList = missingBlocksList + String.valueOf( block ) + ";";
- }
+ if ( missingBlocks != null ) {
+ for ( Integer block : missingBlocks ) {
+ missingBlocksList = missingBlocksList + String.valueOf( block ) + ";";
+ }
}
return MySQL.update( "UPDATE images SET images.missingBlocks = ? WHERE images.UUID = ?", missingBlocksList, uuid );
}
- public static int delete( String UUID )
+ public int delete()
{
- return MySQL.update( "DELETE FROM images WHERE images.UUID=?", UUID );
+ return MySQL.update( "DELETE FROM images WHERE images.UUID=?", uuid );
}
-
+
public static List<DbImage> getUploadingImages()
{
- 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 != ?", "" );
+ 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 != ?",
+ "" );
}
-
- public static DbImage getImageByUUID(String uuid) {
- 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.timestamp, images.fileSize, images.token, images.missingBlocks, images.serverSessionId FROM images WHERE uuid = ?", uuid );
+
+ public static DbImage getImageByUUID( String uuid )
+ {
+ 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.timestamp, images.fileSize, images.token, images.missingBlocks, images.serverSessionId FROM images WHERE uuid = ?",
+ uuid );
}
-
+
/**
* Creates an instance of the thrift ImageData class of this DbImage object.
+ *
* @return The corresponding image data
*/
- public ImageData getImageData() {
- return new ImageData(this.UUID, this.imageVersion, this.imageName, this.imageCreateTime.getTime(),
+ public ImageData getImageData()
+ {
+ return new ImageData( this.uuid, this.imageVersion, this.imageName, this.imageCreateTime.getTime(),
this.imageUpdateTime.getTime(), this.imageOwner, this.contentOperatingSystem, this.isValid,
- this.isDeleted, this.shortDescription, this.longDescription, this.fileSize);
+ this.isDeleted, this.shortDescription, this.longDescription, this.fileSize );
}
}
diff --git a/src/main/java/org/openslx/imagemaster/db/DbSatellite.java b/src/main/java/org/openslx/imagemaster/db/DbSatellite.java
index 15743c8..ed88642 100644
--- a/src/main/java/org/openslx/imagemaster/db/DbSatellite.java
+++ b/src/main/java/org/openslx/imagemaster/db/DbSatellite.java
@@ -1,7 +1,5 @@
package org.openslx.imagemaster.db;
-import java.util.List;
-
public class DbSatellite
{
@@ -39,8 +37,9 @@ public class DbSatellite
{
return organization;
}
-
- public String getPrefix() {
+
+ public String getPrefix()
+ {
return this.prefix;
}
@@ -52,13 +51,17 @@ public class DbSatellite
"SELECT satellite.organization, satellite.address, satellite.name, satellite.prefix FROM satellite WHERE satellite.prefix = ? LIMIT 1",
prefix );
}
-
- public static byte[] getKeyfromOrganization(String organization) {
- return MySQL.findUniqueOrNull( ByteArray.class, "SELECT publickey FROM satellite WHERE organization = ?", organization ).array;
+
+ public static byte[] getKeyfromOrganization( String organization )
+ {
+ return MySQL.findUniqueOrNull( ByteArray.class, "SELECT publickey FROM satellite WHERE organization = ?", organization ).array;
}
-
- class ByteArray {
+
+ class ByteArray
+ {
+
public final byte[] array;
+
ByteArray(byte[] array)
{
this.array = array;
diff --git a/src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java b/src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java
index bf21c71..272b924 100644
--- a/src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java
+++ b/src/main/java/org/openslx/imagemaster/serverconnection/ImageProcessor.java
@@ -79,7 +79,7 @@ public class ImageProcessor
// TODO: proper synchronization, interface is multi threaded.
// should synchronize operations on the map (use concurrent map) and then synchronize on the uploading image
// when handing the missing blocks etc...
- uploadingImages.put( uuid, new UploadingImageInfos( token, allBlocks, serverSessionId, new Timestamp( System.currentTimeMillis() ) ) );
+ uploadingImages.put( uuid, new UploadingImageInfos( token, allBlocks, serverSessionId, new Timestamp( System.currentTimeMillis() ), uuid ) );
DbImage.insert( imageData, System.currentTimeMillis(), token, allBlocks, serverSessionId, filepath );
List<Integer> missing = getMissingBlocks( uuid, AMOUNT );
@@ -167,11 +167,11 @@ public class ImageProcessor
for ( int i = 0; i < amount; i++ ) {
result.add( list.get( i ) );
}
-
- synchronized( image ) {
+
+ synchronized ( image ) {
image.setLastSentBlocks( result );
}
-
+
return result;
}
@@ -183,14 +183,14 @@ public class ImageProcessor
*/
private static void uploadDone( String uuid )
{
- String token;
+ UploadingImageInfos image;
synchronized ( uploadingImages ) {
- token = uploadingImages.remove( uuid ).getToken();
+ image = uploadingImages.remove( uuid );
}
- DbImage.updateMissingBlocks( uuid, null );
+ image.getDbImage().updateMissingBlocks( null );
// file was already downloaded in the right location by the updownloader class.
// remove the connection so that it can be used by a new client
- ConnectionHandler.removeConnection( token );
+ ConnectionHandler.removeConnection( image.getToken() );
}
/**
@@ -202,8 +202,8 @@ public class ImageProcessor
for ( DbImage image : list ) {
String token = image.token;
ConnectionHandler.addConnection( token, image.imagePath, ConnectionData.UPLOADING );
- UploadingImageInfos infos = new UploadingImageInfos( token, image.missingBlocks, image.serverSessionId, image.timestamp );
- uploadingImages.put( image.UUID, infos );
+ UploadingImageInfos infos = new UploadingImageInfos( token, image.missingBlocks, image.serverSessionId, image.timestamp, image.uuid );
+ uploadingImages.put( image.uuid, infos );
}
log.info( "Added " + list.size() + " pending upload(s) to process list again." );
}
diff --git a/src/main/java/org/openslx/imagemaster/serverconnection/UploadingImageInfos.java b/src/main/java/org/openslx/imagemaster/serverconnection/UploadingImageInfos.java
index 17debbe..547916f 100644
--- a/src/main/java/org/openslx/imagemaster/serverconnection/UploadingImageInfos.java
+++ b/src/main/java/org/openslx/imagemaster/serverconnection/UploadingImageInfos.java
@@ -5,11 +5,14 @@ import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
+import org.openslx.imagemaster.db.DbImage;
+
/**
* Helper class for ImageProcessor to save some infos about the images in the process list.
*/
public class UploadingImageInfos
{
+
/**
* Token for the satellite.
*/
@@ -25,13 +28,16 @@ public class UploadingImageInfos
private List<Integer> lastSentBlocks = new LinkedList<>();
private String serverSessionId;
private Timestamp ts; // when did the server something for the last time
+ private DbImage dbImage = null; // the DB representation of this image
+ private String uuid;
- protected UploadingImageInfos(String token, List<Integer> missingBlocks, String serverSessionId, Timestamp ts)
+ protected UploadingImageInfos(String token, List<Integer> missingBlocks, String serverSessionId, Timestamp ts, String uuid)
{
this.token = token;
this.missingBlocks = missingBlocks;
this.serverSessionId = serverSessionId;
this.ts = ts;
+ this.uuid = uuid;
}
protected void removeBlock( int number )
@@ -43,12 +49,14 @@ public class UploadingImageInfos
{
this.missingBlocks.removeAll( list );
}
-
- protected void setLastSentBlocks(List<Integer> list) {
+
+ protected void setLastSentBlocks( List<Integer> list )
+ {
this.lastSentBlocks = list;
}
-
- protected List<Integer> getLastSentBlocks() {
+
+ protected List<Integer> getLastSentBlocks()
+ {
return this.lastSentBlocks;
}
@@ -66,8 +74,17 @@ public class UploadingImageInfos
{
return this.serverSessionId;
}
-
- protected Timestamp getTimestamp() {
+
+ protected Timestamp getTimestamp()
+ {
return this.ts;
}
+
+ protected DbImage getDbImage()
+ {
+ if ( dbImage == null ) {
+ dbImage = DbImage.getImageByUUID( this.uuid );
+ }
+ return this.dbImage;
+ }
}
diff --git a/src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java b/src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java
index 458788d..3e9e2eb 100644
--- a/src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java
+++ b/src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java
@@ -1,6 +1,7 @@
package org.openslx.imagemaster.thrift.server;
import java.nio.ByteBuffer;
+import java.util.List;
import org.apache.log4j.Logger;
import org.apache.thrift.TException;
@@ -8,7 +9,6 @@ import org.openslx.imagemaster.server.ApiServer;
import org.openslx.imagemaster.thrift.iface.AuthenticationException;
import org.openslx.imagemaster.thrift.iface.AuthorizationException;
import org.openslx.imagemaster.thrift.iface.DownloadInfos;
-import org.openslx.imagemaster.thrift.iface.FtpCredentials;
import org.openslx.imagemaster.thrift.iface.ImageData;
import org.openslx.imagemaster.thrift.iface.ImageDataException;
import org.openslx.imagemaster.thrift.iface.ImageServer;
@@ -69,10 +69,8 @@ public class ImageServerHandler implements ImageServer.Iface
}
@Override
- public DownloadInfos getImage( String uuid, String serverSessionId ) throws AuthorizationException, ImageDataException, TException
+ public DownloadInfos getImage( String uuid, String serverSessionId, List<Integer> requestedBlocks ) throws AuthorizationException, ImageDataException, TException
{
- // TODO Auto-generated method stub
- return null;
+ return ApiServer.getImage( uuid, serverSessionId, requestedBlocks );
}
-
}
diff --git a/src/main/java/org/openslx/imagemaster/util/AsymMessageVerifier.java b/src/main/java/org/openslx/imagemaster/util/AsymMessageVerifier.java
index ccd7ced..d1629b9 100644
--- a/src/main/java/org/openslx/imagemaster/util/AsymMessageVerifier.java
+++ b/src/main/java/org/openslx/imagemaster/util/AsymMessageVerifier.java
@@ -13,7 +13,7 @@ import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.spec.X509EncodedKeySpec;
-import org.openslx.imagemaster.db.DbKey;
+import org.openslx.imagemaster.db.DbSatellite;
public class AsymMessageVerifier
{
@@ -33,7 +33,7 @@ public class AsymMessageVerifier
*/
public AsymMessageVerifier(String organization) throws Exception
{
- byte[] b = DbKey.fromOrganization( organization ).bytes;
+ byte[] b = DbSatellite.getKeyfromOrganization( organization );
if (b == null) throw new Exception("Organization not found.");