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);