diff --git a/src/main/java/org/olat/ims/qti/QTIResultDetailsController.java b/src/main/java/org/olat/ims/qti/QTIResultDetailsController.java index 233b2318358568d88047ec97f8acc7bcae603cfb..ef78c9b1c5d333165d8386725c4ac017680d9ae6 100644 --- a/src/main/java/org/olat/ims/qti/QTIResultDetailsController.java +++ b/src/main/java/org/olat/ims/qti/QTIResultDetailsController.java @@ -110,7 +110,6 @@ public class QTIResultDetailsController extends BasicController { String resourcePath = courseResourceableId + File.separator + nodeIdent; qtiPersister = new FilePersister(assessedIdentity, resourcePath); - System.out.println("qti.ser: " + qtiPersister.exists()); init(ureq); } @@ -171,21 +170,37 @@ public class QTIResultDetailsController extends BasicController { cmc.activate(); } else if(tEvent.getActionId().equals("ret")) { - String fullname = UserManager.getInstance().getUserDisplayName(assessedIdentity.getUser()); - String title = translate("retrievetest.confirm.title"); - String text = translate("retrievetest.confirm.text", new String[]{fullname}); - retrieveConfirmationCtr = activateYesNoDialog(ureq, title, text, retrieveConfirmationCtr); + updateTableModel(); + if(tableModel.isTestRunning()) { + String fullname = UserManager.getInstance().getUserDisplayName(assessedIdentity.getUser()); + String title = translate("retrievetest.confirm.title"); + String text = translate("retrievetest.confirm.text", new String[]{fullname}); + retrieveConfirmationCtr = activateYesNoDialog(ureq, title, text, retrieveConfirmationCtr); + } } + } else if (source == cmc) { + updateTableModel(); + removeAsListenerAndDispose(cmc); + cmc = null; } else if (source == retrieveConfirmationCtr) { if(DialogBoxUIFactory.isYesEvent(event)) { - IQRetrievedEvent retrieveEvent = new IQRetrievedEvent(assessedIdentity, courseResourceableId, nodeIdent); - CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(retrieveEvent, retrieveEvent); - doRetrieveTest(ureq); + updateTableModel(); + if(tableModel.isTestRunning()) { + IQRetrievedEvent retrieveEvent = new IQRetrievedEvent(assessedIdentity, courseResourceableId, nodeIdent); + CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(retrieveEvent, retrieveEvent); + doRetrieveTest(ureq); + } } removeAsListenerAndDispose(retrieveConfirmationCtr); retrieveConfirmationCtr = null; } } + + private void updateTableModel() { + List<QTIResultSet> resultSets = qrm.getResultSets(courseResourceableId, nodeIdent, repositoryEntry.getKey(), assessedIdentity); + tableModel = new QTIResultTableModel(resultSets, qtiPersister, getTranslator()); + tableCtr.setTableDataModel(tableModel); + } /** * @see org.olat.core.gui.control.DefaultController#doDispose(boolean) diff --git a/src/main/java/org/olat/ims/qti/QTIResultTableModel.java b/src/main/java/org/olat/ims/qti/QTIResultTableModel.java index 06038bf1382a151e59406f1a3a80516d720647d8..994c88e4cc3f336dc286f317c572275df415fef5 100644 --- a/src/main/java/org/olat/ims/qti/QTIResultTableModel.java +++ b/src/main/java/org/olat/ims/qti/QTIResultTableModel.java @@ -45,6 +45,7 @@ public class QTIResultTableModel implements TableDataModel<QTIResultSet> { private static final int COLUMN_COUNT = 3; private List<QTIResultSet> resultSets; private Persister persister; + private boolean inTest; private final Translator translator; /** @@ -60,13 +61,24 @@ public class QTIResultTableModel implements TableDataModel<QTIResultSet> { public QTIResultTableModel(List<QTIResultSet> resultSets, Persister persister, Translator translator) { this.resultSets = resultSets; this.persister = persister; + this.inTest = (persister == null ? false : persister.exists()); this.translator = translator; } - private boolean isTestReleased() { - return persister == null || !persister.exists(); + public boolean updateStatus() { + boolean newStatus = (persister == null ? false : persister.exists()); + if(newStatus == inTest) { + return false; + } + inTest = newStatus; + return true; + } + + public boolean isTestRunning() { + return (persister == null ? false : persister.exists()); } + /** * @see org.olat.core.gui.components.table.TableDataModel#getColumnCount() */ @@ -78,7 +90,7 @@ public class QTIResultTableModel implements TableDataModel<QTIResultSet> { * @see org.olat.core.gui.components.table.TableDataModel#getRowCount() */ public int getRowCount() { - return resultSets.size() + (isTestReleased() ? 0 : 1); + return resultSets.size() + (inTest ? 1 : 0); } @Override @@ -100,7 +112,7 @@ public class QTIResultTableModel implements TableDataModel<QTIResultSet> { * @see org.olat.core.gui.components.table.TableDataModel#getValueAt(int, int) */ public Object getValueAt(int row, int col) { - if(!isTestReleased() && (row+1 == getRowCount())) { + if(inTest && (row + 1 == getRowCount())) { switch (col) { case 0: return persister.getLastModified(); case 1: return "<span class='o_ochre'>" + translator.translate("notReleased") + "</span>";