diff options
author | Simon Rettberg | 2016-04-25 14:16:04 +0200 |
---|---|---|
committer | Simon Rettberg | 2016-04-25 14:16:04 +0200 |
commit | 342fdf1aa19c3a4eeba70350558f4398f3bee4dc (patch) | |
tree | a91d22d4f2c0e3c141a343575000e73c8229bc23 | |
parent | [server] Add update query to make email field longer (diff) | |
download | tutor-module-342fdf1aa19c3a4eeba70350558f4398f3bee4dc.tar.gz tutor-module-342fdf1aa19c3a4eeba70350558f4398f3bee4dc.tar.xz tutor-module-342fdf1aa19c3a4eeba70350558f4398f3bee4dc.zip |
[client] Add handling for master<->sat transfers
6 files changed, 65 insertions, 18 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/PassiveTransfer.java b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/PassiveTransfer.java index c4f030f3..a99e60bc 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/PassiveTransfer.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/PassiveTransfer.java @@ -29,12 +29,15 @@ public class PassiveTransfer implements TransferEventEmitter { private final String uploadToken; + private final boolean queryMaster; + private long lastThriftUpdate = 0; private boolean isCancelled = false; - public PassiveTransfer(String token) { + public PassiveTransfer(String token, boolean queryMaster) { this.uploadToken = token; + this.queryMaster = queryMaster; QuickTimer.scheduleAtFixedDelay(new Task() { @Override public void fire() { @@ -75,7 +78,12 @@ public class PassiveTransfer implements TransferEventEmitter { String error = null; lastThriftUpdate = now; try { - TransferStatus uploadStatus = ThriftManager.getMasterClient().queryUploadStatus(uploadToken); + TransferStatus uploadStatus; + if (queryMaster) { + uploadStatus = ThriftManager.getMasterClient().queryUploadStatus(uploadToken); + } else { + uploadStatus = ThriftManager.getSatClient().queryUploadStatus(uploadToken); + } state = uploadStatus.getState(); blocks = uploadStatus.getBlockStatus(); } catch (TInvalidTokenException e) { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java index 6ca0a4d0..3ed14ad9 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java @@ -358,8 +358,8 @@ public abstract class MainWindow { }); } - public static void addUpload(String masterTransferToken, String name) { - final PassiveTransfer transfer = new PassiveTransfer(masterTransferToken); + public static void addPassiveTransfer(String transferToken, String name, boolean queryMaster) { + final PassiveTransfer transfer = new PassiveTransfer(transferToken, queryMaster); addPanel(new PassiveUploadPanel(transfer, name)); transfer.addListener(new TransferEventListener() { @Override diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/PassiveUploadPanel.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/PassiveUploadPanel.java index a889e7b6..c8a62736 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/PassiveUploadPanel.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/PassiveUploadPanel.java @@ -16,7 +16,7 @@ public class PassiveUploadPanel extends TransferPanel { private final PassiveUploadPanel panel = this; public PassiveUploadPanel(TransferEventEmitter state, String name) { - super(state, name, ""); + super(state, name, "<Transfer zwischen Master-Server und Satelliten-Server>"); btnClose.addActionListener(new ButtonAction()); this.state = state; state.addListener(this); @@ -30,4 +30,10 @@ public class PassiveUploadPanel extends TransferPanel { close(); } } + + @Override + public boolean wantConfirmQuit() { + return false; + } + } 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 6c08dff8..baa23b9a 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 @@ -419,10 +419,10 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe Gui.asyncExec(new Runnable() { @Override public void run() { - MainWindow.addUpload(transferId, image.imageName); + MainWindow.addPassiveTransfer(transferId, image.imageName, true); } }); - Gui.asyncMessageBox("Läuft: " + transferId, MessageType.INFO, null, null); + // TODO? Should we show a message? Transfer runs between master and sat, we just watch it. You could even close the client now } catch (TException e1) { ThriftError.showMessage(me, LOGGER, e1, "Upload der VM auf den Master-Server fehlgeschlagen"); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java index 53bfc2f1..fb83e911 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java @@ -2,29 +2,33 @@ package org.openslx.dozmod.gui.window.layout; import java.awt.BorderLayout; import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; -import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JPanel; -import javax.swing.JSeparator; -import javax.swing.SwingConstants; import org.apache.log4j.Logger; +import org.apache.thrift.TException; import org.openslx.dozmod.gui.Gui; +import org.openslx.dozmod.gui.MainWindow; import org.openslx.dozmod.gui.control.ImageListViewer; import org.openslx.dozmod.gui.control.ImageListViewer.FilterType; import org.openslx.dozmod.gui.control.QLabel; import org.openslx.dozmod.gui.helper.CompositePage; import org.openslx.dozmod.gui.helper.GridManager; +import org.openslx.dozmod.thrift.Session; +import org.openslx.dozmod.thrift.ThriftError; +import org.openslx.thrifthelper.ThriftManager; @SuppressWarnings("serial") public abstract class ImageListWindowLayout extends CompositePage { private final static Logger LOGGER = Logger.getLogger(ImageListWindowLayout.class); - + private static final int ICON_SIZE_Y = 24; protected final static String infoTextString = "Hier können Sie Virtuelle Maschinen hochladen, herunterladen, bearbeiten und löschen."; @@ -66,12 +70,18 @@ public abstract class ImageListWindowLayout extends CompositePage { JPanel buttonPanel = new JPanel(); buttonPanel.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.LINE_AXIS)); - btnNewVm = new JButton(newButtonLabel, Gui.getScaledIconResource("/img/new-icon.png", "New VM", ICON_SIZE_Y, buttonPanel)); - btnEditDetails = new JButton(editButtonLabel, Gui.getScaledIconResource("/img/edit-icon.png", "Edit VM", ICON_SIZE_Y, buttonPanel)); - btnDelete = new JButton(deleteButtonLabel, Gui.getScaledIconResource("/img/red-cross.png", "Delete VM", ICON_SIZE_Y, buttonPanel)); - btnDownload = new JButton(downloadButtonLabel, Gui.getScaledIconResource("/img/download-icon.png", "New VM", ICON_SIZE_Y, buttonPanel)); - btnNewLecture = new JButton(newLectureButtonLabel, Gui.getScaledIconResource("/img/new-lecture-icon.png", "New Lecture", ICON_SIZE_Y, buttonPanel)); - btnSwitchView = new JButton(switchViewButtonLabel, Gui.getScaledIconResource("/img/switch-icon.png", "Switch", ICON_SIZE_Y, buttonPanel)); + btnNewVm = new JButton(newButtonLabel, Gui.getScaledIconResource("/img/new-icon.png", "New VM", + ICON_SIZE_Y, buttonPanel)); + btnEditDetails = new JButton(editButtonLabel, Gui.getScaledIconResource("/img/edit-icon.png", + "Edit VM", ICON_SIZE_Y, buttonPanel)); + btnDelete = new JButton(deleteButtonLabel, Gui.getScaledIconResource("/img/red-cross.png", + "Delete VM", ICON_SIZE_Y, buttonPanel)); + btnDownload = new JButton(downloadButtonLabel, Gui.getScaledIconResource("/img/download-icon.png", + "New VM", ICON_SIZE_Y, buttonPanel)); + btnNewLecture = new JButton(newLectureButtonLabel, Gui.getScaledIconResource( + "/img/new-lecture-icon.png", "New Lecture", ICON_SIZE_Y, buttonPanel)); + btnSwitchView = new JButton(switchViewButtonLabel, Gui.getScaledIconResource("/img/switch-icon.png", + "Switch", ICON_SIZE_Y, buttonPanel)); buttonPanel.add(btnNewVm); buttonPanel.add(btnEditDetails); buttonPanel.add(btnDelete); @@ -82,6 +92,27 @@ public abstract class ImageListWindowLayout extends CompositePage { buttonPanel.add(Box.createHorizontalGlue()); buttonPanel.add(btnSwitchView); + /* + * WARNING: Test crap + */ + JButton butt = new JButton("LOL"); + butt.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + try { + String token = ThriftManager.getSatClient().requestImageReplication(Session.getSatelliteToken(), + "e9de1941-b673-4711-b033-d8c37d1e2d3e"); + MainWindow.addPassiveTransfer(token, "POO POO VM", false); + } catch (TException e1) { + ThriftError.showMessage(ImageListWindowLayout.this, null, e1, "BOO BOO"); + } + } + }); + buttonPanel.add(butt); + /* + * END TEST + */ + // put everything together GridManager grid = new GridManager(this, 1); grid.add(infoPanel).fill(true, false).expand(true, false); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftError.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftError.java index 82f5807a..773b941f 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftError.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftError.java @@ -34,7 +34,9 @@ public class ThriftError { } else { messageText += "\n\nUnerwartete Ausnahme " + ex.getClass().getSimpleName() + " ist aufgetreten."; } - logger.warn("A thrift call raised an exception", ex); + if (logger != null) { + logger.warn("A thrift call raised an exception", ex); + } if (SwingUtilities.isEventDispatchThread()) { Gui.showMessageBox(parent, messageText, MessageType.ERROR, null, null); return; |