resource-sweeper-widget/src/main/java/org/gcube/portlets/admin/resourcesweeper/client/grids/CustomSorter.java

66 lines
1.9 KiB
Java

package org.gcube.portlets.admin.resourcesweeper.client.grids;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.store.Store;
import com.extjs.gxt.ui.client.store.StoreSorter;
import com.google.gwt.core.client.GWT;
public class CustomSorter extends StoreSorter<ModelData> {
/**
* need to recalculate the percentage as the returned value is not what the render returns
*/
@Override
public int compare(Store<ModelData> store, ModelData m1, ModelData m2, String property) {
if (property != null) {
if (property.equals("VirtualAvailable")) {
String s1 = m1.get(property);
String s2 = m2.get(property);
int val1 = Integer.parseInt(s1);
int val2 = Integer.parseInt(s2);
int tot1 = Integer.parseInt((String) m1.get("VirtualSize"));
int tot2 = Integer.parseInt((String) m2.get("VirtualSize"));
int percentage1 = (val1 * 100) / tot1;
int percentage2 = (val2 * 100) / tot2;
//GWT.log(val1 +"-"+val2);
GWT.log(""+percentage1);
if (percentage1 == percentage2) return 0;
if (percentage1 > percentage2)
return 1;
else
return -1;
}
else if (property.equals("LocalAvailableSpace")) {
String s1 = m1.get(property);
String s2 = m2.get(property);
int val1 = Integer.parseInt(s1);
int val2 = Integer.parseInt(s2);
if (val1 == val2) return 0;
if (val1 > val2)
return 1;
else
return -1;
}
else if (property.equals("NumberOfMembers") || property.equals("Cardinality")) {
String s1 = m1.get(property);
String s2 = m2.get(property);
int val1 = Integer.parseInt(s1);
int val2 = Integer.parseInt(s2);
if (val1 == val2) return 0;
if (val1 > val2)
return 1;
else
return -1;
}
Object v1 = m1.get(property);
Object v2 = m2.get(property);
return comparator.compare(v1, v2);
}
return comparator.compare(m1, m2);
}
}