summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java
diff options
context:
space:
mode:
authorJonathan Bauer2015-08-18 17:26:51 +0200
committerJonathan Bauer2015-08-18 17:26:51 +0200
commit41ffae2709d108742f176d7d75752cf4290e6703 (patch)
tree94330423bedd83f33eda2cdedf3aeb11581c466e /dozentenmodul/src/main/java
parent[client] only enable the "isTemplate" checkbox if user is superuser (diff)
downloadtutor-module-41ffae2709d108742f176d7d75752cf4290e6703.tar.gz
tutor-module-41ffae2709d108742f176d7d75752cf4290e6703.tar.xz
tutor-module-41ffae2709d108742f176d7d75752cf4290e6703.zip
[client] async delete call + callback. Another callback when downloading an image was initialized
Diffstat (limited to 'dozentenmodul/src/main/java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferHelper.java9
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java2
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java82
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java15
4 files changed, 66 insertions, 42 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferHelper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferHelper.java
index 550917ea..a7126c40 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferHelper.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferHelper.java
@@ -25,8 +25,11 @@ public class TransferHelper {
private static final Logger LOGGER = Logger.getLogger(TransferHelper.class);
+ public interface DownloadCallback {
+ void downloadInitialized(boolean success);
+ }
public static void initDownload(final Frame frame, final String imageVersionId, final String imageName,
- final String virtualizerId, final long imageSize) {
+ final String virtualizerId, final long imageSize, final DownloadCallback callback) {
QFileChooser fc = new QFileChooser(Config.getDownloadPath(), true);
fc.setDialogTitle("Bitte wählen Sie einen Speicherort");
int action = fc.showSaveDialog(frame);
@@ -43,6 +46,8 @@ public class TransferHelper {
.requestDownload(Session.getSatelliteToken(), imageVersionId);
} catch (TException e) {
ThriftError.showMessage(frame, LOGGER, e, "Die Download-Anfrage ist gescheitert");
+ if (callback != null)
+ callback.downloadInitialized(false);
return;
}
@@ -69,6 +74,8 @@ public class TransferHelper {
MessageType.ERROR, LOGGER, e);
}
});
+ if (callback != null)
+ callback.downloadInitialized(false);
return;
}
new Thread(dlTask).start();
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
index 22b69f8d..85204850 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
@@ -314,7 +314,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
return;
}
TransferHelper.initDownload(JOptionPane.getFrameForComponent(this), selected.versionId,
- image.imageName, image.virtId, selected.fileSize);
+ image.imageName, image.virtId, selected.fileSize, null);
}
/********************************************************************************
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
index 254e2723..54a414c2 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
@@ -25,6 +25,7 @@ import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.bwlp.thrift.iface.TAuthorizationException;
import org.openslx.bwlp.thrift.iface.TNotFoundException;
import org.openslx.dozmod.filetransfer.TransferHelper;
+import org.openslx.dozmod.filetransfer.TransferHelper.DownloadCallback;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.helper.MessageType;
@@ -36,8 +37,6 @@ import org.openslx.dozmod.gui.wizard.LectureWizard;
import org.openslx.dozmod.permissions.ImagePerms;
import org.openslx.dozmod.thrift.ImageCache;
import org.openslx.dozmod.thrift.Session;
-import org.openslx.dozmod.thrift.UserCache;
-import org.openslx.dozmod.util.FormatHelper;
import org.openslx.thrifthelper.ThriftManager;
import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;
@@ -48,7 +47,7 @@ import org.openslx.util.QuickTimer.Task;
*
*/
@SuppressWarnings("serial")
-public class ImageListWindow extends ImageListWindowLayout {
+public class ImageListWindow extends ImageListWindowLayout implements DownloadCallback {
private final static Logger LOGGER = Logger.getLogger(ImageListWindow.class);
@@ -111,8 +110,7 @@ public class ImageListWindow extends ImageListWindowLayout {
performImageDownload(imageTable.getSelectedItem());
}
if (e.getSource().equals(popupItemDelete)) {
- // TODO delete that image
- LOGGER.debug("Delete image clicked");
+
}
}
});
@@ -189,19 +187,20 @@ public class ImageListWindow extends ImageListWindowLayout {
@Override
public void actionPerformed(ActionEvent e) {
startLectureWizard(imageTable.getSelectedItem());
-
}
});
downloadButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
performImageDownload(imageTable.getSelectedItem());
+ // TODO refresh
}
});
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
deleteLatestVersion(getSelectedImage());
+ // TODO refresh
}
});
backButton.addActionListener(new ActionListener() {
@@ -236,7 +235,8 @@ public class ImageListWindow extends ImageListWindowLayout {
}
});
}
- });
+ }, 1000);
+ // TODO do this periodically with a large interval, say 10s?
}
/**
@@ -341,7 +341,7 @@ public class ImageListWindow extends ImageListWindowLayout {
}
/********************************************************************************
*
- * Helpers triggering the actual actions
+ * Helpers triggering the actual actions
*
********************************************************************************/
@@ -366,9 +366,18 @@ public class ImageListWindow extends ImageListWindowLayout {
return;
downloadButton.setEnabled(false);
TransferHelper.initDownload(JOptionPane.getFrameForComponent(this), image.latestVersionId,
- image.imageName, image.virtId, image.fileSize);
+ image.imageName, image.virtId, image.fileSize, this);
+ }
+ /**
+ * Callback when download initialized
+ *
+ * @param success true if downloading, false otherwise
+ */
+ @Override
+ public void downloadInitialized(boolean success) {
+ LOGGER.debug("called with: " + success);
+ refreshList(!success);
}
-
/**
* Deletes the latest version of the given image if it has one
*
@@ -378,24 +387,45 @@ public class ImageListWindow extends ImageListWindowLayout {
if (!hasLatestVersion(image))
return;
// requires confirmation of the user
- if (!Gui.showMessageBox(me, "Wollen Sie die letzte Version von dieses Image wirklich löschen?", MessageType.QUESTION_YESNO, LOGGER, null))
+ if (!Gui.showMessageBox(me, "Wollen Sie die letzte Version von dieses Image wirklich löschen?",
+ MessageType.QUESTION_YESNO, LOGGER, null))
return;
// try to actually delete this version of the image
- try {
- ThriftManager.getSatClient().deleteImageVersion(Session.getSatelliteToken(),
- image.getLatestVersionId());
- LOGGER.info("Deleted version '" + image.getLatestVersionId() + "' of image '"
- + image.getImageBaseId() + "'.");
- refreshList(true);
- } catch (TAuthorizationException e) {
- Gui.showMessageBox(me, "Sie sind nicht autorisiert dieses Image zu löschen!",
- MessageType.ERROR, LOGGER, e);
- } catch (TNotFoundException e) {
- Gui.showMessageBox(me, "Diese Image existiert nicht auf dem Satelliten!",
- MessageType.ERROR, LOGGER, e);
- } catch (TException e) {
- Gui.showMessageBox(me, "Interner Fehler! Siehe Logs.", MessageType.ERROR, LOGGER, e);
- }
+ QuickTimer.scheduleOnce(new Task() {
+ boolean success = false;
+ @Override
+ public void fire() {
+ try {
+ ThriftManager.getSatClient().deleteImageVersion(Session.getSatelliteToken(),
+ image.getLatestVersionId());
+ LOGGER.info("Deleted version '" + image.getLatestVersionId() + "' of image '"
+ + image.getImageBaseId() + "'.");
+ success = true;
+ } catch (TAuthorizationException e) {
+ Gui.showMessageBox(me, "Sie sind nicht autorisiert dieses Image zu löschen!",
+ MessageType.ERROR, LOGGER, e);
+ } catch (TNotFoundException e) {
+ Gui.showMessageBox(me, "Diese Image existiert nicht auf dem Satelliten!",
+ MessageType.ERROR, LOGGER, e);
+ } catch (TException e) {
+ Gui.showMessageBox(me, "Interner Fehler! Siehe Logs.", MessageType.ERROR, LOGGER, e);
+ }
+ Gui.asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ deletedLatestVersion(success);
+ }
+ });
+ }
+ });
+ }
+ /**
+ * Async callback when image was deleted
+ *
+ * @param success true if the latest image version was deleted, false otherwise
+ */
+ public void deletedLatestVersion(boolean success) {
+ refreshList(success);
}
/********************************************************************************
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
index 3c8fc701..7a6cf92a 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
@@ -15,7 +15,6 @@ import javax.swing.JOptionPane;
import org.apache.log4j.Logger;
import org.apache.thrift.TException;
import org.openslx.bwlp.thrift.iface.ImageDetailsRead;
-import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.bwlp.thrift.iface.ImageVersionDetails;
import org.openslx.bwlp.thrift.iface.LectureRead;
import org.openslx.bwlp.thrift.iface.UserInfo;
@@ -260,18 +259,6 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout {
return;
}
TransferHelper.initDownload(JOptionPane.getFrameForComponent(this), lecture.imageVersionId,
- image.imageName, image.virtId, versionSize );
+ image.imageName, image.virtId, versionSize, null);
}
-//
-// /**
-// * Triggers a download of the given image's latest version
-// *
-// * @param image the image to download
-// */
-// private void performImageDownload(ImageSummaryRead image) {
-// if (!hasLatestVersion(image))
-// return;
-// TransferHelper.initDownload(JOptionPane.getFrameForComponent(this), image.latestVersionId,
-// image.imageName, image.virtId, image.fileSize);
-// }
}