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>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="rounded-left-top"><a href="#" wicket:id="nameSortLink">Name</a></th>
|
<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">
|
<th class="rounded-right-top">
|
||||||
<a href="#" wicket:id="numberOfRegularsSortLink">Regular keywords</a>
|
<a href="#" wicket:id="numberOfRegularsSortLink">Regular keywords</a>
|
||||||
</th>
|
</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.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.dataobject.Keyword;
|
import se.su.dsv.scipro.match.dataobject.Keyword;
|
||||||
|
import se.su.dsv.scipro.match.dataobject.KeywordType;
|
||||||
import se.su.dsv.scipro.springdata.services.SupervisorService;
|
import se.su.dsv.scipro.springdata.services.SupervisorService;
|
||||||
|
|
||||||
public class AdminSupervisorKeywordPanel extends Panel {
|
public class AdminSupervisorKeywordPanel extends Panel {
|
||||||
@ -73,6 +74,7 @@ if(!supervisorName.toString().isEmpty()) {
|
|||||||
orderBy__.append(orderBy);
|
orderBy__.append(orderBy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private List<Employee> addEmployeesToList(final StringBuffer supervisorName, List<Employee> employeeList) {
|
private List<Employee> addEmployeesToList(final StringBuffer supervisorName, List<Employee> employeeList) {
|
||||||
List<Employee> employeeListName = new ArrayList<Employee>();
|
List<Employee> employeeListName = new ArrayList<Employee>();
|
||||||
for(Employee employee : employeeList) {
|
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")) {
|
if(sortDirection.toString().equals("ASC")) {
|
||||||
Collections.sort(employeeList, new Comparator<Employee>() {
|
Collections.sort(employeeList, new Comparator<Employee>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(Employee o1, Employee o2) {
|
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;
|
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;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
@ -105,9 +108,9 @@ if(!supervisorName.toString().isEmpty()) {
|
|||||||
Collections.sort(employeeList, new Comparator<Employee>() {
|
Collections.sort(employeeList, new Comparator<Employee>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(Employee o1, Employee o2) {
|
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;
|
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;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
@ -139,8 +142,11 @@ if(!supervisorName.toString().isEmpty()) {
|
|||||||
employeeList.addAll(supervisorService.findAllEmployees(sorter));
|
employeeList.addAll(supervisorService.findAllEmployees(sorter));
|
||||||
|
|
||||||
if(orderBy.toString().equals("keywords.all.size")) {
|
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()) {
|
if(supervisorName.toString().isEmpty()) {
|
||||||
return employeeList;
|
return employeeList;
|
||||||
}
|
}
|
||||||
@ -189,6 +195,18 @@ if(!supervisorName.toString().isEmpty()) {
|
|||||||
};
|
};
|
||||||
tableContainer.add(nameSortLink);
|
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") {
|
final AjaxLink<Void> numberOfRegularsSortLink = new AjaxLink<Void>("numberOfRegularsSortLink") {
|
||||||
|
|
||||||
private static final long serialVersionUID = 5809993580126828318L;
|
private static final long serialVersionUID = 5809993580126828318L;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user