git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@230 73ecded7-942e-4092-bab0-0e58ef0ee984
This commit is contained in:
joha-asc 2011-02-23 08:53:00 +00:00
parent 636f26335f
commit 5b3713ca48
2 changed files with 469 additions and 59 deletions
src/main/java/se/su/dsv/scipro/message/pages

@ -7,21 +7,61 @@
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
</head>
<body>
<form wicket:id="messageForm">
<div wicket:id=projectFinder></div>
<div/>
<!-- <input type="text" wicket:id="userSearchText" />-->
<!-- <select wicket:id="selectedProjectList" size="10">-->
<!-- <option>Adam Adamsson (aaa@email)</option>-->
<!-- <option>Nils Nilsson (nils@epost)</option>-->
<!-- </select>-->
<!-- <div/>-->
Message:
<br />
<textarea wicket:id="textMessage" ></textarea>
<div/>
<input type="submit" wicket:id="submitButton" />
</form>
<p/>
<form wicket:id="supervisorMessageForm">
<div wicket:id=projectFinder></div>
<div/>
<!-- <input type="text" wicket:id="userSearchText" />-->
<!-- <select wicket:id="selectedProjectList" size="10">-->
<!-- <option>Adam Adamsson (aaa@email)</option>-->
<!-- <option>Nils Nilsson (nils@epost)</option>-->
<!-- </select>-->
<!-- <div/>-->
Message:
<br />
<textarea wicket:id="textMessage" ></textarea>
<div/>
<input type="submit" wicket:id="submitSupervisorButton" />
</form>
<p/>
<form wicket:id="privateMessageForm">
<div wicket:id=userFinder></div>
<div/>
<!-- <input type="text" wicket:id="userSearchText" />-->
<!-- <select wicket:id="selectedUserList" size="10">-->
<!-- <option>Adam Adamsson (aaa@email)</option>-->
<!-- <option>Nils Nilsson (nils@epost)</option>-->
<!-- </select>-->
<!-- <div/>-->
Title:
<br />
<input type="text" wicket:id="title"/>
<div/>
Message:
<br />
<textarea wicket:id="textMessage" ></textarea>
<div/>
<input type="submit" wicket:id="submitButton" />
</form>
<div wicket:id="sentPrivateMessagePanel""></div>
<div wicket:id="messagePanel""></div>
<div wicket:id="supervisorMessagePanel""></div>
<div wicket:id="privateMessagePanel""></div>
</body>
</html>

