package com.openedit.page; import java.util.Collection; import java.util.Comparator; import java.util.HashMap; import java.util.Map; import org.openedit.Data; public class PermissionSorter implements Comparator<Permission> { protected Map<String,Integer> fieldSortOrder; public PermissionSorter() { } public PermissionSorter(Collection<Data> inPermissions) { loadPermissions(inPermissions); } public void loadPermissions(Collection<Data> inPermissions) { for (Data data : inPermissions) { String ordering = data.get("ordering"); if( ordering == null ) { ordering = "0"; } getSortOrder().put(data.getId(), Integer.valueOf( ordering ) ); } } public Map<String,Integer> getSortOrder() { if (fieldSortOrder == null) { fieldSortOrder = new HashMap<String,Integer>(); } return fieldSortOrder; } public int compare(Permission inO1, Permission inO2) { Integer ordering1 = getSortOrder().get(inO1.getName()); Integer ordering2 = getSortOrder().get(inO2.getName()); if( ordering1 == null ) { ordering1 = 0; } if( ordering2 == null ) { ordering2 = 0; } return ordering1.compareTo(ordering2); } }