package rocks.inspectit.ui.rcp.editor.tree.util;
import org.eclipse.jface.viewers.Viewer;
import com.google.common.base.Objects;
import rocks.inspectit.shared.all.communication.data.SqlStatementData;
import rocks.inspectit.ui.rcp.editor.tree.TreeViewerComparator;
import rocks.inspectit.ui.rcp.util.data.DatabaseInfoHelper;
/**
* Special comparator to avoid the comparison of {@link DatabaseInfoHelper}s.
*
* @author Ivan Senic
*
*/
public class DatabaseSqlTreeComparator extends TreeViewerComparator<SqlStatementData> {
/**
* {@inheritDoc}
*/
@Override
public int compare(Viewer viewer, Object o1, Object o2) {
if ((o1 instanceof SqlStatementData) && (o2 instanceof SqlStatementData)) {
DatabaseInfoHelper d1 = new DatabaseInfoHelper((SqlStatementData) o1);
DatabaseInfoHelper d2 = new DatabaseInfoHelper((SqlStatementData) o2);
if (Objects.equal(d1, d2)) {
return super.compare(viewer, o1, o2);
} else {
return this.compareDatabaseInfoHelpers(d1, d2);
}
} else if ((o1 instanceof DatabaseInfoHelper) && (o2 instanceof DatabaseInfoHelper)) {
return this.compareDatabaseInfoHelpers((DatabaseInfoHelper) o1, (DatabaseInfoHelper) o2);
}
return 0;
}
/**
* @param d1
* {@link DatabaseInfoHelper}
* @param d2
* {@link DatabaseInfoHelper}
* @return Returns result of the comparison of the database urls.
*/
private int compareDatabaseInfoHelpers(DatabaseInfoHelper d1, DatabaseInfoHelper d2) {
return d1.getDatabaseUrl().compareToIgnoreCase(d2.getDatabaseUrl());
}
}