package org.openlca.app.cloud.ui.library;
import java.util.Map.Entry;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.openlca.app.navigation.ModelTypeComparison;
import org.openlca.cloud.model.data.Dataset;
import org.openlca.core.model.ModelType;
import org.openlca.util.Strings;
public class Sorter extends ViewerSorter {
@Override
@SuppressWarnings("unchecked")
public int compare(Viewer viewer, Object o1, Object o2) {
Entry<Dataset, String> e1 = (Entry<Dataset, String>) o1;
Entry<Dataset, String> e2 = (Entry<Dataset, String>) o2;
return compare(viewer, e1.getKey(), e2.getKey());
}
private int compare(Viewer viewer, Dataset d1, Dataset d2) {
ModelType type1 = d1.type;
if (type1 == ModelType.CATEGORY)
type1 = d1.categoryType;
ModelType type2 = d2.type;
if (type2 == ModelType.CATEGORY)
type2 = d2.categoryType;
int c = ModelTypeComparison.compare(type1, type2);
if (c != 0)
return c;
if (d1.type == ModelType.CATEGORY && d2.type != ModelType.CATEGORY)
return -1;
if (d1.type != ModelType.CATEGORY && d2.type == ModelType.CATEGORY)
return 1;
return Strings.compare(d1.fullPath, d2.fullPath);
}
}