From 0b3fb1190e81abc91639993ae55e6b81105323e8 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Wed, 26 Aug 2015 17:37:30 +0200 Subject: [client] reworked ThriftActions.deleteImageBase and deleteImageVersion --- .../dozmod/gui/window/ImageDetailsWindow.java | 6 +- .../openslx/dozmod/gui/window/ImageListWindow.java | 2 +- .../dozmod/gui/window/LectureListWindow.java | 2 - .../org/openslx/dozmod/thrift/ThriftActions.java | 82 ++++++++++++---------- 4 files changed, 48 insertions(+), 44 deletions(-) (limited to 'dozentenmodul/src/main/java/org/openslx') 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 419a3484..7bd6608f 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 @@ -322,10 +322,10 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe * @param version image version to delete */ private void deleteVersion(final ImageVersionDetails version) { - if(version == null) + if (version == null) return; - ThriftActions.deleteImageBaseOrVersion(JOptionPane.getFrameForComponent(this), - image.getImageBaseId(), version.versionId, new DeleteCallback() { + ThriftActions.deleteImageVersion(JOptionPane.getFrameForComponent(this), + version.versionId, new DeleteCallback() { @Override public void isDeleted(boolean success) { refresh(success); 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 e6a65bb8..a7fd9b27 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 @@ -291,7 +291,7 @@ public class ImageListWindow extends ImageListWindowLayout implements DownloadCa * @param image image to delete */ private void deleteBaseImage(final ImageSummaryRead image) { - ThriftActions.deleteBaseImage(JOptionPane.getFrameForComponent(this), image.getImageBaseId(), this); + ThriftActions.deleteImageBase(JOptionPane.getFrameForComponent(this), image.getImageBaseId(), this); } /** diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java index ce455b5a..31395897 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java @@ -224,8 +224,6 @@ public class LectureListWindow extends LectureListWindowLayout { private void deleteLecture(final LectureSummary lecture) { if (lecture == null) return; - if (!Gui.showMessageBox(this, "Wollen Sie diese Veranstaltung wirklich löschen?", MessageType.QUESTION_YESNO, LOGGER, null)) - return; ThriftActions.deleteLecture(JOptionPane.getFrameForComponent(me), lecture.getLectureId(), new DeleteLectureCallback() { @Override diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java index efe2e381..e8681c6e 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java @@ -24,6 +24,8 @@ import org.openslx.bwlp.thrift.iface.LectureRead; import org.openslx.bwlp.thrift.iface.LectureSummary; import org.openslx.bwlp.thrift.iface.LectureWrite; import org.openslx.bwlp.thrift.iface.TAuthorizationException; +import org.openslx.bwlp.thrift.iface.TInternalServerError; +import org.openslx.bwlp.thrift.iface.TNotFoundException; import org.openslx.bwlp.thrift.iface.TransferInformation; import org.openslx.bwlp.thrift.iface.UserInfo; import org.openslx.dozmod.Config; @@ -481,7 +483,7 @@ public class ThriftActions { */ void isDeleted(boolean success); } - public static void deleteBaseImage(final Frame frame, final String imageBaseId, final DeleteCallback callback) { + public static void deleteImageBase(final Frame frame, final String imageBaseId, final DeleteCallback callback) { if (imageBaseId == null || imageBaseId.isEmpty()) return; // first look if we have versions @@ -500,7 +502,7 @@ public class ThriftActions { ThriftError.showMessage(frame, LOGGER, e, "Fehler"); return; } - String questionText = "Ausgewähltes Image hat folgende Veranstaltungen:\n"; + String questionText = "Dieses Image ist verknüpft zu folgende Veranstaltungen:\n"; if (details != null && lecturesToBeDeleted != null) { for (LectureSummary lecture : lecturesToBeDeleted) { questionText += lecture.getLectureName() + "\n"; @@ -534,47 +536,49 @@ public class ThriftActions { * @param imageVersionId id of the image version to be deleted * @param callback called to inform the GUI about the deletion status (see DeleteCallback interface) */ - public static void deleteImageBaseOrVersion(final Frame frame, final String imageBaseId, - final String imageVersionId, final DeleteCallback callback) { - String questionText; - if (imageBaseId == null) { + public static void deleteImageVersion(final Frame frame, final String imageVersionId, + final DeleteCallback callback) { + // TODO async? + if (imageVersionId == null || imageVersionId.isEmpty()) return; - } else { - questionText = imageVersionId == null ? - "Wollen Sie dieses Image wirklich löschen?" : "Wollen Sie diese Image-Version wirklich löschen?"; + boolean success = false; + List lectureList = null; + try { + // fetch lectures + lectureList = ThriftManager.getSatClient().getLectureList(Session.getSatelliteToken(), 100); + } catch (TException e) { + ThriftError.showMessage(frame, LOGGER, e, "Fehler beim Holen der Liste der Veranstaltungen"); + if (callback != null) + callback.isDeleted(success); + return; + } + String questionText = "Diese Version ist verknüpft zu folgende Veranstaltungen:\n"; + if (lectureList != null) { + for (LectureSummary lecture : lectureList) { + if (lecture.getImageVersionId().equals(imageVersionId)) { + questionText += lecture.getLectureName() + "\n"; + } + } } + questionText += "\nWollen Sie diese Version samt Veranstaltungen löschen?\n"; if (!userConfirmed(frame, questionText)) return; - - // perform the deletion - QuickTimer.scheduleOnce(new Task() { - boolean success = false; + try { + ThriftManager.getSatClient().deleteImageVersion(Session.getSatelliteToken(), imageVersionId); + LOGGER.info("Deleted version '" + imageVersionId + "'."); + success = true; + } catch (TException e) { + ThriftError.showMessage(frame, LOGGER, e, "Fehler beim Löschen der Version"); + if (callback != null) + callback.isDeleted(success); + return; + } + final boolean fSuccess = success; + Gui.asyncExec(new Runnable() { @Override - public void fire() { - try { - if (imageVersionId == null) { - // deleting an image base - ThriftManager.getSatClient().deleteImageBase(Session.getSatelliteToken(), imageBaseId); - LOGGER.info("Deleted image with id '" + imageBaseId + "'"); - } else { - // deleting an image version - ThriftManager.getSatClient().deleteImageVersion(Session.getSatelliteToken(), imageVersionId); - LOGGER.info("Deleted version '" + imageVersionId + "' of image '" + imageBaseId + "'."); - } - success = true; - } catch (TException e) { - ThriftError.showMessage(frame, LOGGER, e, "Löschen fehlgeschlagen"); - if (callback != null) - callback.isDeleted(success); - return; - } - Gui.asyncExec(new Runnable() { - @Override - public void run() { - if (callback != null) - callback.isDeleted(success); - } - }); + public void run() { + if (callback != null) + callback.isDeleted(fSuccess); } }); } @@ -748,6 +752,8 @@ public class ThriftActions { void deleted(boolean success); } public static void deleteLecture(final Frame frame, final String lectureId, final DeleteLectureCallback callback) { + if (lectureId == null) + return; QuickTimer.scheduleOnce(new Task() { boolean success = false; @Override -- cgit v1.2.3-55-g7522