now displaying areas and keywords when student wants to accept an idea created by supervisor

This commit is contained in:
Emil Siverhall 2012-07-18 15:56:14 +02:00
parent af00f4ffca
commit 8088450860
7 changed files with 74 additions and 18 deletions
src/main/java/se/su/dsv/scipro

@ -8,7 +8,6 @@ import java.util.Map;
import java.util.Set;
import javax.persistence.AssociationOverride;
import javax.persistence.Basic;
import javax.persistence.Cacheable;
import javax.persistence.ElementCollection;
import javax.persistence.Embeddable;
@ -21,7 +20,6 @@ import javax.persistence.ManyToMany;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import se.su.dsv.scipro.dataproviders.SortableField;
import se.su.dsv.scipro.match.dataobject.Keywords;
/**
@ -125,6 +123,15 @@ public class Employee extends ProjectTeamMember {
public Set<ResearchArea> getResearchAreas() {
return researchAreas;
}
public Set<ResearchArea> getActiveResearchAreas() {
Set<ResearchArea> activeAreas = new HashSet<ResearchArea>();
for(ResearchArea area : getResearchAreas()){
if(!area.isDeleted())
activeAreas.add(area);
}
return activeAreas;
}
private static final long serialVersionUID = -2570983581219033271L;
@Embeddable

@ -9,6 +9,7 @@ import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;
@ -45,7 +46,7 @@ public abstract class Idea extends DomainObject {
@Embedded
private Watson watson = new Watson();
@ManyToMany
@ManyToMany(fetch=FetchType.EAGER)
private Set<Keyword> keywords = new HashSet<Keyword>();
@OneToOne

@ -40,7 +40,7 @@ public class ProjectIdeaStartPage extends AbstractProjectIdeaPage {
dialog.setModal(true);
dialog.setAutoOpen(false);
dialog.setWidth(500);
dialog.setHeight(400);
dialog.setHeight(500);
dialog.add(new EmptyPanel("dialogPanel"));
add(dialog);
}

@ -19,6 +19,14 @@
<div class="append-bottom"><b>Description:</b><br />
<span wicket:id="description"></span>
</div>
<div class="append-bottom"><b>Research area:</b><br />
<span wicket:id="noAreaLabel"></span>
<span wicket:id="researchAreas"><span wicket:id="areaName"></span><br /></span>
</div>
<div class="append-bottom"><b>Keywords:</b><br />
<span wicket:id="noKeysLabel"></span>
<span wicket:id="keywords"><span wicket:id="keyName"></span><br /></span>
</div>
<div>
<wicket:enclosure child="partnerPanel">
<b>Partner:</b><br />

@ -1,32 +1,41 @@
package se.su.dsv.scipro.project.panels;
import java.util.ArrayList;
import java.util.Set;
import java.util.TreeSet;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.data.dataobjects.Employee;
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
import se.su.dsv.scipro.data.dataobjects.ResearchArea;
import se.su.dsv.scipro.data.dataobjects.Student;
import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.match.dataobject.Keyword;
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
import se.su.dsv.scipro.reusable.AddRemoveStudentsPanel;
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
import se.su.dsv.scipro.springdata.services.SupervisorService;
import se.su.dsv.scipro.util.JavascriptEventConfirmation;
public class AcceptIdeaDialogPanel extends Panel {
@SpringBean
private SupervisorIdeaService ideaService;
@SpringBean
private SupervisorService supervisorService;
public AcceptIdeaDialogPanel(String id, IModel<SupervisorIdea> model, final User creator) {
public AcceptIdeaDialogPanel(String id, IModel<SupervisorIdea> model, final User mainAuthor) {
super(id, model);
add(new AcceptIdeaForm("form", model, creator));
add(new AcceptIdeaForm("form", model, mainAuthor));
}
private static final long serialVersionUID = 29731924490786784L;
@ -36,14 +45,49 @@ public class AcceptIdeaDialogPanel extends Panel {
private static final long serialVersionUID = -9118352523380756043L;
private AddRemoveStudentsPanel partnerPanel;
public AcceptIdeaForm(String id, final IModel<SupervisorIdea> model, final User creator) {
public AcceptIdeaForm(String id, final IModel<SupervisorIdea> model, final User mainAuthor) {
super(id, model);
Employee ideaCreator = supervisorService.findOne(model.getObject().getCreator().getId());
add(new Label("level", model.getObject().getProjectClass().getName()));
add(new Label("reqs", model.getObject().getRequirements()));
add(new Label("title", model.getObject().getTitle()));
add(new Label("description", model.getObject().getDescription()));
addResearchAreas(ideaCreator);
addKeywords(model);
addPartnerPanel(model);
addButton(model, creator);
addButton(model, mainAuthor);
}
private void addResearchAreas(Employee ideaCreator) {
final Set<ResearchArea> areas = ideaCreator.getActiveResearchAreas();
ListView<ResearchArea> areaList = new ListView<ResearchArea>("researchAreas", new ArrayList<ResearchArea>(areas)) {
private static final long serialVersionUID = 1745649109195334927L;
@Override
protected void populateItem(ListItem<ResearchArea> item) {
item.add(new Label("areaName", item.getModelObject().getTitle()));
}
};
add(new Label("noAreaLabel","No research area available").setVisible(areas.isEmpty()));
add(areaList);
}
private void addKeywords(IModel<SupervisorIdea> model) {
final Set<Keyword> keywords = model.getObject().getKeywords();
ListView<Keyword> keyList = new ListView<Keyword>("keywords", new ArrayList<Keyword>(keywords)) {
private static final long serialVersionUID = 470796140309547562L;
@Override
protected void populateItem(ListItem<Keyword> item) {
item.add(new Label("keyName", item.getModelObject().getKeyword()));
}
};
add(new Label("noKeysLabel", "No keywords available").setVisible(keywords.isEmpty()));
add(keyList);
}
private void addPartnerPanel(IModel<SupervisorIdea> model) {
@ -59,7 +103,7 @@ public class AcceptIdeaDialogPanel extends Panel {
add(partnerPanel);
}
private void addButton(final IModel<SupervisorIdea> model, final User creator) {
private void addButton(final IModel<SupervisorIdea> model, final User mainAuthor) {
Button button = new Button("selectButton") {
private static final long serialVersionUID = 8805671593150004137L;
@ -67,7 +111,7 @@ public class AcceptIdeaDialogPanel extends Panel {
@Override
public void onSubmit() {
System.out.println(partnerPanel.getStudentSet());
if(ideaService.acceptIdea(model, creator, partnerPanel.getStudentSet())){
if(ideaService.acceptIdea(model, mainAuthor, partnerPanel.getStudentSet())){
System.out.println("COOL");
} else {
System.out.println("ERROR");

@ -2,7 +2,6 @@ package se.su.dsv.scipro.springdata.serviceimpls;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
import javax.annotation.Resource;
@ -21,7 +20,6 @@ import se.su.dsv.scipro.data.dataobjects.Employee;
import se.su.dsv.scipro.data.dataobjects.Student;
import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus;
import se.su.dsv.scipro.match.dataobject.Keyword;
import se.su.dsv.scipro.match.dataobject.QSupervisorIdea;
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
import se.su.dsv.scipro.springdata.repos.SupervisorIdeaRepo;
@ -76,13 +74,13 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
@Override
@Transactional ( readOnly = false )
public boolean acceptIdea(IModel<SupervisorIdea> model, User creator,
public boolean acceptIdea(IModel<SupervisorIdea> model, User mainAuthor,
SortedSet<Student> studentSet) {
if(studentSet.size()> 1){
return false;
} else {
SupervisorIdea idea = supervisorIdeaRepo.findOne(model.getObject().getId());
Student author = studentService.findByUser(creator);
Student author = studentService.findByUser(mainAuthor);
idea.addAuthor(studentSet.first());
idea.addAuthor(author);
idea.setIdeaStatus(IdeaStatus.TAKEN);

@ -1,7 +1,6 @@
package se.su.dsv.scipro.springdata.services;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
import org.apache.wicket.model.IModel;
@ -12,7 +11,6 @@ import se.su.dsv.scipro.data.dataobjects.Employee;
import se.su.dsv.scipro.data.dataobjects.Student;
import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus;
import se.su.dsv.scipro.match.dataobject.Keyword;
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
public interface SupervisorIdeaService extends GenericService<SupervisorIdea, Long>, QueryService<SupervisorIdea, Long> {
@ -25,7 +23,7 @@ public interface SupervisorIdeaService extends GenericService<SupervisorIdea, Lo
void saveSupervisorCreatedIdea(IModel<SupervisorIdea> model, Employee creator, SortedSet<Student> students);
void deleteWaitingIdea(IModel<SupervisorIdea> model);
boolean acceptIdea(IModel<SupervisorIdea> model, User creator, SortedSet<Student> sortedSet);
boolean acceptIdea(IModel<SupervisorIdea> model, User mainAuthor, SortedSet<Student> sortedSet);
boolean hasUnconfirmedIdea(User authorUser);
boolean isIdeaEditable(IModel<SupervisorIdea> model, User currentUser);
}