Author: scooter
Date: 2011-06-07 21:38:48 -0700 (Tue, 07 Jun 2011)
New Revision: 25672
Removed:
cytoscape/trunk/coreplugins/browser/src/main/java/browser/DefaultSortTableModel.java
Modified:
cytoscape/trunk/coreplugins/browser/src/main/java/browser/ColumnComparator.java
cytoscape/trunk/coreplugins/browser/src/main/java/browser/DataTableModel.java
Log:
Fix table sorting
Modified:
cytoscape/trunk/coreplugins/browser/src/main/java/browser/ColumnComparator.java
===================================================================
---
cytoscape/trunk/coreplugins/browser/src/main/java/browser/ColumnComparator.java
2011-06-08 02:12:23 UTC (rev 25671)
+++
cytoscape/trunk/coreplugins/browser/src/main/java/browser/ColumnComparator.java
2011-06-08 04:38:48 UTC (rev 25672)
@@ -16,12 +16,15 @@
import java.util.Vector;
+import cytoscape.data.CyAttributes;
+
/**
*
*/
public class ColumnComparator implements Comparator {
private static final int EMPTY_STR_LENGTH = 2;
protected int index;
+ protected byte internalColumnType;
protected boolean ascending;
/**
@@ -30,8 +33,9 @@
* @param index DOCUMENT ME!
* @param ascending DOCUMENT ME!
*/
- public ColumnComparator(final int index, final boolean ascending) {
+ public ColumnComparator(final int index, final byte type, final boolean
ascending) {
this.index = index;
+ this.internalColumnType = type;
this.ascending = ascending;
}
@@ -54,31 +58,33 @@
return 1;
} else if (secondObj == null) {
return -1;
- } else if (firstObj instanceof Comparable && secondObj
instanceof Comparable) {
- final Comparable firstComparableObj =
(Comparable) firstObj;
- final Comparable secondComparableObj =
(Comparable) secondObj;
+ } else if (firstObj instanceof
ValidatedObjectAndEditString && secondObj instanceof
ValidatedObjectAndEditString) {
+ final ValidatedObjectAndEditString v1 =
(ValidatedObjectAndEditString) firstObj;
+ final ValidatedObjectAndEditString v2 =
(ValidatedObjectAndEditString) secondObj;
+ final String errorText1 = v1.getErrorText();
+ final String errorText2 = v2.getErrorText();
+ if (errorText1 != null && errorText2 != null)
+ return ascending ?
errorText1.compareToIgnoreCase(errorText2) :
errorText2.compareToIgnoreCase(errorText1);
+ if (errorText2 != null)
+ return ascending? 1: -1;
+ if (errorText1 != null)
+ return ascending? -1: 1;
+ final Object val1 = v1.getValidatedObject();
+ final Object val2 = v2.getValidatedObject();
- /*
- * If these values are Strings, treat empty
values as null.
- */
- if (firstComparableObj instanceof String &&
secondComparableObj instanceof String) {
- final int firstLength = ((String)
firstComparableObj).trim().length();
- final int secondLength = ((String)
secondComparableObj).trim().length();
+ if (internalColumnType ==
CyAttributes.TYPE_FLOATING)
+ return ascending ?
doubleCompare((double)(Double)val1, (double)(Double)val2) :
+
doubleCompare((double)(Double)val2, (double)(Double)val1);
+ if (internalColumnType ==
CyAttributes.TYPE_INTEGER)
+ return ascending ?
integerCompare((int)(Integer)val1, (int)(Integer)val2) :
+
integerCompare((int)(Integer)val2, (int)(Integer)val1);
- if ((firstLength == 0) && (secondLength
== 0)) {
- return 0;
- } else if (firstLength == 0) {
- return 1;
- } else if (secondLength == 0) {
- return -1;
- } else {
- return ascending ?
firstComparableObj.compareTo(secondComparableObj)
- :
secondComparableObj.compareTo(firstComparableObj);
- }
- } else {
- return ascending ?
firstComparableObj.compareTo(secondComparableObj)
- :
secondComparableObj.compareTo(firstComparableObj);
- }
+ if (internalColumnType ==
CyAttributes.TYPE_BOOLEAN)
+ return ascending ?
booleanCompare((boolean)(Boolean)val1, (boolean)(Boolean)val2) :
+
booleanCompare((boolean)(Boolean)val2, (boolean)(Boolean)val1);
+
+ return ascending ?
stringCompare(val1.toString(), val2.toString()):
+
stringCompare(val2.toString(), val1.toString());
} else {
/*
* If not primitive, just compare as String
@@ -101,6 +107,34 @@
return 1;
}
+ private static int doubleCompare(final double d1, final double d2) {
+ if (d1 < d2)
+ return -1;
+ return d1 > d2 ? +1 : 0;
+ }
+
+ private static int longCompare(final long l1, final long l2) {
+ if (l1 < l2)
+ return -1;
+ return l1 > l2 ? +1 : 0;
+ }
+
+ private static int integerCompare(final int i1, int i2) {
+ if (i1 < i2)
+ return -1;
+ return i1 > i2 ? +1 : 0;
+ }
+
+ private static int booleanCompare(final boolean b1, final boolean b2) {
+ if ((b1 && b2) || (!b1 && !b2))
+ return 0;
+ return b1 ? -1 : +1;
+ }
+
+ private static int stringCompare(final String s1, final String s2) {
+ return s1.compareToIgnoreCase(s2);
+ }
+
/**
* Comparing numbers.
*
Modified:
cytoscape/trunk/coreplugins/browser/src/main/java/browser/DataTableModel.java
===================================================================
---
cytoscape/trunk/coreplugins/browser/src/main/java/browser/DataTableModel.java
2011-06-08 02:12:23 UTC (rev 25671)
+++
cytoscape/trunk/coreplugins/browser/src/main/java/browser/DataTableModel.java
2011-06-08 04:38:48 UTC (rev 25672)
@@ -462,6 +462,11 @@
return CyAttributesUtils.getClass(colName, data);
}
+ public byte getObjectTypeAt(int col) {
+ String columnName = getColumnName(col);
+ return data.getType(columnName);
+ }
+
/**
* DOCUMENT ME!
*
@@ -480,7 +485,7 @@
* @param ascending DOCUMENT ME!
*/
public void sortColumn(int col, boolean ascending) {
- Collections.sort(getDataVector(), new ColumnComparator(col,
ascending));
+ Collections.sort(getDataVector(), new ColumnComparator(col,
getObjectTypeAt(col), ascending));
}
/**
Deleted:
cytoscape/trunk/coreplugins/browser/src/main/java/browser/DefaultSortTableModel.java
===================================================================
---
cytoscape/trunk/coreplugins/browser/src/main/java/browser/DefaultSortTableModel.java
2011-06-08 02:12:23 UTC (rev 25671)
+++
cytoscape/trunk/coreplugins/browser/src/main/java/browser/DefaultSortTableModel.java
2011-06-08 04:38:48 UTC (rev 25672)
@@ -1,124 +0,0 @@
-/*
- * $Archive: SourceJammer$
- * $FileName: DefaultSortTableModel.java$
- * $FileID: 3982$
- *
- * Last change:
- * $AuthorName: Timo Haberkern$
- * $Date$
- * $Comment: $
- *
- * $KeyWordsOff: $
- */
-
-/*
-=====================================================================
-
- DefaultSortTableModel.java
-
- Created by Claude Duguay
- Copyright (c) 2002
-
-=====================================================================
-*/
-package browser;
-
-import java.util.Collections;
-import java.util.Vector;
-
-import javax.swing.table.DefaultTableModel;
-
-
-/**
- *
- */
-public class DefaultSortTableModel extends DefaultTableModel implements
SortTableModel {
- /**
- * Creates a new DefaultSortTableModel object.
- */
- public DefaultSortTableModel() {
- }
-
- /**
- * Creates a new DefaultSortTableModel object.
- *
- * @param rows DOCUMENT ME!
- * @param cols DOCUMENT ME!
- */
- public DefaultSortTableModel(int rows, int cols) {
- super(rows, cols);
- }
-
- /**
- * Creates a new DefaultSortTableModel object.
- *
- * @param data DOCUMENT ME!
- * @param names DOCUMENT ME!
- */
- public DefaultSortTableModel(Object[][] data, Object[] names) {
- super(data, names);
- }
-
- /**
- * Creates a new DefaultSortTableModel object.
- *
- * @param names DOCUMENT ME!
- * @param rows DOCUMENT ME!
- */
- public DefaultSortTableModel(Object[] names, int rows) {
- super(names, rows);
- }
-
- /**
- * Creates a new DefaultSortTableModel object.
- *
- * @param names DOCUMENT ME!
- * @param rows DOCUMENT ME!
- */
- public DefaultSortTableModel(Vector names, int rows) {
- super(names, rows);
- }
-
- /**
- * Creates a new DefaultSortTableModel object.
- *
- * @param data DOCUMENT ME!
- * @param names DOCUMENT ME!
- */
- public DefaultSortTableModel(Vector data, Vector names) {
- super(data, names);
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param col DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
- public boolean isSortable(int col) {
- return true;
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param col DOCUMENT ME!
- * @param ascending DOCUMENT ME!
- */
- public void sortColumn(int col, boolean ascending) {
- Collections.sort(getDataVector(), new ColumnComparator(col,
ascending));
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param aValue DOCUMENT ME!
- * @param rowIndex DOCUMENT ME!
- * @param columnIndex DOCUMENT ME!
- */
- public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
- // System.out.println("SetValueAt: " + aValue + " " + rowIndex
+ " " + columnIndex);
- super.setValueAt(aValue, rowIndex, columnIndex);
- }
-}
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.