Sorting on name now works in the statistics panel (for the spring data api).

This commit is contained in:
Tom Vahlman 2012-04-02 15:41:24 +02:00
parent b9abbdabfe
commit a2eb60184b

@ -17,11 +17,9 @@ import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.spring.injection.annot.SpringBean;
import org.odlabs.wiquery.ui.dialog.Dialog; import org.odlabs.wiquery.ui.dialog.Dialog;
import se.su.dsv.scipro.data.dao.interfaces.Dao.SortableParams.Sort;
import se.su.dsv.scipro.data.dataobjects.Employee; import se.su.dsv.scipro.data.dataobjects.Employee;
import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao; 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.SupervisorDao;
import se.su.dsv.scipro.match.dao.interfaces.SupervisorDaoParams;
import se.su.dsv.scipro.match.dataobject.Keyword; import se.su.dsv.scipro.match.dataobject.Keyword;
import se.su.dsv.scipro.springdata.services.SupervisorService; import se.su.dsv.scipro.springdata.services.SupervisorService;
@ -40,18 +38,12 @@ public class AdminSupervisorKeywordPanel extends Panel {
Dialog dialog = new Dialog("detailsDialog"); Dialog dialog = new Dialog("detailsDialog");
setUpDialog(dialog); setUpDialog(dialog);
WebMarkupContainer tableContainer = new WebMarkupContainer("table"); WebMarkupContainer tableContainer = new WebMarkupContainer("table");
SupervisorDaoParams params = new SupervisorDaoParams();
params.setSortOn("user.lastName", Sort.ASCENDING);
params.setSortOn("keywords.size()", Sort.ASCENDING);
TextField<String> supervisorField = new TextField<String>("supervisorField", new Model<String>()); TextField<String> supervisorField = new TextField<String>("supervisorField", new Model<String>());
setUpTable(dialog, tableContainer, params); StringBuffer supervisorName = new StringBuffer();
setUpFiltering(tableContainer, params, supervisorField); add(new FilterForm(tableContainer, supervisorField, supervisorName));
} setUpTable(dialog, tableContainer, supervisorName);
private void setUpFiltering(WebMarkupContainer tableContainer, SupervisorDaoParams params, TextField<String> supervisorField) { }
FilterForm form = new FilterForm(tableContainer, params, supervisorField);
add(form);
}
private void setUpDialog(Dialog dialog) { private void setUpDialog(Dialog dialog) {
dialog.setModal(true); dialog.setModal(true);
@ -63,32 +55,40 @@ public class AdminSupervisorKeywordPanel extends Panel {
add(dialog.setOutputMarkupId(true)); add(dialog.setOutputMarkupId(true));
} }
private org.springframework.data.domain.Sort getSortOrder(final StringBuffer nameSortDirection, final String orderBy) { private void getSortOrder(StringBuffer sortDirection, StringBuffer orderBy__, String orderBy, final StringBuffer supervisorName) {
org.springframework.data.domain.Sort sortOrder; if(!supervisorName.toString().isEmpty()) {
if(nameSortDirection.toString().equals("ASC")) { String addToSearch = "true";
sortOrder = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.DESC, orderBy); }
nameSortDirection.delete(0, nameSortDirection.length()-1); if (sortDirection.toString().isEmpty() || sortDirection.toString().equals("DESC")) {
nameSortDirection.append("DESC"); sortDirection.delete(0, sortDirection.length());
sortDirection.append("ASC");
} else { } else {
sortOrder = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.ASC, orderBy); sortDirection.delete(0, sortDirection.length());
nameSortDirection.delete(0, nameSortDirection.length()-1); sortDirection.append("DESC");
nameSortDirection.append("ASC");
} }
return sortOrder; orderBy__.delete(0, orderBy__.length());
orderBy__.append(orderBy);
} }
private void setUpTable(final Dialog dialog, final WebMarkupContainer tableContainer, final SupervisorDaoParams params) { private void setUpTable(final Dialog dialog, final WebMarkupContainer tableContainer, final StringBuffer supervisorName) {
final StringBuffer nameSortDirection = new StringBuffer(); final StringBuffer sortDirection = new StringBuffer();
nameSortDirection.append("ASC"); final StringBuffer orderBy = new StringBuffer();
final StringBuffer keywordsSortDirection = new StringBuffer();
keywordsSortDirection.append("ASC");
final ListView<Employee> dataView = new ListView<Employee>("supervisorList", new LoadableDetachableModel<List<Employee>>() { final ListView<Employee> dataView = new ListView<Employee>("supervisorList", new LoadableDetachableModel<List<Employee>>() {
private static final long serialVersionUID = -2395796971679213814L; private static final long serialVersionUID = -2395796971679213814L;
@Override @Override
protected List<Employee> load() { protected List<Employee> load() {
return supervisorService.findAllEmployees(new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.ASC, "user.lastName")); org.springframework.data.domain.Sort sorter;
if (sortDirection.toString().isEmpty()) {
sorter = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.ASC, "user.lastName");
}
else if (sortDirection.toString().equals("ASC")) {
sorter = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.ASC, orderBy.toString());
} else {
sorter = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.DESC, orderBy.toString());
}
return supervisorService.findAllEmployees(sorter);
} }
}) { }) {
@ -99,7 +99,6 @@ public class AdminSupervisorKeywordPanel extends Panel {
final Employee supervisor = item.getModelObject(); final Employee supervisor = item.getModelObject();
List<Keyword> areaKeywords = supervisor.getKeywords().getFiltered(KeywordTypeDao.TYPE.RESEARCH_AREA.toDbName()); List<Keyword> areaKeywords = supervisor.getKeywords().getFiltered(KeywordTypeDao.TYPE.RESEARCH_AREA.toDbName());
List<Keyword> regularKeywords = supervisor.getKeywords().getFiltered(KeywordTypeDao.TYPE.REGULAR.toDbName()); List<Keyword> regularKeywords = supervisor.getKeywords().getFiltered(KeywordTypeDao.TYPE.REGULAR.toDbName());
final AjaxLink<Void> detailsLink = new AjaxLink<Void>("detailsLink") { final AjaxLink<Void> detailsLink = new AjaxLink<Void>("detailsLink") {
private static final long serialVersionUID = 8902222410746133732L; private static final long serialVersionUID = 8902222410746133732L;
@ -116,7 +115,6 @@ public class AdminSupervisorKeywordPanel extends Panel {
}); });
dialog.open(target); dialog.open(target);
} }
}; };
detailsLink.add(new Label("supervisorName", supervisor.getNameAsString())); detailsLink.add(new Label("supervisorName", supervisor.getNameAsString()));
item.add(detailsLink); item.add(detailsLink);
@ -124,12 +122,13 @@ public class AdminSupervisorKeywordPanel extends Panel {
item.add(new Label("numberOfRegulars", "" + regularKeywords.size())); item.add(new Label("numberOfRegulars", "" + regularKeywords.size()));
} }
}; };
final AjaxLink<Void> nameSortLink = new AjaxLink<Void>("nameSortLink") { final AjaxLink<Void> nameSortLink = new AjaxLink<Void>("nameSortLink") {
private static final long serialVersionUID = -6459164267551936706L; private static final long serialVersionUID = -6459164267551936706L;
@Override @Override
public void onClick(AjaxRequestTarget target) { public void onClick(AjaxRequestTarget target) {
dataView.setDefaultModelObject(supervisorService.findAllEmployees(getSortOrder(nameSortDirection,"user.lastName"))); getSortOrder(sortDirection, orderBy, "user.lastName", supervisorName);
target.addComponent(tableContainer); target.addComponent(tableContainer);
} }
}; };
tableContainer.add(nameSortLink); tableContainer.add(nameSortLink);
@ -140,7 +139,7 @@ public class AdminSupervisorKeywordPanel extends Panel {
@Override @Override
public void onClick(AjaxRequestTarget target) { public void onClick(AjaxRequestTarget target) {
dataView.setDefaultModelObject(supervisorService.findAllEmployees(getSortOrder(keywordsSortDirection,"keywords.getCollection().size"))); getSortOrder(sortDirection, orderBy, "keywords.all.size()", supervisorName);
target.addComponent(tableContainer); target.addComponent(tableContainer);
} }
}; };
@ -153,7 +152,7 @@ public class AdminSupervisorKeywordPanel extends Panel {
private static final long serialVersionUID = 3488715734113880308L; private static final long serialVersionUID = 3488715734113880308L;
public FilterForm(final WebMarkupContainer tableContainer, final SupervisorDaoParams params, final TextField<String> supervisorField) { public FilterForm(final WebMarkupContainer tableContainer, final TextField<String> supervisorField, final StringBuffer supervisorName) {
super("filterForm"); super("filterForm");
AjaxButton filterButton = new AjaxButton("filterButton") { AjaxButton filterButton = new AjaxButton("filterButton") {
@ -161,7 +160,7 @@ public class AdminSupervisorKeywordPanel extends Panel {
@Override @Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) { protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
params.setNameLike(supervisorField.getModelObject()); supervisorName.append(supervisorField.getModelObject());
target.addComponent(tableContainer); target.addComponent(tableContainer);
} }
}; };