summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Schwaer2015-10-02 18:10:28 +0200
committerStephan Schwaer2015-10-02 18:10:28 +0200
commit2e21ff6e412b5587d40ec7dab873c9326ec5b668 (patch)
tree5152735b03bd6952f9bc954c13e64de69eaafecc
parent[client] Wizard can now be opened after creating image. Added notice to optio... (diff)
parent[client] Shrink transfer panel when completed successfully (diff)
downloadtutor-module-2e21ff6e412b5587d40ec7dab873c9326ec5b668.tar.gz
tutor-module-2e21ff6e412b5587d40ec7dab873c9326ec5b668.tar.xz
tutor-module-2e21ff6e412b5587d40ec7dab873c9326ec5b668.zip
Merge branch 'v1.1' of git.openslx.org:openslx-ng/tutor-module into v1.1
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java6
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java29
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java45
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java4
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java2
5 files changed, 52 insertions, 34 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java
index f7f5fca7..bff973b5 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java
@@ -33,6 +33,7 @@ public class UploadTask extends TransferTask {
private final String host;
private final int port;
private final String uploadToken;
+ private String remoteError = null;
public UploadTask(String host, int port, String uploadToken, File uploadFile)
throws FileNotFoundException {
@@ -92,8 +93,10 @@ public class UploadTask extends TransferTask {
}
});
if (ret) {
+ remoteError = null;
consecutiveInitFails.set(0);
} else {
+ remoteError = uploader.getRemoteError();
consecutiveInitFails.incrementAndGet();
}
transferEnded(this, ret);
@@ -151,6 +154,9 @@ public class UploadTask extends TransferTask {
final long bytesRemaining = CHUNK_SIZE * (long) missing;
timeRemaining = (1000 * bytesRemaining) / (speed + 1);
}
+ if (error == null && remoteError != null) {
+ error = remoteError;
+ }
TransferEvent event = new TransferEvent(state, blocks, speed, timeRemaining, error);
return event;
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java
index 8dbd4ae0..85542683 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java
@@ -9,6 +9,7 @@ import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
+import javax.swing.JSeparator;
import org.apache.log4j.Logger;
import org.openslx.dozmod.filetransfer.TransferEvent;
@@ -44,7 +45,11 @@ public abstract class TransferPanel extends ActivityPanel implements TransferEve
private int errorCountdown = 0;
private final static Logger LOGGER = Logger.getLogger(TransferPanel.class);
-
+
+ private JPanel progressWrapper;
+
+ private JPanel footer;
+
public TransferPanel(TransferTask transfer, String displayName, String fileName) {
setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
@@ -63,16 +68,14 @@ public abstract class TransferPanel extends ActivityPanel implements TransferEve
btnClose = new JButton("Abbrechen");
header.add(btnClose);
add(header);
- // ProgressBar
- JPanel progressWrapper = new JPanel();
+ progressWrapper = new JPanel();
progressWrapper.setLayout(new GridLayout(1, 1));
progressWrapper.setMinimumSize(Gui.getScaledDimension(0, 50));
progressWrapper.setPreferredSize(progressWrapper.getMinimumSize());
progress = new BlockProgressBar(null);
progressWrapper.add(progress);
add(progressWrapper);
- // Speed & error
- JPanel footer = new JPanel();
+ footer = new JPanel();
footer.setLayout(new BoxLayout(footer, BoxLayout.LINE_AXIS));
lblError = new QLabel();
lblSpeed = new QLabel("-");
@@ -119,11 +122,12 @@ public abstract class TransferPanel extends ActivityPanel implements TransferEve
case ERROR:
errorCountdown = 20;
status = "Fehler";
+ if (transfer.isCanceled()) {
+ transfer.removeListener(panel);
+ }
break;
case FINISHED:
- btnClose.setText("Schließen");
- lblRemaining.setText("-");
- transfer.removeListener(panel);
+ transferDone();
status = "Beendet";
break;
case IDLE:
@@ -154,4 +158,13 @@ public abstract class TransferPanel extends ActivityPanel implements TransferEve
});
}
+ private void transferDone() {
+ transfer.removeListener(panel);
+ lblRemaining.setText("-");
+ btnClose.setText("Schließen");
+ footer.setVisible(false);
+ progressWrapper.setVisible(false);
+ add(new JSeparator());
+ }
+
}
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 320f6cc5..ace8df01 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
@@ -501,14 +501,14 @@ public class DbImage {
affectedList.add(imageVersionId);
}
}
+ if (!affectedList.isEmpty()) {
+ updateLatestVersion(connection, affectedList.toArray(new String[affectedList.size()]));
+ }
connection.commit();
} catch (SQLException e) {
LOGGER.error("Query failed in DbImage.markForDeletion()", e);
throw e;
}
- if (!affectedList.isEmpty()) {
- updateLatestVersionAsync(affectedList.toArray(new String[affectedList.size()]));
- }
}
public static void setShareMode(String imageBaseId, ImageBaseWrite newData) throws SQLException {
@@ -640,15 +640,21 @@ public class DbImage {
public static void deleteVersionPermanently(LocalImageVersion image) throws SQLException {
try (MysqlConnection connection = Database.getConnection()) {
- DbLecture.unlinkFromImageVersion(connection, image.imageVersionId);
DbLecture.deletePermanently(connection, image);
+ // Unlink any linked lectures
+ DbLecture.unlinkFromImageVersion(connection, image.imageVersionId);
+ // Unlink latest version field from image base
+ MysqlStatement unlinkStmt = connection.prepareStatement("UPDATE imagebase SET latestversionid = NULL"
+ + " WHERE latestversionid = :imageversionid");
+ unlinkStmt.setString("imageversionid", image.imageVersionId);
+ unlinkStmt.executeUpdate();
MysqlStatement stmt = connection.prepareStatement("DELETE FROM imageversion"
+ " WHERE imageversionid = :imageversionid");
stmt.setString("imageversionid", image.imageVersionId);
stmt.executeUpdate();
connection.commit();
} catch (SQLException e) {
- LOGGER.error("Query failed in DbImage.deletePermanently()", e);
+ LOGGER.error("Query failed in DbImage.deleteVersionPermanently()", e);
throw e;
}
}
@@ -669,31 +675,26 @@ public class DbImage {
});
}
- private static void updateLatestVersionAsync(final String... changingImageVersionIds) {
- if (changingImageVersionIds == null || changingImageVersionIds.length == 0)
+ private static void updateLatestVersion(MysqlConnection connection, LocalImageVersion... versions)
+ throws SQLException {
+ if (versions == null || versions.length == 0)
return;
- QuickTimer.scheduleOnce(new Task() {
- @Override
- public void fire() {
- try (MysqlConnection connection = Database.getConnection()) {
- for (String changingImageVersionId : changingImageVersionIds) {
- versionValidityChanged(connection, changingImageVersionId, null);
- }
- connection.commit();
- } catch (SQLException | TNotFoundException e) {
- LOGGER.error("Query failed in DbImage.updateLatestVersionAsync()", e);
- }
+ for (LocalImageVersion version : versions) {
+ try {
+ versionValidityChanged(connection, version.imageVersionId, version.imageBaseId);
+ } catch (TNotFoundException e) {
+ // Swallow - logging happens in called method
}
- });
+ }
}
- private static void updateLatestVersion(MysqlConnection connection, LocalImageVersion... versions)
+ private static void updateLatestVersion(MysqlConnection connection, String... versions)
throws SQLException {
if (versions == null || versions.length == 0)
return;
- for (LocalImageVersion version : versions) {
+ for (String version : versions) {
try {
- versionValidityChanged(connection, version.imageVersionId, version.imageBaseId);
+ versionValidityChanged(connection, version, null);
} catch (TNotFoundException e) {
// Swallow - logging happens in called method
}
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java
index ae9ce3b4..285380fc 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java
@@ -44,6 +44,8 @@ public class IncomingDataTransfer extends AbstractTransfer implements HashCheckC
private static final Logger LOGGER = Logger.getLogger(IncomingDataTransfer.class);
+ private static final long MIN_FREE_SPACE_BYTES = FileChunk.CHUNK_SIZE * (2 + Constants.MAX_UPLOADS);
+
/**
* Self reference for inner classes.
*/
@@ -105,8 +107,6 @@ public class IncomingDataTransfer extends AbstractTransfer implements HashCheckC
private static final HashChecker hashChecker;
- private static final long MIN_FREE_SPACE_BYTES = 64l * 1024l * 1024l;
-
static {
HashChecker hc;
try {
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java
index 8cc2cd75..850f56b8 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java
@@ -10,7 +10,6 @@ import org.apache.log4j.Logger;
import org.joda.time.DateTime;
import org.openslx.bwlp.sat.database.mappers.DbImage;
import org.openslx.bwlp.sat.database.mappers.DbImage.DeleteState;
-import org.openslx.bwlp.sat.database.mappers.DbLecture;
import org.openslx.bwlp.sat.database.models.LocalImageVersion;
import org.openslx.bwlp.sat.util.FileSystem;
import org.openslx.util.QuickTimer;
@@ -137,7 +136,6 @@ public class DeleteOldImages implements Runnable {
for (LocalImageVersion version : deletables) {
FileSystem.deleteImageRelatedFiles(version);
try {
- DbLecture.unlinkFromImageVersion(version.imageVersionId);
DbImage.deleteVersionPermanently(version);
} catch (SQLException e) {
writeln(sb, version.imageVersionId, ": Cannot delete image: ", e.getMessage());