From 558e78d599fc2984db246be3b8459a644cda6a92 Mon Sep 17 00:00:00 2001 From: Emil Siverhall <emil-siv@dsv.su.se> Date: Wed, 1 Aug 2012 11:34:56 +0200 Subject: [PATCH] disabled the possibilitu for students to submit their own idea if they are already included in a supervisor provided idea --- .../project/pages/AbstractProjectIdeaPage.java | 17 ++--------------- .../pages/ProjectIdeaSubmissionPage.java | 9 +++++++-- .../project/panels/ProjectIdeaPeriodPanel.java | 8 +++++++- .../panels/ProjectIdeaSubmissionPanel.java | 6 +++--- .../serviceimpls/SupervisorIdeaServiceImpl.java | 8 +++++++- .../services/SupervisorIdeaService.java | 1 + 6 files changed, 27 insertions(+), 22 deletions(-) diff --git a/src/main/java/se/su/dsv/scipro/project/pages/AbstractProjectIdeaPage.java b/src/main/java/se/su/dsv/scipro/project/pages/AbstractProjectIdeaPage.java index e5566a380e..cd8383fc15 100644 --- a/src/main/java/se/su/dsv/scipro/project/pages/AbstractProjectIdeaPage.java +++ b/src/main/java/se/su/dsv/scipro/project/pages/AbstractProjectIdeaPage.java @@ -2,34 +2,22 @@ package se.su.dsv.scipro.project.pages; import java.util.List; -import javax.servlet.http.Cookie; - import org.apache.wicket.PageParameters; import org.apache.wicket.ajax.AbstractAjaxTimerBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.panel.EmptyPanel; -import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; -import org.apache.wicket.protocol.http.WebRequest; -import org.apache.wicket.protocol.http.WebResponse; import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.util.time.Duration; import org.odlabs.wiquery.ui.dialog.Dialog; -import se.su.dsv.scipro.SciProSession; -import se.su.dsv.scipro.data.DomainObjectDetachableModel; -import se.su.dsv.scipro.data.dao.interfaces.ProjectDao; -import se.su.dsv.scipro.data.dataobjects.Project; import se.su.dsv.scipro.data.dataobjects.Student; import se.su.dsv.scipro.data.dataobjects.User; -import se.su.dsv.scipro.match.dataobject.SupervisorIdea; import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus; +import se.su.dsv.scipro.match.dataobject.SupervisorIdea; import se.su.dsv.scipro.project.panels.AcceptIdeaDialogPanel; import se.su.dsv.scipro.project.panels.CompleteIdeaDialogPanel; import se.su.dsv.scipro.project.panels.ProjectIdeaTabMenuPanel; -import se.su.dsv.scipro.project.panels.ProjectSubTabMenuPanel; import se.su.dsv.scipro.springdata.services.StudentService; import se.su.dsv.scipro.springdata.services.SupervisorIdeaService; /** @@ -121,8 +109,7 @@ public abstract class AbstractProjectIdeaPage extends ProjectPage { stop(); } }); - } else - System.out.println("No confirmed ideas"); + } } } diff --git a/src/main/java/se/su/dsv/scipro/project/pages/ProjectIdeaSubmissionPage.java b/src/main/java/se/su/dsv/scipro/project/pages/ProjectIdeaSubmissionPage.java index b539543806..c5dee601b3 100644 --- a/src/main/java/se/su/dsv/scipro/project/pages/ProjectIdeaSubmissionPage.java +++ b/src/main/java/se/su/dsv/scipro/project/pages/ProjectIdeaSubmissionPage.java @@ -18,12 +18,15 @@ import se.su.dsv.scipro.project.panels.CheatSheetPanel; import se.su.dsv.scipro.project.panels.ProjectIdeaSubmissionPanel; import se.su.dsv.scipro.security.auth.Authorization; import se.su.dsv.scipro.security.auth.roles.Roles; +import se.su.dsv.scipro.springdata.services.SupervisorIdeaService; @Authorization(authorizedRoles={Roles.STUDENT}) public class ProjectIdeaSubmissionPage extends AbstractProjectIdeaPage implements MenuHighlightProjectIdeas { @SpringBean private ProjectIdeaDao projectIdeaDao; + @SpringBean + private SupervisorIdeaService ideaService; public ProjectIdeaSubmissionPage(PageParameters pp) { super(pp); @@ -38,12 +41,14 @@ public class ProjectIdeaSubmissionPage extends AbstractProjectIdeaPage implement for(Student s: authorRoles){ authors.add(s.getUser()); } - if(!authors.contains(SciProSession.get().getUser())){ + if(!authors.contains(getUser())){ failAndRedirect(); } }else idea = new ProjectIdea(); - add(new ProjectIdeaSubmissionPanel("projectIdeaPanel", getUser(), idea)); + + boolean alreadyParticipating = ideaService.authorParticipatingOnIdea(getUser()); + add(new ProjectIdeaSubmissionPanel("projectIdeaPanel", getUser(), idea, alreadyParticipating)); add(new CheatSheetPanel("cheatSheetPanel")); } diff --git a/src/main/java/se/su/dsv/scipro/project/panels/ProjectIdeaPeriodPanel.java b/src/main/java/se/su/dsv/scipro/project/panels/ProjectIdeaPeriodPanel.java index 1676b4b197..249b752d04 100644 --- a/src/main/java/se/su/dsv/scipro/project/panels/ProjectIdeaPeriodPanel.java +++ b/src/main/java/se/su/dsv/scipro/project/panels/ProjectIdeaPeriodPanel.java @@ -17,11 +17,13 @@ import org.apache.wicket.spring.injection.annot.SpringBean; import se.su.dsv.scipro.SciProSession; import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao; import se.su.dsv.scipro.data.dataobjects.ProjectClass; +import se.su.dsv.scipro.data.dataobjects.User; import se.su.dsv.scipro.data.facade.ProjectIdeaFacade; import se.su.dsv.scipro.icons.ImageObject; import se.su.dsv.scipro.match.dao.interfaces.ApplicationPeriodDao; import se.su.dsv.scipro.match.dataobject.ApplicationPeriod; import se.su.dsv.scipro.project.pages.ProjectIdeaSubmissionPage; +import se.su.dsv.scipro.springdata.services.SupervisorIdeaService; import se.su.dsv.scipro.util.DateFormatter; public class ProjectIdeaPeriodPanel extends Panel { @@ -34,6 +36,8 @@ public class ProjectIdeaPeriodPanel extends Panel { private ProjectClassDao projectClassDao; @SpringBean private ProjectIdeaFacade projectIdeaFacade; + @SpringBean + private SupervisorIdeaService ideaService; private WebMarkupContainer periodContainer; @@ -123,7 +127,9 @@ public class ProjectIdeaPeriodPanel extends Panel { alreadySubmittedLabel.setVisible(false); periodContainer.add(alreadySubmittedLabel); - if (projectIdeaFacade.projectIdeaAlreadySubmittedThisPeriod(SciProSession.get().getUser(), currentPeriods)){ + User currentUser = SciProSession.get().getUser(); + + if (projectIdeaFacade.projectIdeaAlreadySubmittedThisPeriod(currentUser, currentPeriods)||ideaService.authorParticipatingOnIdea(currentUser)){ newIdeaLink.setVisible(false); alreadySubmittedLabel.setVisible(true); } diff --git a/src/main/java/se/su/dsv/scipro/project/panels/ProjectIdeaSubmissionPanel.java b/src/main/java/se/su/dsv/scipro/project/panels/ProjectIdeaSubmissionPanel.java index d167c713cb..ef2634d9be 100644 --- a/src/main/java/se/su/dsv/scipro/project/panels/ProjectIdeaSubmissionPanel.java +++ b/src/main/java/se/su/dsv/scipro/project/panels/ProjectIdeaSubmissionPanel.java @@ -51,8 +51,8 @@ import se.su.dsv.scipro.match.dao.interfaces.ApplicationPeriodDao; import se.su.dsv.scipro.match.dao.interfaces.AuthorDao; import se.su.dsv.scipro.match.dao.interfaces.ExemptionDao; import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao; -import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao; import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao.TYPE; +import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao; import se.su.dsv.scipro.match.dataobject.ApplicationPeriod; import se.su.dsv.scipro.match.dataobject.Keyword; import se.su.dsv.scipro.match.dataobject.KeywordType; @@ -99,10 +99,10 @@ public class ProjectIdeaSubmissionPanel extends Panel { * @param idea * The project idea, that is submitted */ - public ProjectIdeaSubmissionPanel(String id, User user, ProjectIdea idea) { + public ProjectIdeaSubmissionPanel(String id, User user, ProjectIdea idea, boolean alreadyParticipating) { super(id); add(new FeedbackPanel("feedback")); - add(new ProjectIdeaForm("projectIdeaForm", user, new Model<ProjectIdea>(idea))); + add(new ProjectIdeaForm("projectIdeaForm", user, new Model<ProjectIdea>(idea)).setEnabled(!alreadyParticipating)); dialogSetup(); } diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorIdeaServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorIdeaServiceImpl.java index 0b63974cd6..200cc2272b 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorIdeaServiceImpl.java +++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorIdeaServiceImpl.java @@ -284,6 +284,12 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId return supervisorIdeaRepo.countIdeasByAuthorAndStatus(author, status); } + @Override + public boolean authorParticipatingOnIdea(User user) { + Student author = studentService.findByUser(user); + return alreadyParticipatingOnIdea(author); + } + private Predicate predicateFromParams(FilterParams params) { return levelFilter(params.getLevels()).and(bySupervisor(params.getSupervisor())); } @@ -341,7 +347,7 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId private BooleanExpression byStatus(IdeaStatus status){ return QSupervisorIdea.supervisorIdea.ideaStatus.eq(status); } - + private boolean alreadyParticipatingOnIdea(Student author) { Long ideas = countByAuthorAndStatus(author, IdeaStatus.TAKEN); if(ideas==0) diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorIdeaService.java b/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorIdeaService.java index 93221f3ea9..e847d41b6b 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorIdeaService.java +++ b/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorIdeaService.java @@ -38,6 +38,7 @@ public interface SupervisorIdeaService extends GenericService<SupervisorIdea, Lo boolean hasTakenIdeas(User authorUser, boolean confirmed); boolean isIdeaEditable(SupervisorIdea idea, User currentUser); + boolean authorParticipatingOnIdea(User user); Pair<Boolean, String> validateIdeaAcceptance(SupervisorIdea idea, User loggedInUser, SortedSet<Student> students); Pair<Boolean, String> validatePartnerAcceptance(User loggedInUser);