@ -3,18 +3,34 @@
*/
package se.su.dsv.scipro.message.pages;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.apache.wicket.PageParameters;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.form.ListMultipleChoice;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.util.ListModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.basepages.PublicPage;
import se.su.dsv.scipro.components.autocomplete.AutoCompletionChoicesProvider;
import se.su.dsv.scipro.components.autocomplete.MultiObjectAutoCompleteBuilder;
import se.su.dsv.scipro.components.autocomplete.MultiObjectAutoCompleteField;
import se.su.dsv.scipro.components.autocomplete.MultiObjectAutoCompleteObjectConverter;
import se.su.dsv.scipro.components.autocomplete.MultiObjectAutoCompleteRenderer;
import se.su.dsv.scipro.data.dao.interfaces.BoardMessageDao;
import se.su.dsv.scipro.data.dao.interfaces.MessageBoardDao;
import se.su.dsv.scipro.data.dao.interfaces.PrivateMessageDao;
@ -28,18 +44,21 @@ import se.su.dsv.scipro.data.dataobjects.MessageBoard;
import se.su.dsv.scipro.data.dataobjects.PrivateMessage;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.Recipient;
import se.su.dsv.scipro.data.dataobjects.SupervisorBoardMessage;
import se.su.dsv.scipro.data.dataobjects.SupervisorMessageBoard;
import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.data.enums.ProjectStatus;
import se.su.dsv.scipro.message.models.MessageModel;
import se.su.dsv.scipro.message.panels.MessagePanel;
import se.su.dsv.scipro.message.panels.PrivateMessagePanel;
import se.su.dsv.scipro.message.panels.SentPrivateMessagePanel;
import se.su.dsv.scipro.message.panels.SupervisorMessageBoardPanel;
/**
* @author Johan Aschan - aschan@dsv.su.se
*
*
*/
public class MessagePage extends PublicPage{
public class MessagePage extends PublicPage {
@SpringBean
private MessageBoardDao messageBoardDao;
@SpringBean
@ -56,84 +75,435 @@ public class MessagePage extends PublicPage{
private PrivateMessageDao privateMessageDao;
@SpringBean
private RecipientDao recipientDao;
private Collection<User> selectedUserList = new ArrayList<User>();
private Collection<Project> selectedProjectList = new ArrayList<Project>();
private MessagePanel messagePanel;
private PrivateMessagePanel privateMessagePanel;
private SupervisorMessageBoardPanel supervisorMessageBoardPanel;
private SentPrivateMessagePanel sentPrivateMessagePanel;
private MessageBoard mb;
public MessagePage(final PageParameters pp){
super(pp);
User user = userDao.load(1L);
List<Project> project = projectDao.getProjectsByParticipant(user, ProjectStatus.ACTIVE);
mb = project.get(0).getMessageBoard();
messagePanel = new MessagePanel("messagePanel", mb);
private User user;
public MessagePage(final PageParameters pp) {
super(pp);
user = userDao.load(1L);
// SupervisorMessageBoard smb = new SupervisorMessageBoard();
// smb.setTitle("Supervisors Projektwall");
// smb.setProject(projectDao.load(1L));
// supervisorMessageBoardDao.save(smb);
List<Project> project = projectDao.getProjectsByParticipant(user, null);
messagePanel = new MessagePanel("messagePanel", project.get(0));
messagePanel.setOutputMarkupId(true);
add(messagePanel);
sentPrivateMessagePanel = new SentPrivateMessagePanel("sentPrivateMessagePanel", userDao.load(3L));
sentPrivateMessagePanel.setOutputMarkupId(true);
add(sentPrivateMessagePanel);
privateMessagePanel = new PrivateMessagePanel("privateMessagePanel", user);
privateMessagePanel.setOutputMarkupId(true);
add(privateMessagePanel);
supervisorMessageBoardPanel = new SupervisorMessageBoardPanel("supervisorMessagePanel", project.get(0));
supervisorMessageBoardPanel.setOutputMarkupId(true);
add(supervisorMessageBoardPanel);
add(new MessageForm("messageForm"));
add(new PrivateMessageForm("privateMessageForm"));
add(new SupervisorMessageForm("supervisorMessageForm"));
}
public class MessageForm extends Form<MessageModel> {
public MessageForm(String name) {
super(name, new CompoundPropertyModel<MessageModel>(
new MessageModel()));
AutoCompletionChoicesProvider<Project> choiceProvider = new AutoCompletionChoicesProvider<Project>() {
@Override
public Iterator<Project> getChoices(String input) {
// TODO Auto-generated method stub
return projectDao.searchProjectByTitle(input).iterator();
}
};
MultiObjectAutoCompleteBuilder<Project, Long> moac = new MultiObjectAutoCompleteBuilder<Project, Long>(
choiceProvider);
moac.idType(Long.class);
moac.autoCompleteRenderer(new MultiObjectAutoCompleteRenderer<Project>() {
public String getTextValue(Project p) {
return p.getTitle();
}
protected String getIdValue(User u) {
return u.getId().toString();
}
});
moac.objectConverter(new MultiObjectAutoCompleteObjectConverter<Long, Project>() {
@Override
public Project convertToObject(Long id) {
return projectDao.load(id);
}
});
MultiObjectAutoCompleteField<Project, Long> moacf = moac.build(
"projectFinder");
add(moacf);
// final TextField<String> userSearchText = new TextField<String>(
// "userSearchText");
// add(userSearchText);
//
// final ListMultipleChoice<Project> userSelectList = new ListMultipleChoice<Project>(
// "selectedProjectList", new ListModel<Project>(
// new ArrayList<Project>()),
// new ChoiceRenderer<Project>("title")) {
// private static final long serialVersionUID = -7117603450416845711L;
//
// @Override
// protected CharSequence getDefaultChoice(Object selected) {
// return "";
// }
// };
//
// OnChangeAjaxBehavior userSelectBehaviour = new OnChangeAjaxBehavior() {
//
// private static final long serialVersionUID = 3412906970812300312L;
//
// @Override
// protected void onUpdate(AjaxRequestTarget target) {
// selectedProjectList = userSelectList.getModelObject();
// }
// };
// userSelectList.add(userSelectBehaviour);
//
// userSelectList.setOutputMarkupId(true);
// add(userSelectList);
//
// OnChangeAjaxBehavior userSearchTextBehaviour = new OnChangeAjaxBehavior() {
//
// private static final long serialVersionUID = -3243439315735164519L;
//
// @Override
// protected void onUpdate(AjaxRequestTarget target) {
// String input = userSearchText
// .getDefaultModelObjectAsString();
// if (input.length() >= 3) {
// List<Project> matches = projectDao
// .searchProjectByTitle(input);
// userSelectList.setChoices(new ListModel<Project>(
// matches));
//
// } else {
// userSelectList.setChoices(new ArrayList<Project>());
// }
//
// if (target != null) {
// target.addComponent(userSelectList);
// }
// }
// };
//
// userSearchText.add(userSearchTextBehaviour);
add(new TextArea<String>("textMessage"));
add(new Button("submitButton", new Model<String>("Send Board Message")));
add(new Button("submitButton", new Model<String>(
"Send Board Message")));
}
@Override
protected void onSubmit() {
mb = messageBoardDao.reLoad(mb);
MessageModel messModel = getModelObject();
BoardMessage bm = new BoardMessage();
bm.setFromUser(userDao.load(2L));
bm.setMessage(messModel.getTextMessage());
bm = boardMessageDao.save(bm);
List<BoardMessage> bmList = mb.getBoardMessageList();
bmList.add(bm);
mb.setBoardMessageList(bmList);
mb = messageBoardDao.save(mb);
MessagePanel mp = new MessagePanel("messagePanel", mb);
mp.setMarkupId(messagePanel.getMarkupId());
messagePanel.replaceWith(mp);
messagePanel = mp;
List<Project> projectList = getModelObject().getProjectFinder();
for (Project project : projectList) {
project = projectDao.reLoad(project);
MessageBoard toMb = project.getMessageBoard();
MessageModel messModel = getModelObject();
BoardMessage bm = new BoardMessage();
bm.setFromUser(userDao.load(2L));
bm.setMessage(messModel.getTextMessage());
bm = boardMessageDao.save(bm);
List<BoardMessage> bmList = toMb.getBoardMessageList();
bmList.add(bm);
toMb.setBoardMessageList(bmList);
toMb = messageBoardDao.save(toMb);
mb = messageBoardDao.reLoad(mb);
MessagePanel mp = new MessagePanel("messagePanel", project);
mp.setMarkupId(messagePanel.getMarkupId());
messagePanel.replaceWith(mp);
messagePanel = mp;
}
}
}
public class SupervisorMessageForm extends Form<MessageModel> {
public SupervisorMessageForm(String name) {
super(name, new CompoundPropertyModel<MessageModel>(
new MessageModel()));
AutoCompletionChoicesProvider<Project> choiceProvider = new AutoCompletionChoicesProvider<Project>() {
@Override
public Iterator<Project> getChoices(String input) {
// TODO Auto-generated method stub
return projectDao.searchProjectByTitle(input).iterator();
}
};
MultiObjectAutoCompleteBuilder<Project, Long> moac = new MultiObjectAutoCompleteBuilder<Project, Long>(
choiceProvider);
moac.idType(Long.class);
moac.autoCompleteRenderer(new MultiObjectAutoCompleteRenderer<Project>() {
public String getTextValue(Project p) {
return p.getTitle();
}
protected String getIdValue(User u) {
return u.getId().toString();
}
});
moac.objectConverter(new MultiObjectAutoCompleteObjectConverter<Long, Project>() {
@Override
public Project convertToObject(Long id) {
return projectDao.load(id);
}
});
MultiObjectAutoCompleteField<Project, Long> moacf = moac.build(
"projectFinder");
add(moacf);
// final TextField<String> userSearchText = new TextField<String>(
// "userSearchText");
// add(userSearchText);
//
// final ListMultipleChoice<Project> userSelectList = new ListMultipleChoice<Project>(
// "selectedProjectList", new ListModel<Project>(
// new ArrayList<Project>()),
// new ChoiceRenderer<Project>("title")) {
// private static final long serialVersionUID = -7117603450416845711L;
//
// @Override
// protected CharSequence getDefaultChoice(Object selected) {
// return "";
// }
// };
//
// OnChangeAjaxBehavior userSelectBehaviour = new OnChangeAjaxBehavior() {
//
// private static final long serialVersionUID = 3412906970812300312L;
//
// @Override
// protected void onUpdate(AjaxRequestTarget target) {
// selectedProjectList = userSelectList.getModelObject();
// }
// };
// userSelectList.add(userSelectBehaviour);
//
// userSelectList.setOutputMarkupId(true);
// add(userSelectList);
//
// OnChangeAjaxBehavior userSearchTextBehaviour = new OnChangeAjaxBehavior() {
//
// private static final long serialVersionUID = -3243439315735164519L;
//
// @Override
// protected void onUpdate(AjaxRequestTarget target) {
// String input = userSearchText
// .getDefaultModelObjectAsString();
// if (input.length() >= 3) {
// List<Project> matches = projectDao
// .searchProjectByTitle(input);
// userSelectList.setChoices(new ListModel<Project>(
// matches));
//
// } else {
// userSelectList.setChoices(new ArrayList<Project>());
// }
//
// if (target != null) {
// target.addComponent(userSelectList);
// }
// }
// };
//
// userSearchText.add(userSearchTextBehaviour);
add(new TextArea<String>("textMessage"));
add(new AjaxButton("submitSupervisorButton", new Model<String>(
"Send Supervisor Board Message")){
@Override
protected void onSubmit(AjaxRequestTarget target,
Form<?> form) {
System.out.println("test");
List<Project> projectList = ((MessageModel) form.getModelObject()).getProjectFinder();
for (Project project : projectList) {
project = projectDao.reLoad(project);
SupervisorMessageBoard toMb = project.getSupervisorMessageBoard();
MessageModel messModel = (MessageModel) form.getModelObject();
SupervisorBoardMessage bm = new SupervisorBoardMessage();
bm.setFromUser(userDao.load(2L));
bm.setMessage(messModel.getTextMessage());
bm = supervisorBoardMessageDao.save(bm);
List<SupervisorBoardMessage> bmList = toMb.getSupervisorBoardMessageList();
bmList.add(bm);
toMb.setSupervisorBoardMessageList(bmList);
toMb = supervisorMessageBoardDao.save(toMb);
SupervisorMessageBoardPanel mp = new SupervisorMessageBoardPanel("supervisorMessagePanel", project);
mp.setMarkupId(supervisorMessageBoardPanel.getMarkupId());
supervisorMessageBoardPanel.replaceWith(mp);
supervisorMessageBoardPanel = mp;
}
}
});
}
}
public class PrivateMessageForm extends Form<MessageModel> {
public PrivateMessageForm(String name) {
super(name, new CompoundPropertyModel<MessageModel>(
new MessageModel()));
AutoCompletionChoicesProvider<User> choiceProvider = new AutoCompletionChoicesProvider<User>() {
@Override
public Iterator<User> getChoices(String input) {
// TODO Auto-generated method stub
return userDao.findUserQuery(input, 10).iterator();
}
};
MultiObjectAutoCompleteBuilder<User, Long> moac = new MultiObjectAutoCompleteBuilder<User, Long>(
choiceProvider);
moac.idType(Long.class);
moac.autoCompleteRenderer(new MultiObjectAutoCompleteRenderer<User>() {
public String getTextValue(User u) {
return u.getFirstName() + " " + u.getLastName();
}
protected String getIdValue(User u) {
return u.getId().toString();
}
});
moac.objectConverter(new MultiObjectAutoCompleteObjectConverter<Long, User>() {
@Override
public User convertToObject(Long id) {
return userDao.load(id);
}
});
MultiObjectAutoCompleteField<User, Long> moacf = moac.build(
"userFinder");
add(moacf);
final Button submitButton = new Button("submitButton", new Model<String>(
"Send Private Message"));
// final TextField<String> userSearchText = new TextField<String>(
// "userSearchText");
// add(userSearchText);
//
// IChoiceRenderer<User> choiceRenderer = new IChoiceRenderer<User>() {
//
// // Implement dispay here
// public Object getDisplayValue(User user) {
// return user.getFirstName() + " " + user.getLastName();
// }
//
// @Override
// public String getIdValue(User user, int arg1) {
// return user.getId().toString();
// }
//
// };
//
// final ListMultipleChoice<User> userSelectList = new ListMultipleChoice<User>(
// "selectedUserList", new ListModel<User>(
// new ArrayList<User>()), choiceRenderer) {
// private static final long serialVersionUID = -7117603450416845711L;
//
// @Override
// protected CharSequence getDefaultChoice(Object selected) {
// return "";
// }
// };
//
// OnChangeAjaxBehavior userSelectBehaviour = new OnChangeAjaxBehavior() {
//
// private static final long serialVersionUID = 3412906970812300312L;
//
// @Override
// protected void onUpdate(AjaxRequestTarget target) {
// selectedUserList = userSelectList.getModelObject();
// }
// };
// userSelectList.add(userSelectBehaviour);
//
// userSelectList.setOutputMarkupId(true);
// add(userSelectList);
//
// OnChangeAjaxBehavior userSearchTextBehaviour = new OnChangeAjaxBehavior() {
//
// private static final long serialVersionUID = -3243439315735164519L;
//
// @Override
// protected void onUpdate(AjaxRequestTarget target) {
// String input = userSearchText
// .getDefaultModelObjectAsString();
// if (input.length() >= 3) {
// List<User> matches = userDao.findUserQuery(input, 10);
// userSelectList.setChoices(new ListModel<User>(matches));
//
// } else {
// userSelectList.setChoices(new ArrayList<User>());
// }
//
// if (target != null) {
// target.addComponent(userSelectList);
// target.addComponent(submitButton);
// }
// }
// };
//
// userSearchText.add(userSearchTextBehaviour);
add(new TextField<String>("title"));
add(new TextArea<String>("textMessage"));
add(new Button("submitButton", new Model<String>("Send Private Message")));
add(submitButton);
}
@Override
protected void onSubmit() {
mb = messageBoardDao.reLoad(mb);
MessageModel messModel = getModelObject();
PrivateMessage pm = new PrivateMessage();
pm.setFromUser(userDao.load(3L));
pm.setMessage(messModel.getTextMessage());
pm.setTitle("Hi");
pm = privateMessageDao.save(pm);
Recipient rec = new Recipient();
rec.setToUser(userDao.load(1L));
rec.setPrivateMessage(pm);
rec.setDateRead(new Date());
rec = recipientDao.save(rec);
MessagePanel mp = new MessagePanel("messagePanel", mb);
mp.setMarkupId(messagePanel.getMarkupId());
messagePanel.replaceWith(mp);
messagePanel = mp;
List<User> users = getModelObject().getUserFinder();
if (users.size() > 0) {
mb = messageBoardDao.reLoad(mb);
MessageModel messModel = getModelObject();
PrivateMessage pm = new PrivateMessage();
pm.setFromUser(userDao.load(3L));
pm.setMessage(messModel.getTextMessage());
pm.setTitle(messModel.getTitle());
pm = privateMessageDao.save(pm);
for (User selectedUser : users) {
Recipient rec = new Recipient();
selectedUser = userDao.reLoad(selectedUser);
rec.setToUser(selectedUser);
rec.setPrivateMessage(pm);
rec = recipientDao.save(rec);
}
PrivateMessagePanel pmp = new PrivateMessagePanel("privateMessagePanel", user);
pmp.setMarkupId(privateMessagePanel.getMarkupId());
privateMessagePanel.replaceWith(pmp);
privateMessagePanel = pmp;
SentPrivateMessagePanel spmp = new SentPrivateMessagePanel("sentPrivateMessagePanel", userDao.load(3L));
spmp.setMarkupId(sentPrivateMessagePanel.getMarkupId());
sentPrivateMessagePanel.replaceWith(spmp);
sentPrivateMessagePanel = spmp;
}
}
}
}