package com.ibm.cxl.action;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import jquery.datatables.model.Company;
import jquery.datatables.model.DataRepository;
public class RptConfig01Action extends ActionSupport {
private static final long serialVersionUID = -7160474110317441632L;
private Integer draw=0, recordsTotal=1, recordsFiltered = 0, length = 0, start=0;
private List<Company> data=new ArrayList<Company>();
public Integer getDraw() {
return draw;
}
public void setDraw(Integer draw) {
this.draw = draw;
}
public Integer getRecordsTotal() {
return recordsTotal;
}
public void setRecordsTotal(Integer recordsTotal) {
this.recordsTotal = recordsTotal;
}
public Integer getRecordsFiltered() {
return recordsFiltered;
}
public void setRecordsFiltered(Integer recordsFiltered) {
this.recordsFiltered = recordsFiltered;
}
public Integer getLength() {
return length;
}
public void setLength(Integer length) {
this.length = length;
}
public Integer getStart() {
return start;
}
public void setStart(Integer start) {
this.start = start;
}
@SuppressWarnings("unchecked")
public String execute() throws Exception {
recordsTotal=DataRepository.GetCompanies().size();
recordsFiltered = recordsTotal;
//print all parameters from the action context
Map<String, Object> map = ActionContext.getContext().getParameters();
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
System.out.println("key:"+ key +" value: " + Arrays.toString((String[])value));
}
final int sortColumnIndex = Integer.parseInt(((String[]) map.get("order[0][column]"))[0]);
final int sortDirection = ((String[]) map.get("order[0][dir]"))[0].equals("asc") ? -1 : 1;
for(Company c : DataRepository.GetCompanies()){
data.add(c);
}
Collections.sort(data, new Comparator<Company>(){
@Override
public int compare(Company c1, Company c2) {
switch(sortColumnIndex){
case 0:
return c1.getName().compareTo(c2.getName()) * sortDirection;
case 1:
return c1.getAddress().compareTo(c2.getAddress()) * sortDirection;
case 2:
return c1.getTown().compareTo(c2.getTown()) * sortDirection;
}
return 0;
}
});
if(recordsTotal< start + length) {
data = data.subList(start, length);
} else {
data = data.subList(start, start + length);
}
return SUCCESS;
}
public List<Company> getData() {
return data;
}
public void setData(List<Company> data) {
this.data = data;
}
}