implemented sorting Employees based on keyword counts for the Regular and Area columns in the Statistics panel.
This commit is contained in:
parent
f0c09fd74f
commit
d6b745c7b6
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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user