now displaying areas and keywords when student wants to accept an idea created by supervisor
This commit is contained in:
parent
af00f4ffca
commit
8088450860
src/main/java/se/su/dsv/scipro
data/dataobjects
match/dataobject
project
springdata
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user