The EmployeeAutoComplete should be used for the search term userName <email>.

This commit is contained in:
Tom Vahlman 2012-03-27 23:17:44 +02:00
parent e658de0ed5
commit 0c346f70a2
2 changed files with 67 additions and 40 deletions
src/main/java/se/su/dsv/scipro/admin/panels

@ -23,7 +23,7 @@ import se.su.dsv.scipro.match.dao.interfaces.MatchDao;
import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao;
import se.su.dsv.scipro.match.dataobject.Match;
import se.su.dsv.scipro.match.dataobject.ProjectIdea;
import se.su.dsv.wicket.components.AutoCompleteObjectField;
import se.su.dsv.scipro.reusable.EmployeeAutoComplete;
public class ManualMatchPanel extends Panel {
@ -46,7 +46,7 @@ public class ManualMatchPanel extends Panel {
public ManualMatchPanel(String id, final IModel<Match> matchModel, final Component feedbackPanel, final Match.Status status) {
super(id);
Component localFeedback = new FeedbackPanel("localFeedback");
AutoCompleteObjectField<Employee, Long> autoCompleteObjectField =
EmployeeAutoComplete autoCompleteObjectField =
createDsvAutocompleteComponent(matchModel.getObject().getProjectIdea(), status);
autoCompleteObjectField.setOutputMarkupId(true);
saveButton = createSubmitLink(matchModel, feedbackPanel, status, localFeedback, autoCompleteObjectField);
@ -60,15 +60,20 @@ public class ManualMatchPanel extends Panel {
add(currentFragment);
}
private boolean testACInputString(AutoCompleteObjectField<Employee, Long> autocompleteReviewerField) {
return autocompleteReviewerField.getModelObject() == null ||
autocompleteReviewerField.getInput() == null ||
autocompleteReviewerField.getInput().isEmpty() ||
!autocompleteReviewerField.getInput().equals(autocompleteReviewerField.getModelObject().getNameAsString());
private String createNameAndEmail(Employee employee) {
return employee.getNameAsString() + " <" + employee.getEmailAsString()+">";
}
private boolean testACInputString(EmployeeAutoComplete autoCompleteObjectField) {
return autoCompleteObjectField.getModelObject() == null ||
autoCompleteObjectField.getInput() == null ||
autoCompleteObjectField.getInput().isEmpty() ||
!autoCompleteObjectField.getInput().equals(createNameAndEmail(autoCompleteObjectField.getModelObject()));
}
private ConfirmerAjaxSubmitLink createSubmitLink(final IModel<Match> matchModel, final Component feedbackPanel, final Match.Status status,
final Component localFeedback, final AutoCompleteObjectField<Employee, Long> autoCompleteObjectField) {
final Component localFeedback, final EmployeeAutoComplete autoCompleteObjectField) {
return new ConfirmerAjaxSubmitLink("saveButton") {
private static final long serialVersionUID = -1820883998549197409L;
@Override
@ -80,7 +85,7 @@ public class ManualMatchPanel extends Panel {
matchModel.getObject().setSupervisor(autoCompleteObjectField.getModelObject() != null ? autoCompleteObjectField.getModelObject():null);
matchModel.getObject().setStatus(status);
matchDao.changeStatus(SciProSession.get().getUser(), matchModel.getObject(), null);
Session.get().info(createMatchMessage(autoCompleteObjectField.getModelObject().getNameAsString(), matchModel.getObject().getProjectIdea().getTitle(), status));
Session.get().info(createMatchMessage(createNameAndEmail(autoCompleteObjectField.getModelObject()), matchModel.getObject().getProjectIdea().getTitle(), status));
setResponsePage(AdminManageProjectIdeaPage.class);
target.addComponent(feedbackPanel);
}
@ -101,7 +106,7 @@ public class ManualMatchPanel extends Panel {
}
private Fragment createButtonFragment(final Match.Status status, final Form<Employee> matchForm,
final AutoCompleteObjectField<Employee, Long> autoCompleteObjectField) {
final EmployeeAutoComplete autoCompleteObjectField) {
Fragment buttonFragment = new Fragment("main", "buttonFragment", this) {
private static final long serialVersionUID = 2699118307386334814L;
@ -146,7 +151,7 @@ public class ManualMatchPanel extends Panel {
}
private void clearInputAndAddToTarget(AjaxRequestTarget target, final AutoCompleteObjectField autoCompleteObjectField) {
private void clearInputAndAddToTarget(AjaxRequestTarget target, final EmployeeAutoComplete autoCompleteObjectField) {
//noinspection unchecked
autoCompleteObjectField.setModelObject(null);
autoCompleteObjectField.clearInput();
@ -163,7 +168,7 @@ public class ManualMatchPanel extends Panel {
alternateFragment = tempFragment;
}
private Fragment createMatchFragment(final Form<Employee> matchForm, Component localFeedback, final AutoCompleteObjectField<Employee, Long> autoCompleteObjectField ) {
private Fragment createMatchFragment(final Form<Employee> matchForm, Component localFeedback, final EmployeeAutoComplete autoCompleteObjectField) {
Fragment matchFragment = new Fragment("main", "matchFragment", this) {
private static final long serialVersionUID = -7770434904843562942L;
@ -191,8 +196,8 @@ public class ManualMatchPanel extends Panel {
return matchFragment;
}
AutoCompleteObjectField<Employee, Long> createDsvAutocompleteComponent(final ProjectIdea projectIdea, final Match.Status status) {
return new AutoCompleteObjectField<Employee, Long>("autoComplete", Employee.class) {
EmployeeAutoComplete createDsvAutocompleteComponent(final ProjectIdea projectIdea, final Match.Status status) {
return new EmployeeAutoComplete("autoComplete") {
private static final long serialVersionUID = 7734889540424308421L;
@Override
@ -228,16 +233,33 @@ public class ManualMatchPanel extends Panel {
}
@Override
public void onNewSelection(AjaxRequestTarget pTarget, Employee newSelection) {
public void action(AjaxRequestTarget pTarget, Employee newSelection) {
super.onNewSelection(pTarget, newSelection);
if (newSelection != null) {
if (pTarget != null) {
final String declineMessage = createDeclineMessage(newSelection.getUser(), projectIdea, status);
final String declineMessage = createDeclineMessage(newSelection, projectIdea, status);
if(declineMessage != null && !declineMessage.isEmpty()) {
saveButton.setMessageContentHTML(declineMessage);
pTarget.addComponent(saveButton);
} else {
saveButton.setMessageContentHTML(createConfirmationMessage(newSelection.getUser(), status));
saveButton.setMessageContentHTML(createConfirmationMessage(newSelection, status));
pTarget.addComponent(saveButton);
}
}
}
}
@Override
public void onNewSelection(AjaxRequestTarget pTarget, Employee newSelection) {
super.onNewSelection(pTarget, newSelection);
if (newSelection != null) {
if (pTarget != null) {
final String declineMessage = createDeclineMessage(newSelection, projectIdea, status);
if(declineMessage != null && !declineMessage.isEmpty()) {
saveButton.setMessageContentHTML(declineMessage);
pTarget.addComponent(saveButton);
} else {
saveButton.setMessageContentHTML(createConfirmationMessage(newSelection, status));
pTarget.addComponent(saveButton);
}
}
@ -249,12 +271,12 @@ public class ManualMatchPanel extends Panel {
/**
*
* This method is used to return a match message that the employee was matched or suggested to supervise the project idea .
* @param employeeName the name of the employee
* @param nameAndEmail the name and email of the employee
* @param projectIdeaTitle the title of the project idea
* @param status the status of the match
* @return String the match message
*/
private String createMatchMessage(final String employeeName, final String projectIdeaTitle, Match.Status status) {
private String createMatchMessage(final String nameAndEmail, final String projectIdeaTitle, Match.Status status) {
StringBuilder messageStr = new StringBuilder();
messageStr.append("The project idea ");
messageStr.append(projectIdeaTitle != null ? projectIdeaTitle : "");
@ -263,7 +285,7 @@ public class ManualMatchPanel extends Panel {
} else if (status.equals(Match.Status.PUBLISHED)) {
messageStr.append(" was suggested to ");
}
messageStr.append(employeeName != null ? employeeName : "" );
messageStr.append(nameAndEmail != null ? nameAndEmail : "" );
messageStr.append(".");
return messageStr.toString();
}
@ -276,13 +298,13 @@ public class ManualMatchPanel extends Panel {
* @param status the status of the match
* @return String the decline message
*/
private String createDeclineMessage(User supervisor, ProjectIdea projectIdea, Match.Status status) {
private String createDeclineMessage(Employee supervisor, ProjectIdea projectIdea, Match.Status status) {
if(supervisor != null && projectIdea != null) {
final String declineMessage = projectIdeaFacade.declineMessageWhenRejectedMatch(supervisor, projectIdea);
final String declineMessage = projectIdeaFacade.declineMessageWhenRejectedMatch(supervisor.getUser(), projectIdea);
StringBuilder stringBuilder = new StringBuilder();
if(declineMessage != null && !declineMessage.isEmpty()) {
stringBuilder.append("The project idea has already been rejected by ");
stringBuilder.append(supervisor.getFullName());
stringBuilder.append(createNameAndEmail(supervisor));
stringBuilder.append(". The decline message was: '");
stringBuilder.append(declineMessage);
if(status.equals(Match.Status.CONFIRMED)) {
@ -304,14 +326,14 @@ public class ManualMatchPanel extends Panel {
* @param status the status of the match
* @return String the confirmation message
*/
private String createConfirmationMessage(User supervisor, Match.Status status) {
private String createConfirmationMessage(Employee supervisor, Match.Status status) {
StringBuilder stringBuilder = new StringBuilder();
if(status.equals(Match.Status.CONFIRMED)) {
stringBuilder.append("Confirm that you want to match the project idea to ");
} else if (status.equals(Match.Status.PUBLISHED)) {
stringBuilder.append("Confirm that you want to suggest the project idea to ");
}
stringBuilder.append(supervisor.getFullName());
stringBuilder.append(createNameAndEmail(supervisor));
stringBuilder.append(".");
return stringBuilder.toString();
}

@ -16,7 +16,7 @@ import se.su.dsv.scipro.data.dataobjects.Employee;
import se.su.dsv.scipro.match.dao.interfaces.ProjectIdeaDao;
import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao;
import se.su.dsv.scipro.match.dataobject.ProjectIdea;
import se.su.dsv.wicket.components.AutoCompleteObjectField;
import se.su.dsv.scipro.reusable.EmployeeAutoComplete;
import java.util.Iterator;
@ -38,7 +38,7 @@ public class ManualSetReviewerPanel extends Panel {
super(id);
setOutputMarkupPlaceholderTag(true);
Component localFeedback = new FeedbackPanel("localFeedback");
AutoCompleteObjectField<Employee, Long> autocompleteReviewerField = createDsvAutocompleteComponent(projectIdeaModel.getObject());
EmployeeAutoComplete autocompleteReviewerField = createDsvAutocompleteComponent(projectIdeaModel.getObject());
autocompleteReviewerField.setOutputMarkupId(true);
saveButton = createSubmitLink(projectIdeaModel, feedbackPanel, localFeedback, autocompleteReviewerField);
saveButton.setOutputMarkupId(true);
@ -48,15 +48,20 @@ public class ManualSetReviewerPanel extends Panel {
add(currentFragment);
}
private boolean testACInputString(AutoCompleteObjectField<Employee, Long> autocompleteReviewerField) {
return autocompleteReviewerField.getModelObject() == null ||
autocompleteReviewerField.getInput() == null ||
autocompleteReviewerField.getInput().isEmpty() ||
!autocompleteReviewerField.getInput().equals(autocompleteReviewerField.getModelObject().getNameAsString());
private String createNameAndEmail(EmployeeAutoComplete autoCompleteObjectField) {
return autoCompleteObjectField.getModelObject().getNameAsString() + " <" + autoCompleteObjectField.getModelObject().getEmailAsString()+">";
}
private boolean testACInputString(EmployeeAutoComplete autoCompleteObjectField) {
return autoCompleteObjectField.getModelObject() == null ||
autoCompleteObjectField.getInput() == null ||
autoCompleteObjectField.getInput().isEmpty() ||
!autoCompleteObjectField.getInput().equals(createNameAndEmail(autoCompleteObjectField));
}
private ConfirmerAjaxSubmitLink createSubmitLink(final IModel<ProjectIdea> projectIdeaModel, final Component feedbackPanel,
final Component localFeedback, final AutoCompleteObjectField<Employee, Long> autocompleteReviewerField) {
final Component localFeedback, final EmployeeAutoComplete autocompleteReviewerField) {
return new ConfirmerAjaxSubmitLink("saveButton") {
private static final long serialVersionUID = -1852298712407811714L;
@ -70,7 +75,7 @@ public class ManualSetReviewerPanel extends Panel {
ProjectIdea projectIdea = projectIdeaModel.getObject();
projectIdea.setSuggestedReviewer(autocompleteReviewerField.getModelObject());
projectIdeaDao.save(projectIdea);
Session.get().info(getInfoMessage(projectIdea.getTitle(), autocompleteReviewerField.getModelObject().getNameAsString()));
Session.get().info(getInfoMessage(projectIdea.getTitle(), createNameAndEmail(autocompleteReviewerField)));
setResponsePage(AdminManageProjectIdeaPage.class);
target.addComponent(feedbackPanel);
}
@ -93,7 +98,7 @@ public class ManualSetReviewerPanel extends Panel {
private Fragment createButtonFragment(final Form<Employee> reviewerForm, final AutoCompleteObjectField<Employee, Long> autocompleteReviewerField) {
private Fragment createButtonFragment(final Form<Employee> reviewerForm, final EmployeeAutoComplete autocompleteReviewerField) {
Fragment buttonFragment = new Fragment("main", "buttonFragment", this) {
private static final long serialVersionUID = 2383077895140299047L;
@ -115,7 +120,7 @@ public class ManualSetReviewerPanel extends Panel {
return buttonFragment;
}
private void clearInputAndAddToTarget(AjaxRequestTarget target, final AutoCompleteObjectField autoCompleteObjectField) {
private void clearInputAndAddToTarget(AjaxRequestTarget target, final EmployeeAutoComplete autoCompleteObjectField) {
//noinspection unchecked
autoCompleteObjectField.setModelObject(null);
autoCompleteObjectField.clearInput();
@ -125,7 +130,7 @@ public class ManualSetReviewerPanel extends Panel {
target.addComponent(saveButton);
}
private Fragment createReviewerFragment(final Form<Employee> reviewerForm, Component localFeedback, final AutoCompleteObjectField<Employee, Long> autocompleteReviewerField) {
private Fragment createReviewerFragment(final Form<Employee> reviewerForm, Component localFeedback, final EmployeeAutoComplete autocompleteReviewerField) {
Fragment reviewerFragment = new Fragment("main", "reviewerFragment", this) {
private static final long serialVersionUID = -1831632235479216987L;
@ -156,8 +161,8 @@ public class ManualSetReviewerPanel extends Panel {
return reviewerFragment;
}
AutoCompleteObjectField<Employee, Long> createDsvAutocompleteComponent(final ProjectIdea projectIdea) {
return new AutoCompleteObjectField<Employee, Long>("reviewerTextField", Employee.class) {
EmployeeAutoComplete createDsvAutocompleteComponent(final ProjectIdea projectIdea) {
return new EmployeeAutoComplete("reviewerTextField") {
private static final long serialVersionUID = 8639430940925886127L;
@Override
@ -193,7 +198,7 @@ public class ManualSetReviewerPanel extends Panel {
}
@Override
public void onNewSelection(AjaxRequestTarget pTarget, Employee newSelection) {
public void action(AjaxRequestTarget pTarget, Employee newSelection) {
super.onNewSelection(pTarget, newSelection);
if (newSelection != null) {
if (pTarget != null) {