package org.insightech.er.editor.model.search; import java.util.Collections; import java.util.Comparator; import java.util.List; public class SearchResult { public static final int SORT_TYPE_PATH = 1; public static final int SORT_TYPE_TYPE = 2; public static final int SORT_TYPE_NAME = 3; public static final int SORT_TYPE_VALUE = 4; private int sortType; private Object resultObject; private List<SearchResultRow> rows; public SearchResult(Object resultObject, List<SearchResultRow> rows) { this.resultObject = resultObject; this.rows = rows; } public Object getResultObject() { return resultObject; } public List<SearchResultRow> getRows() { return rows; } public void addRow(SearchResultRow row) { this.rows.add(row); } public void sort(int sortType) { this.sortType = sortType; Collections.sort(rows, new SearchResultRowComparator()); } private class SearchResultRowComparator implements Comparator<SearchResultRow> { public int compare(SearchResultRow o1, SearchResultRow o2) { if (o1 == null) { return 1; } if (o2 == null) { return -1; } String value1 = null; String value2 = null; if (sortType == SORT_TYPE_PATH) { value1 = o1.getPath(); value2 = o2.getPath(); } else if (sortType == SORT_TYPE_TYPE || sortType == SORT_TYPE_NAME) { int type1 = o1.getType(); int type2 = o2.getType(); return type1 - type2; } else if (sortType == SORT_TYPE_VALUE) { value1 = o1.getText(); value2 = o2.getText(); } if (value1 == null) { return 1; } if (value2 == null) { return -1; } return value1.compareTo(value2); } } }