summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Bauer2015-07-13 18:28:00 +0200
committerJonathan Bauer2015-07-13 18:28:00 +0200
commit0b6dd6432f82294f1080dfcb2b06af5da596c354 (patch)
treee87a041021ed90c47c8f339a51cfcc7201bdb8dc
parent[client] fix IDP combo not beeing enabled when TEST_ACCOUNT auth method is saved (diff)
downloadtutor-module-0b6dd6432f82294f1080dfcb2b06af5da596c354.tar.gz
tutor-module-0b6dd6432f82294f1080dfcb2b06af5da596c354.tar.xz
tutor-module-0b6dd6432f82294f1080dfcb2b06af5da596c354.zip
[client] first steps with uploadWizwardStates [WIP]
also fixed 'Next' being clickable even though no VMX was selected
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java58
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java6
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java9
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java34
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java37
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java26
6 files changed, 117 insertions, 53 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 c240c5d5..d9c9bee1 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java
@@ -3,9 +3,6 @@ package org.openslx.dozmod.filetransfer;
import java.io.File;
import java.io.IOException;
-import javax.swing.JOptionPane;
-import javax.swing.SwingWorker;
-
import org.apache.log4j.Logger;
import org.openslx.filetransfer.UploadStatusCallback;
import org.openslx.filetransfer.Uploader;
@@ -17,7 +14,7 @@ import org.openslx.filetransfer.Uploader;
* @author www.codejava.net
*
*/
-public class UploadTask extends SwingWorker<Void, Void> {
+public class UploadTask implements Runnable {
/**
* Logger instance for this class.
@@ -32,7 +29,6 @@ public class UploadTask extends SwingWorker<Void, Void> {
private final int port;
private final String uploadToken;
private final File uploadFile;
- private boolean success = false;
public UploadTask(String host, int port, String uploadToken, File uploadFile) {
// TODO: SSL
@@ -47,7 +43,7 @@ public class UploadTask extends SwingWorker<Void, Void> {
* Executed in background thread
*/
@Override
- protected Void doInBackground() {
+ public void run() {
Uploader upload = null;
try {
@@ -58,9 +54,8 @@ public class UploadTask extends SwingWorker<Void, Void> {
final long fileSize = Image.Filesize = uploadFile.length();
BROKEN CODE - FIXME class imports */
final long fileSize = 1000000;
-
-
- firePropertyChange("filesize", 0, fileSize); // Updates GUI
+
+ LOGGER.debug("Filesize: " + fileSize);
final boolean ret = upload.upload(uploadFile.getAbsolutePath(), new UploadStatusCallback() {
// progress counter
@@ -77,11 +72,9 @@ public class UploadTask extends SwingWorker<Void, Void> {
final long now = System.currentTimeMillis();
if (lastUpdate + UPDATE_INTERVAL_MS < now) {
final int percentCompleted = (int) ((totalBytesRead * 100) / fileSize);
- setProgress(percentCompleted);
lastBytes = (lastBytes * 2 + currentBytes) / 3;
final double speed = lastBytes / UPDATE_INTERVAL_SECONDS;
- firePropertyChange("speed", 0, speed / BYTES_PER_MIB);
- firePropertyChange("bytesread", 0, totalBytesRead);
+ LOGGER.debug(percentCompleted + "% complete (speed: " + speed/BYTES_PER_MIB + ", total: " + totalBytesRead + ")");
lastUpdate = now;
currentBytes = 0;
}
@@ -89,47 +82,24 @@ public class UploadTask extends SwingWorker<Void, Void> {
@Override
public void uploadError(String message) {
- JOptionPane.showMessageDialog(null, "Error uploading file: " + message, "Error",
- JOptionPane.ERROR_MESSAGE);
- ul.close(null);
+ LOGGER.error("Upload error: " + message);
+ //Gui.showMessageBox(null, message, MessageType.ERROR, LOGGER, null);
}
});
// if the upload succeeded, set the progress to 100% manually again here to make
// sure the GUI knows about it.
- if (ret) {
- setProgress(100);
- firePropertyChange("bytesread", 0, uploadFile.length());
- firePropertyChange("success", false, true);
- success = true;
- }
+
+ if (ret)
+ LOGGER.info("Upload completed.");
+ else
+ LOGGER.info("Upload failed.");
} catch (IOException e) {
- JOptionPane.showMessageDialog(null, "Error uploading file: " + e.getMessage(), "Error",
- JOptionPane.ERROR_MESSAGE);
- LOGGER.error("Upload of " + uploadFile.getAbsolutePath() + " failed!", e);
+ LOGGER.error("Upload of " + uploadFile.getAbsolutePath() + " failed: ", e);
} finally {
if (upload != null)
upload.close(null);
}
-
- return null;
- }
-
- /**
- * Executed in Swing's event dispatching thread
- */
- @Override
- protected void done() {
- if (isCancelled())
- return;
- if (success) {
- LOGGER.info("Datei erfolgreich hochgeladen.");
- JOptionPane.showMessageDialog(null, "Datei erfolgreich hochgeladen.", "Message",
- JOptionPane.INFORMATION_MESSAGE);
- } else {
- LOGGER.error("Datei wurde unvollständig hochgeladen.");
- JOptionPane.showMessageDialog(null, "Datei wurde unvollständig hochgeladen. Bitte wiederholen.",
- "Message", JOptionPane.INFORMATION_MESSAGE);
- }
+ return;
}
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java
index 7b2fa94b..6a959189 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java
@@ -1,10 +1,14 @@
package org.openslx.dozmod.gui.window;
+import java.io.File;
+
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Shell;
+import org.openslx.dozmod.filetransfer.UploadTask;
import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.window.layout.MainMenuWindowLayout;
+import org.openslx.dozmod.thrift.Session;
public class MainMenuWindow extends MainMenuWindowLayout {
@@ -22,6 +26,8 @@ public class MainMenuWindow extends MainMenuWindowLayout {
lecturesButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
+ UploadTask ut = new UploadTask("132.230.8.113", 21, Session.getSatelliteToken(), new File("/media/data/vmware/OpenSLX0/OpenSLX0.vmdk"));
+ ut.run();
//
}
});
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java
index 9b979ea9..eddcd516 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java
@@ -6,11 +6,13 @@ import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.wizard.page.ImageMetaDataPage;
import org.openslx.dozmod.gui.wizard.page.ImageUploadPage;
+import org.openslx.dozmod.state.UploadWizardState;
public class ImageWizard extends Wizard {
private final static Logger LOGGER = Logger.getLogger(ImageWizard.class);
+ private UploadWizardState uploadWizardState;
protected ImageUploadPage imageUploadPage;
protected ImageMetaDataPage imageMetaDataPage;
protected boolean editExistingImage;
@@ -23,6 +25,7 @@ public class ImageWizard extends Wizard {
super();
setNeedsProgressMonitor(true);
this.editExistingImage = editExistingImage;
+ this.uploadWizardState = new UploadWizardState();
}
@@ -33,13 +36,13 @@ public class ImageWizard extends Wizard {
@Override
public void addPages() {
- imageUploadPage = new ImageUploadPage(editExistingImage);
- imageMetaDataPage = new ImageMetaDataPage();
+ // create the shared object for all pages of the wizard
+ imageUploadPage = new ImageUploadPage(uploadWizardState, editExistingImage);
+ imageMetaDataPage = new ImageMetaDataPage(uploadWizardState);
addPage(imageUploadPage);
addPage(imageMetaDataPage);
}
-
@Override
public boolean performFinish() {
MainWindow.showMessageBox("Would continue uploading now :)", MessageType.INFO, LOGGER, null);
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java
index 0e6c01f6..a150433e 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java
@@ -9,6 +9,7 @@ import org.eclipse.swt.widgets.Composite;
import org.openslx.bwlp.thrift.iface.OperatingSystem;
import org.openslx.dozmod.gui.helper.Gui;
import org.openslx.dozmod.gui.wizard.layout.ImageMetaDataPageLayout;
+import org.openslx.dozmod.state.UploadWizardState;
import org.openslx.dozmod.thrift.MetaDataCache;
import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;
@@ -17,11 +18,14 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout {
private final static Logger LOGGER = Logger.getLogger(ImageMetaDataPage.class);
- public ImageMetaDataPage() {
+ private UploadWizardState uploadWizardState;
+
+ public ImageMetaDataPage(UploadWizardState uploadWizardState) {
super();
+ this.uploadWizardState = uploadWizardState;
setPageComplete(false);
}
-
+
@Override
public void createControl(Composite parent) {
super.createControl(parent);
@@ -33,7 +37,7 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout {
@Override
public void fire() {
osList = MetaDataCache.getOperatingSystems();
- // now send the organisations back to the LoginWindow
+ // now send the organizations back to the LoginWindow
// through populateIdpCombo()
Gui.display.asyncExec(new Runnable() {
@Override
@@ -56,6 +60,30 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout {
});
}
+
+ /* Override setVisible() to inject some code when this page is set visible
+ * Note that this also gets called when we go back to this page.
+ *
+ * @see org.eclipse.jface.dialogs.DialogPage#setVisible(boolean)
+ */
+ @Override
+ public void setVisible(boolean visible) {
+
+ if (!getControl().isVisible() && visible) {
+ LOGGER.debug("Entering ImageMetaDataPage...");
+ if (uploadWizardState == null) {
+ LOGGER.debug("state is null");
+ return;
+ }
+ LOGGER.debug("vmName: " +
+ uploadWizardState.vmName == null ?
+ "null" : uploadWizardState.vmName);
+ LOGGER.debug("vmDescriptionFile: " +
+ uploadWizardState.vmDescriptionFile == null ?
+ "null" : uploadWizardState.vmDescriptionFile.toString());
+ }
+ super.setVisible(visible);
+ }
/**
* @param osList list of OS's to fill the combo with
*/
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java
index b5880541..e6d77f31 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java
@@ -2,6 +2,7 @@ package org.openslx.dozmod.gui.wizard.page;
import java.io.File;
+import org.apache.log4j.Logger;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
@@ -11,15 +12,21 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.FileDialog;
import org.openslx.dozmod.Config;
import org.openslx.dozmod.gui.wizard.layout.ImageUploadPageLayout;
+import org.openslx.dozmod.state.UploadWizardState;
public class ImageUploadPage extends ImageUploadPageLayout {
+ private final static Logger LOGGER = Logger.getLogger(ImageUploadPage.class);
+
+ private UploadWizardState uploadWizardState;
protected final boolean editExistingImage;
+ private File file;
- public ImageUploadPage(boolean editExistingImage) {
+ public ImageUploadPage(UploadWizardState uploadWizardState, boolean editExistingImage) {
super();
setPageComplete(false);
this.editExistingImage = editExistingImage;
+ this.uploadWizardState = uploadWizardState;
}
@Override
@@ -33,7 +40,11 @@ public class ImageUploadPage extends ImageUploadPageLayout {
@Override
public void keyReleased(KeyEvent e) {
- setPageComplete(!imageNameTextField.getText().isEmpty());
+ if (!imageNameTextField.getText().isEmpty()) {
+ uploadWizardState.vmName = imageNameTextField.getText();
+ setPageComplete(uploadWizardState.vmDescriptionFile != null);
+ } else
+ setPageComplete(false);
}
});
@@ -47,9 +58,11 @@ public class ImageUploadPage extends ImageUploadPageLayout {
dialog.setFilterPath(Config.getUploadPath());
String ret = dialog.open();
if (ret != null) {
- File file = new File(ret);
+ file = new File(ret);
Config.setUploadPath(file.getParentFile().getAbsolutePath());
+ uploadWizardState.vmDescriptionFile = file;
imageFileTextField.setText(ret);
+ setPageComplete(!imageNameTextField.getText().isEmpty());
}
}
@@ -57,5 +70,23 @@ public class ImageUploadPage extends ImageUploadPageLayout {
public void widgetDefaultSelected(SelectionEvent e) {
}
});
+
+ }
+ /* Override setVisible() to inject some code when this page is set visible
+ * Note that this also gets called when we go back to this page.
+ *
+ * @see org.eclipse.jface.dialogs.DialogPage#setVisible(boolean)
+ */
+ @Override
+ public void setVisible(boolean visible) {
+ if (getControl().isVisible() && !visible) {
+ // currently shown and about to be hidden
+ LOGGER.info("Leaving ImageUploadPage...");
+ LOGGER.debug(uploadWizardState.vmName == null ? "vmName: null" : "vmName: " + uploadWizardState.vmName + " fopajkws");
+ LOGGER.debug("vmDescriptionFile: " +
+ uploadWizardState.vmDescriptionFile == null ?
+ "null" : uploadWizardState.vmDescriptionFile.toString());
+ }
+ super.setVisible(visible);
}
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java b/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java
new file mode 100644
index 00000000..12ce08a1
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java
@@ -0,0 +1,26 @@
+package org.openslx.dozmod.state;
+
+import java.io.File;
+
+import org.openslx.bwlp.thrift.iface.OperatingSystem;
+
+public class UploadWizardState {
+
+ // name of the virtual machine as entered by the user
+ public String vmName;
+ // operating system of the virtual machine to be uploaded
+ public OperatingSystem vmOperatingSystem;
+ // description file of the virtual machine to be uploaded
+ public File vmDescriptionFile;
+ // disk file of the virtual machine to be uploaded
+ public File vmDiskFile;
+
+ // image metadata holders
+// public ImageBaseWrite imageBaseWrite;
+// public ImageVersionWrite imageVersionWrite;
+
+ public UploadWizardState() {
+// this.imageBaseWrite = new ImageBaseWrite();
+// this.imageVersionWrite = new ImageVersionWrite();
+ }
+}