summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java
diff options
context:
space:
mode:
authorSimon Rettberg2016-04-13 18:39:26 +0200
committerSimon Rettberg2016-04-13 18:39:26 +0200
commit5a2b7a8a2f0a9ea5d01895b00f75beaa7af55622 (patch)
tree5bdc5411cd9954577e5489d5e4271c800d826e9c /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java
parent[client] fix bad commit (diff)
downloadtutor-module-5a2b7a8a2f0a9ea5d01895b00f75beaa7af55622.tar.gz
tutor-module-5a2b7a8a2f0a9ea5d01895b00f75beaa7af55622.tar.xz
tutor-module-5a2b7a8a2f0a9ea5d01895b00f75beaa7af55622.zip
(WiP) Global image sync
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java
index 55fa02b2..8aafe862 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java
@@ -891,15 +891,35 @@ public class DbImage {
}
}
+ public static List<ByteBuffer> getBlockHashes(String imageVersionId) throws SQLException {
+ try (MysqlConnection connection = Database.getConnection()) {
+ return getBlockHashes(connection, imageVersionId);
+ } catch (SQLException e) {
+ LOGGER.error("Query failed in DbImage.getBlockHashes()", e);
+ throw e;
+ }
+ }
+
private static List<ByteBuffer> getBlockHashes(MysqlConnection connection, String imageVersionId)
throws SQLException {
- MysqlStatement stmt = connection.prepareStatement("SELECT blocksha1 FROM imageblock"
+ MysqlStatement stmt = connection.prepareStatement("SELECT startbyte, blocksha1 FROM imageblock"
+ " WHERE imageversionid = :imageversionid ORDER BY startbyte ASC");
stmt.setString("imageversionid", imageVersionId);
ResultSet rs = stmt.executeQuery();
List<ByteBuffer> list = new ArrayList<>();
+ long expectedOffset = 0;
while (rs.next()) {
- list.add(ByteBuffer.wrap(rs.getBytes("blocksha1")));
+ long currentOffset = rs.getLong("startbyte");
+ if (currentOffset < expectedOffset)
+ continue;
+ while (currentOffset > expectedOffset) {
+ list.add(null);
+ expectedOffset += FileChunk.CHUNK_SIZE;
+ }
+ if (currentOffset == expectedOffset) {
+ list.add(ByteBuffer.wrap(rs.getBytes("blocksha1")));
+ expectedOffset += FileChunk.CHUNK_SIZE;
+ }
}
return list;
}