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