implemented sorting Employees based on keyword counts for the Regular and Area columns in the Statistics panel.

This commit is contained in:
Tom Vahlman 2012-04-03 17:04:01 +02:00
parent f0c09fd74f
commit d6b745c7b6
2 changed files with 27 additions and 7 deletions
src/main/java/se/su/dsv/scipro/admin/panels/match

@ -19,7 +19,9 @@
<thead>
<tr>
<th class="rounded-left-top"><a href="#" wicket:id="nameSortLink">Name</a></th>
<th>Research Areas</th>
<th class="rounded-right-top">
<a href="#" wicket:id="numberOfAreasSortLink">Research Areas</a>
</th>
<th class="rounded-right-top">
<a href="#" wicket:id="numberOfRegularsSortLink">Regular keywords</a>
</th>

@ -24,6 +24,7 @@ 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.dataobject.Keyword;
import se.su.dsv.scipro.match.dataobject.KeywordType;
import se.su.dsv.scipro.springdata.services.SupervisorService;
public class AdminSupervisorKeywordPanel extends Panel {
@ -73,6 +74,7 @@ if(!supervisorName.toString().isEmpty()) {
orderBy__.append(orderBy);
}
private List<Employee> addEmployeesToList(final StringBuffer supervisorName, List<Employee> employeeList) {
List<Employee> employeeListName = new ArrayList<Employee>();
for(Employee employee : employeeList) {
@ -87,14 +89,15 @@ if(!supervisorName.toString().isEmpty()) {
}
private List<Employee> sortEmployeeList(final StringBuffer sortDirection, final StringBuffer orderBy, List<Employee> employeeList) {
private List<Employee> sortEmployeeList(final StringBuffer sortDirection, final StringBuffer orderBy, List<Employee> employeeList, final String keywordType) {
if(sortDirection.toString().equals("ASC")) {
Collections.sort(employeeList, new Comparator<Employee>() {
@Override
public int compare(Employee o1, Employee o2) {
if (o1.getKeywords().getAll().size() > o2.getKeywords().getAll().size()) {
if (o1.getKeywords().getFiltered(keywordType).size() > o2.getKeywords().getFiltered(keywordType).size()) {
return -1;
} else if (o2.getKeywords().getAll().size() > o1.getKeywords().getAll().size()) {
} else if (o2.getKeywords().getFiltered(keywordType).size() > o1.getKeywords().getFiltered(keywordType).size()) {
return 1;
} else {
return 0;
@ -105,9 +108,9 @@ if(!supervisorName.toString().isEmpty()) {
Collections.sort(employeeList, new Comparator<Employee>() {
@Override
public int compare(Employee o1, Employee o2) {
if (o1.getKeywords().getAll().size() > o2.getKeywords().getAll().size()) {
if (o1.getKeywords().getFiltered(keywordType).size() > o2.getKeywords().getFiltered(keywordType).size()) {
return 1;
} else if (o2.getKeywords().getAll().size() > o1.getKeywords().getAll().size()) {
} else if (o2.getKeywords().getFiltered(keywordType).size() > o1.getKeywords().getFiltered(keywordType).size()) {
return -1;
} else {
return 0;
@ -139,8 +142,11 @@ if(!supervisorName.toString().isEmpty()) {
employeeList.addAll(supervisorService.findAllEmployees(sorter));
if(orderBy.toString().equals("keywords.all.size")) {
employeeList = sortEmployeeList(sortDirection, orderBy, employeeList);
employeeList = sortEmployeeList(sortDirection, orderBy, employeeList, KeywordTypeDao.TYPE.REGULAR.toDbName());
} else if (orderBy.toString().equals("areas.all.size")) {
employeeList = sortEmployeeList(sortDirection, orderBy, employeeList, KeywordTypeDao.TYPE.RESEARCH_AREA.toDbName());
}
if(supervisorName.toString().isEmpty()) {
return employeeList;
}
@ -189,6 +195,18 @@ if(!supervisorName.toString().isEmpty()) {
};
tableContainer.add(nameSortLink);
final AjaxLink<Void> numberOfAreasSortLink = new AjaxLink<Void>("numberOfAreasSortLink") {
private static final long serialVersionUID = 5809993580126828318L;
@Override
public void onClick(AjaxRequestTarget target) {
getSortOrder(sortDirection, orderBy, "areas.all.size", supervisorName);
target.addComponent(tableContainer);
}
};
tableContainer.add(numberOfAreasSortLink);
final AjaxLink<Void> numberOfRegularsSortLink = new AjaxLink<Void>("numberOfRegularsSortLink") {
private static final long serialVersionUID = 5809993580126828318L;