diff options
| author | Stephan Schwaer | 2015-10-02 18:10:28 +0200 |
|---|---|---|
| committer | Stephan Schwaer | 2015-10-02 18:10:28 +0200 |
| commit | 2e21ff6e412b5587d40ec7dab873c9326ec5b668 (patch) | |
| tree | 5152735b03bd6952f9bc954c13e64de69eaafecc | |
| parent | [client] Wizard can now be opened after creating image. Added notice to optio... (diff) | |
| parent | [client] Shrink transfer panel when completed successfully (diff) | |
| download | tutor-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
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()); |
