summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/gui/image/FTPEditUploader_GUI.java
diff options
context:
space:
mode:
Diffstat (limited to 'dozentenmodul/src/main/java/gui/image/FTPEditUploader_GUI.java')
-rw-r--r--dozentenmodul/src/main/java/gui/image/FTPEditUploader_GUI.java278
1 files changed, 116 insertions, 162 deletions
diff --git a/dozentenmodul/src/main/java/gui/image/FTPEditUploader_GUI.java b/dozentenmodul/src/main/java/gui/image/FTPEditUploader_GUI.java
index 7777bf37..27f3d7ce 100644
--- a/dozentenmodul/src/main/java/gui/image/FTPEditUploader_GUI.java
+++ b/dozentenmodul/src/main/java/gui/image/FTPEditUploader_GUI.java
@@ -12,9 +12,6 @@ import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFileChooser;
@@ -40,10 +37,11 @@ import models.person;
import org.apache.log4j.Logger;
import org.apache.thrift.TException;
-import org.openslx.sat.thrift.iface.User;
+import org.openslx.sat.thrift.iface.TransferInformation;
import org.openslx.thrifthelper.ThriftManager;
import util.GuiManager;
+import util.MessageType;
import config.Config;
import ftp.UploadTask;
import gui.intro.MainMenue_GUI;
@@ -60,10 +58,8 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
private JLabel lblPath;
private JProgressBar progressBar;
private String host = SessionData.serverAdress;
- private int port = 21;
- private User user;
private File uploadFile;
- private UploadTask task;
+ private UploadTask task = null;
private JLabel lblUpSpeed;
private JLabel lblFertig;
private JLabel lblFilesize;
@@ -73,16 +69,14 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
private long filesize;
private double speed;
private long bytesread;
- private boolean fileupload = false;
- private boolean taskrun = false;
private int progress = 0;
private JButton btnUploadStarten = new JButton("Upload auf Server starten");
private JButton btnSpeicherortAuswhlen = new JButton("Image auswählen");
private JButton btnFinish = new JButton("Fertigstellen");
private JButton btnZurck = new JButton("Zurück");
private JButton btnUploadStoppen = new JButton("Upload abbrechen");
- private boolean isCurrentlyLoading = false; // currently up or downloading
- // file
+ private TransferInformation transferInfo = null;
+ // file
private boolean isAborted = false; // down- or upload was manually aborted
public static final String HELP_MESSAGE = "<html><div align = \"center\">"
+ "Laden Sie hier Ihre bearbeitete .vmdk-Datei hoch, die dann als virtuelles Labor geladen werden kann.<br />"
@@ -96,41 +90,28 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
*/
public FTPEditUploader_GUI() {
- final Object[] options = { "Beenden", "Abbrechen" };
+ final String[] options = { "Beenden", "Abbrechen" };
addInternalFrameListener(new InternalFrameAdapter() {
@Override
public void internalFrameClosing(InternalFrameEvent arg0) {
- if (taskrun == true) {
- // check if user wants to quit.
- int choice = JOptionPane
- .showOptionDialog(
- null,
- "Aktuell ist ein Upload aktiv. Wollen Sie diesen Abbrechen und das Programm beenden?",
- "Upload aktiv", JOptionPane.YES_NO_CANCEL_OPTION,
- JOptionPane.QUESTION_MESSAGE, null, options, options[1]);
- // 0=beenden, 1=abbrechen
- if (choice == 0) {
- try {
- ThriftManager.getSatClient().DeleteFtpUser(user.userName, SessionData.authToken);
- } catch (TException e1) {
- e1.printStackTrace();
- }
- task.cancel(true);
- try {
- ThriftManager.getSatClient().setSessionInvalid(SessionData.authToken);
- } catch (TException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- try {
- ThriftManager.getSatClient().setSessionInvalid(SessionData.authToken);
- } catch (TException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- System.exit(0);
- }// end if choice
- }
+ if (!isCurrentlyLoading())
+ return;
+ // check if user wants to quit.
+ int choice = JOptionPane.showOptionDialog(
+ null,
+ "Aktuell ist ein Upload aktiv. Wollen Sie diesen Abbrechen und das Programm beenden?",
+ "Upload aktiv", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null,
+ options, options[1]);
+ // 0=beenden, 1=abbrechen
+ if (choice == 0) {
+ try {
+ ThriftManager.getSatClient().cancelDownload(transferInfo.token);
+ ThriftManager.getSatClient().setSessionInvalid(SessionData.authToken);
+ } catch (TException e1) {
+ }
+ task.cancel(true);
+ System.exit(0);
+ }// end if choice
}
});
setResizable(false);
@@ -264,8 +245,7 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
panel.add(lblUploadIhresImage);
JTextPane txtpnFhreSieBitte = new JTextPane();
- txtpnFhreSieBitte
- .setText("Laden Sie optional ein neues Image hoch, oder klicken Sie direkt auf \"Fertigstellen\", um reine Änderungen der Angaben direkt zu übernehmen.");
+ txtpnFhreSieBitte.setText("Laden Sie optional ein neues Image hoch, oder klicken Sie direkt auf \"Fertigstellen\", um reine Änderungen der Angaben direkt zu übernehmen.");
txtpnFhreSieBitte.setEditable(false);
txtpnFhreSieBitte.setBackground(SystemColor.menu);
txtpnFhreSieBitte.setBounds(10, 36, 509, 42);
@@ -327,10 +307,8 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
isAborted = true; // set flag
try {
- ThriftManager.getSatClient().DeleteFtpUser(user.userName, SessionData.authToken);
- LOGGER.info("FTP user deleted.");
+ ThriftManager.getSatClient().cancelDownload(transferInfo.token);
} catch (TException e1) {
- e1.printStackTrace();
}
task.cancel(true);
resetValues();
@@ -365,19 +343,11 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
// save data
boolean success = updateData();
- if (success == true) {
- LOGGER.info("Bearbeitetes Image '" + Image.Imagename
- + "' erfolgreich gespeichert.");
- JOptionPane.showMessageDialog(null,
- "Die Änderungen wurden erfolgreich gespeichert.",
- "Änderungen gespeichert", JOptionPane.INFORMATION_MESSAGE);
- } else {
- LOGGER.error("Bearbeitetes Image '" + Image.Imagename
- + "' konnte nicht gespeichert werden.");
- JOptionPane.showMessageDialog(null,
- "Die Änderungen konnten nicht gespeichert werden.", "Fehler",
- JOptionPane.ERROR_MESSAGE);
- }
+ if (!success)
+ return;
+ LOGGER.info("Bearbeitetes Image '" + Image.Imagename + "' erfolgreich gespeichert.");
+ JOptionPane.showMessageDialog(null, "Die Änderungen wurden erfolgreich gespeichert.",
+ "Änderungen gespeichert", JOptionPane.INFORMATION_MESSAGE);
if (lblPath.getText().trim().length() > 0) {
File f = new File(lblPath.getText().trim());
@@ -393,17 +363,7 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
GuiManager.show(new MainMenue_GUI());
- if (taskrun == true) {
- try {
- ThriftManager.getSatClient().DeleteFtpUser(user.userName,
- SessionData.authToken);
-
- } catch (TException e1) {
- e1.printStackTrace();
- JOptionPane.showMessageDialog(null,
- e1.getCause() + "\n" + e1.getStackTrace(), "Debug-Message",
- JOptionPane.ERROR_MESSAGE);
- }
+ if (isCurrentlyLoading()) {
task.cancel(true);
}
@@ -421,8 +381,7 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
// 0=beenden, 1=abbrechen
if (choice == 0) {
try {
- ThriftManager.getSatClient().DeleteFtpUser(user.userName,
- SessionData.authToken);
+ ThriftManager.getSatClient().cancelDownload(transferInfo.token);
} catch (TException e1) {
e1.printStackTrace();
}
@@ -449,11 +408,10 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
}// end if coice
} else {
- int selectedOption = JOptionPane
- .showConfirmDialog(
- null,
- "<html>Achtung: Alle Änderungen gehen verloren!<br />Klicken Sie auf fertigstellen, wenn Sie die Änderungen dauerhaft speichern möchten.<br /><br />Möchten Sie jetzt abbrechen und zurück?</html>",
- "Abbrechen und zurück", JOptionPane.YES_NO_OPTION);
+ int selectedOption = JOptionPane.showConfirmDialog(
+ null,
+ "<html>Achtung: Alle Änderungen gehen verloren!<br />Klicken Sie auf fertigstellen, wenn Sie die Änderungen dauerhaft speichern möchten.<br /><br />Möchten Sie jetzt abbrechen und zurück?</html>",
+ "Abbrechen und zurück", JOptionPane.YES_NO_OPTION);
if (selectedOption == JOptionPane.YES_OPTION) {
try {
System.out.println("userID in editimageuploader is : "
@@ -491,31 +449,23 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
private void buttonUploadActionPerformed(ActionEvent event) {
isAborted = false;
- fileupload = true;
progressBar.setValue(0);
- btnUploadStarten.setEnabled(false); // verhindert einen weiteren klick
+ btnUploadStarten.setEnabled(false); // verhindert einen weiteren Klick
btnUploadStarten.setText("Bitte warten");
try {
- user = ThriftManager.getSatClient().getFtpUser(SessionData.authToken);
- LOGGER.info("Received FTP user.");
+ transferInfo = ThriftManager.getSatClient().requestUpload(SessionData.authToken,
+ uploadFile.length(), null);
} catch (TException e) {
- e.printStackTrace();
+ transferInfo = null;
JOptionPane.showMessageDialog(null, "Konnte vom Satelliten keine FTP-User erhalten!",
"Debug-Message", JOptionPane.ERROR_MESSAGE);
}
- DateFormat formatter = new SimpleDateFormat("yyyMMddHHmmss");
-
- // set new file name and path only when uploading a new file. else use
- // old filename and path
- Image.NewName = formatter.format(new Date()) + "_" + person.verantwortlicher.getHochschule() + "_"
- + person.verantwortlicher.getUsername() + "_" + Image.Imagename + ".vmdk";
- task = new UploadTask(host, port, user.userName, user.password, user.path + "temp/", uploadFile);
+ task = new UploadTask(host, transferInfo.plainPort, transferInfo.token, uploadFile);
task.addPropertyChangeListener(this);
task.execute();
- taskrun = true;
}
@@ -523,7 +473,7 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
if (isAborted == false) {
// set progressbar
- if ("progress" == arg0.getPropertyName()) {
+ if ("progress".equals(arg0.getPropertyName())) {
progress = (Integer) arg0.getNewValue();
progressBar.setValue(progress);
}
@@ -540,22 +490,20 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
btnFinish.setEnabled(false);
}
- if ("speed" == arg0.getPropertyName()) {
+ if ("speed".equals(arg0.getPropertyName())) {
speed = (double) arg0.getNewValue();
// if(speed<=1){
- lblUpSpeed.setText(String.valueOf(speed).substring(0,
- String.valueOf(speed).lastIndexOf(".") + 3)
- + " MB/s");
+ lblUpSpeed.setText(String.format("%.2f", speed) + " MB/s");
}
- if ("bytesread" == arg0.getPropertyName()) {
+ if ("bytesread".equals(arg0.getPropertyName())) {
bytesread = (long) arg0.getNewValue();
lblFertig.setText((bytesread / 1024 / 1024) + " MB");
lblVerbleibend.setText(((filesize / 1024 / 1024) - (bytesread / 1024 / 1024)) + " MB");
- lblZeit.setText(String
- .valueOf(((((filesize / 1024 / 1024) - (bytesread / 1024 / 1024)) / speed) / 60) + 1)
+ lblZeit.setText(String.valueOf(
+ ((((filesize / 1024 / 1024) - (bytesread / 1024 / 1024)) / speed) / 60) + 1)
.substring(
0,
String.valueOf(
@@ -564,7 +512,7 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
+ " Minuten");
}
- if ("filesize" == arg0.getPropertyName()) {
+ if ("filesize".equals(arg0.getPropertyName())) {
filesize = (long) arg0.getNewValue();
lblFilesize.setText((filesize / 1024 / 1024) + " MB");
@@ -573,84 +521,90 @@ public class FTPEditUploader_GUI extends JInternalFrame implements PropertyChang
}// end propertyChange
public boolean updateData() {
-
- try {
- //if a new file has been uploaded and new filename is set
- if (Image.NewName != null) {
- LOGGER.debug("New file uploaded and new filename is set");
-
- ThriftManager.getSatClient().updateImageData(Image.Imagename, Image.Imagename,
- Image.Desc,
- //Image.Imagepath,
- "temp/" + Image.NewName, Image.Licensed, Image.Internet, Image.Ram, Image.Cpu,
- Image.ImageId, Image.Version, Image.Vorlage, Image.Filesize, Image.ShareMode,
- Image.OS, SessionData.authToken);
- if (fileupload == true) {
- ThriftManager.getSatClient().startFileCopy(Image.NewName, SessionData.authToken);
- }
-
- } else { //no new file uploaded and old file name stays
- LOGGER.debug("old file should remain");
-
- ThriftManager.getSatClient().updateImageData(Image.Imagename, Image.Imagename,
- Image.Desc,
- //"temp/" + Image.NewName, //wrong
- Image.Imagepath, Image.Licensed, Image.Internet, Image.Ram, Image.Cpu, Image.ImageId,
- Image.Version, Image.Vorlage, Image.Filesize, Image.ShareMode, Image.OS,
- SessionData.authToken);
-
- if (fileupload == true) {
- ThriftManager.getSatClient().startFileCopy(Image.NewName, SessionData.authToken);
- // client.startFileCopy(Image.Imagename);
- }
+ if (isCurrentlyLoading()) {
+ JOptionPane.showMessageDialog(null, "Vorgang noch nicht abgeschlossen!!", "Fehler",
+ JOptionPane.ERROR_MESSAGE);
+ return false;
+ }
+ boolean ret;
+ Exception ex;
+ //if a new file has been uploaded and new filename is set
+ if (task != null && task.isDone()) {
+ LOGGER.debug("New file uploaded, updating DB entry...");
+
+ ret = false;
+ ex = null;
+ try {
+ ret = ThriftManager.getSatClient().updateImageFile(transferInfo.token, Image.ImageId);
+ } catch (Exception e) {
+ ex = e;
+ }
+ if (!ret) {
+ GuiManager.showMessageBox(
+ "Die Metadaten des Images konnten nicht auf das neue Image umgeschrieben werden.",
+ MessageType.ERROR, LOGGER, ex);
+ return false;
}
+ }
- // remove all additional user permissions on first stage
+ LOGGER.debug("old file should remain");
+ ret = false;
+ ex = null;
+ try {
+ ret = ThriftManager.getSatClient().updateImageData(SessionData.authToken, Image.ImageId,
+ Image.Imagename, Image.Desc, Image.Licensed, Image.Internet, Image.ShareMode, Image.OS);
+ } catch (TException e) {
+ ex = e;
+ }
+ if (!ret) {
+ GuiManager.showMessageBox("Serverseitiger Fehler beim Aktualisieren der Metadaten",
+ MessageType.ERROR, LOGGER, ex);
+ return false;
+ }
+
+ // remove all additional user permissions on first stage
+ ret = false;
+ ex = null;
+ try {
ThriftManager.getSatClient().deleteAllAdditionalImagePermissions(Image.ImageId,
SessionData.authToken, person.verantwortlicher.getUserID());
+ } catch (TException e) {
+ ex = e;
+ }
+ if (ex != null) {
+ GuiManager.showMessageBox("Konnte alte Permissions nicht aus der Datenbank entfernen.",
+ MessageType.WARNING, LOGGER, ex);
+ }
- // then, add user permissions as they have been set new
- for (int i = 0; i < RightsManagement.rightsManagement.getPermittedUserList().size(); i++) {
- /*System.out.println("Writing additional rights for user "
- + RightsManagement.rightsManagement
- .getPermittedUserList().get(i).getUserID()
- + ", User "
- + i
- + "/"
- + RightsManagement.rightsManagement.getPermittedUserList().size());
- */
-
- ThriftManager.getSatClient().writeAdditionalImageRights(Image.ImageId,
+ // then, add user permissions as they have been set new
+ ret = true; // (sic)
+ ex = null;
+ for (int i = 0; i < RightsManagement.rightsManagement.getPermittedUserList().size(); i++) {
+ try {
+ ret = ThriftManager.getSatClient().writeAdditionalImageRights(Image.ImageId,
RightsManagement.rightsManagement.getPermittedUserList().get(i).getUserID(),
RightsManagement.rightsManagement.getPermittedUserList().get(i).isImageRead(),
RightsManagement.rightsManagement.getPermittedUserList().get(i).isImageWrite(),
RightsManagement.rightsManagement.getPermittedUserList().get(i).isImageLinkAllowed(),
RightsManagement.rightsManagement.getPermittedUserList().get(i).isImageAdmin(),
- SessionData.authToken);
-
- }// end for
-
- } catch (TException e) {
- e.printStackTrace();
- JOptionPane.showMessageDialog(null,
- "Konnte die Metadaten des Images nicht in die Datenbank speichern!", "Debug-Message",
- JOptionPane.ERROR_MESSAGE);
- return false;
+ SessionData.authToken)
+ && ret;
+ } catch (TException e) {
+ ex = e;
+ }
+ }// end for
+ if (!ret) {
+ GuiManager.showMessageBox("Serverseitiger Fehler beim Schreiben der neuen Berechtigungen.",
+ MessageType.WARNING, LOGGER, ex);
}
+
return true;
}
public boolean isCurrentlyLoading() {
- isCurrentlyLoading = false;
-
- if (lblVerbleibend.getText().trim().equals("0 MB") || lblVerbleibend.getText().trim().equals("0")) {
- isCurrentlyLoading = false;
- } else {
- isCurrentlyLoading = true;
- }
- return isCurrentlyLoading;
+ return task != null && !task.isDone();
}// end isCurrentlyLoading()
public void resetValues() {