diff options
Diffstat (limited to 'dozentenmodul/src/main/java/gui/image/FTPEditUploader_GUI.java')
| -rw-r--r-- | dozentenmodul/src/main/java/gui/image/FTPEditUploader_GUI.java | 278 |
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() { |
