Merge branch 'm3_first_meeting' into develop

This commit is contained in:
Emil Siverhall 2012-08-01 13:00:54 +02:00
commit 47b36f75f6
6 changed files with 27 additions and 22 deletions

@ -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");
}
}
}

@ -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"));
}

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

@ -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();
}

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

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