From 51ee7cbffa85542fbbf5fd9c497f48a4d72ce497 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Fri, 3 Aug 2012 11:24:19 +0900
Subject: [PATCH] catching exception when trying to export, and printing an
 error message if not succesful

---
 .../serviceimpls/ProjectServiceImpl.java      |  9 +++++++--
 .../supervisor/panels/WatsonInfoPanel.html    |  2 +-
 .../supervisor/panels/WatsonInfoPanel.java    | 20 +++++++++++++++++--
 3 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectServiceImpl.java
index d7ffaae3db..0868929818 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectServiceImpl.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectServiceImpl.java
@@ -14,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional;
 import se.su.dsv.scipro.data.dataobjects.*;
 import se.su.dsv.scipro.data.enums.ProjectStatus;
 import se.su.dsv.scipro.data.enums.ProjectTeamMemberRoles;
+import se.su.dsv.scipro.io.exceptions.ExternalExportException;
 import se.su.dsv.scipro.io.facade.ExporterFacade;
 import se.su.dsv.scipro.match.dataobject.ProjectIdea;
 import se.su.dsv.scipro.springdata.repos.*;
@@ -185,8 +186,12 @@ public class ProjectServiceImpl extends AbstractQueryService<Project, Long> impl
                 p = projectRepo.save(p);
             }
 
-            exporterFacade.exportProject(p, p.getHeadSupervisor().getUnit());
-            return p;
+            try {
+                exporterFacade.exportProject(p, p.getHeadSupervisor().getUnit());
+                return p;
+            } catch (ExternalExportException eee){
+                throw eee;
+            }
         }
         else return null;
     }
diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/WatsonInfoPanel.html b/src/main/java/se/su/dsv/scipro/supervisor/panels/WatsonInfoPanel.html
index dd8a0bd743..6bd05a490e 100644
--- a/src/main/java/se/su/dsv/scipro/supervisor/panels/WatsonInfoPanel.html
+++ b/src/main/java/se/su/dsv/scipro/supervisor/panels/WatsonInfoPanel.html
@@ -6,7 +6,7 @@
 </head>
 <body>
 	<wicket:panel>
-
+        <div wicket:id="feedbackPanel"></div>
         <div><button wicket:id="export">Create project and export to Daisy</button></div>
         <br>
 
diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/WatsonInfoPanel.java b/src/main/java/se/su/dsv/scipro/supervisor/panels/WatsonInfoPanel.java
index 0c3af1dbd0..49458ac8be 100644
--- a/src/main/java/se/su/dsv/scipro/supervisor/panels/WatsonInfoPanel.java
+++ b/src/main/java/se/su/dsv/scipro/supervisor/panels/WatsonInfoPanel.java
@@ -8,6 +8,7 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.spring.injection.annot.SpringBean;
@@ -15,6 +16,7 @@ import se.su.dsv.scipro.SciProSession;
 import se.su.dsv.scipro.data.dataobjects.Employee;
 import se.su.dsv.scipro.data.dataobjects.GeneralSystemSettings;
 import se.su.dsv.scipro.data.dataobjects.Student;
+import se.su.dsv.scipro.io.exceptions.ExternalExportException;
 import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao;
 import se.su.dsv.scipro.match.dataobject.*;
 import se.su.dsv.scipro.security.auth.roles.Roles;
@@ -39,9 +41,15 @@ public class WatsonInfoPanel extends Panel {
     @SpringBean
     private GeneralSystemSettingsService generalSystemSettingsService;
 
+    private FeedbackPanel feedbackPanel;
+
 	public WatsonInfoPanel(String id, final ProjectIdea projectIdea) {
 		super(id);
-		
+
+        feedbackPanel = new FeedbackPanel("feedbackPanel");
+        feedbackPanel.setOutputMarkupId(true);
+        add(feedbackPanel);
+
 		add(new Label("level", projectIdea.getProjectClass().getName()));
 
 //        add(new Label("authors", getAuthors(projectIdea.getAuthors())));
@@ -62,10 +70,18 @@ public class WatsonInfoPanel extends Panel {
                 projectIdea.getMatch().getSupervisor().getUnit() != null &&
                 projectIdea.getProject() == null &&
                 generalSystemSettings.isRemoteExport();
+
         add(new AjaxLink("export") {
             @Override
             public void onClick(AjaxRequestTarget target) {
-                projectService.createAndExportProjectFromProjectIdea(projectIdea);
+
+                try {
+                    projectService.createAndExportProjectFromProjectIdea(projectIdea);
+                } catch (ExternalExportException eee){
+                    target.addComponent(feedbackPanel);
+                    error("This project idea could not exported to Daisy. Try creating a thesis in Daisy manually.");
+                }
+
                 target.addComponent(this);
                 this.setEnabled(false);
                 this.setVisible(false);