Author: Christian Lopes
Date: 2011-03-08 14:42:22 -0800 (Tue, 08 Mar 2011)
New Revision: 24335
Modified:
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/ContinuousMapping.java
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/DiscreteMapping.java
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/PassthroughMapping.java
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/LinearNumberInterpolator.java
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/LinearNumberToColorInterpolator.java
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/LinearNumberToNumberInterpolator.java
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/NumberInterpolator.java
Log:
Fixed an AbstractMethodError caused by the NumberInterpolator.getRangeValue
method signature, which was happening when using ContinuousMappings for Color
properties.
Modified the Visual Mappings, so they can handle CyColumns of type List.
Modified:
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/ContinuousMapping.java
===================================================================
---
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/ContinuousMapping.java
2011-03-08 19:54:12 UTC (rev 24334)
+++
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/ContinuousMapping.java
2011-03-08 22:42:22 UTC (rev 24335)
@@ -268,9 +268,10 @@
K upperDomain = upperBound.getValue();
BoundaryRangeValues<V> gv = upperBound.getRange();
V upperRange = gv.lesserValue;
-
- return interpolator.getRangeValue(lowerDomain, lowerRange,
upperDomain,
- upperRange, domainValue);
+
+ V value = interpolator.getRangeValue(lowerDomain, lowerRange,
upperDomain, upperRange, domainValue);
+
+ return value;
}
/**
Modified:
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/DiscreteMapping.java
===================================================================
---
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/DiscreteMapping.java
2011-03-08 19:54:12 UTC (rev 24334)
+++
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/DiscreteMapping.java
2011-03-08 22:42:22 UTC (rev 24335)
@@ -30,10 +30,12 @@
package org.cytoscape.view.vizmap.mappings;
+import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
+import org.cytoscape.model.CyColumn;
import org.cytoscape.model.CyRow;
import org.cytoscape.model.CyTableEntry;
import org.cytoscape.view.model.View;
@@ -113,10 +115,18 @@
// skip Views where source attribute is not defined;
// ViewColumn will automatically substitute the per-VS
or global
// default, as appropriate
-
- final K key = view.getModel().getCyRow().get(attrName,
attrType);
+ final CyColumn column =
row.getTable().getColumn(attrName);
+ final Class<?> attrClass = column.getType();
+ Object key = null;
+
+ if (attrClass.isAssignableFrom(List.class)) {
+ List<?> list = row.getList(attrName,
column.getListElementType());
+ key = list != null ? list.toString() : "";
+ } else {
+ key = row.get(attrName, attrType);
+ }
- if (attribute2visualMap.containsKey(key)) {
+ if (key != null &&
attribute2visualMap.containsKey(key)) {
final V value = attribute2visualMap.get(key);
// Assign value to view
view.setVisualProperty(vp, value);
Modified:
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/PassthroughMapping.java
===================================================================
---
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/PassthroughMapping.java
2011-03-08 19:54:12 UTC (rev 24334)
+++
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/PassthroughMapping.java
2011-03-08 22:42:22 UTC (rev 24335)
@@ -28,6 +28,11 @@
package org.cytoscape.view.vizmap.mappings;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.cytoscape.model.CyColumn;
import org.cytoscape.model.CyRow;
import org.cytoscape.model.CyTableEntry;
import org.cytoscape.view.model.View;
@@ -72,7 +77,26 @@
// skip Views where source attribute is not defined;
// ViewColumn will automatically substitute the per-VS
or
// global default, as appropriate
- final K value = row.get(attrName, attrType);
+ final CyColumn column =
row.getTable().getColumn(attrName);
+ final Class<?> attrClass = column.getType();
+ K value = null;
+
+ if (attrClass.isAssignableFrom(List.class)) {
+ List<?> list = row.getList(attrName,
column.getListElementType());
+ StringBuffer sb = new StringBuffer();
+
+ if (list != null && !list.isEmpty()) {
+ for (Object item : list)
+ sb.append(item.toString() +
"\n");
+
+ sb.deleteCharAt(sb.length() - 1);
+ }
+
+ value = (K) sb.toString();
+ } else {
+ value = row.get(attrName, attrType);
+ }
+
final V converted = convertToValue(value);
view.setVisualProperty(vp, converted);
Modified:
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/LinearNumberInterpolator.java
===================================================================
---
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/LinearNumberInterpolator.java
2011-03-08 19:54:12 UTC (rev 24334)
+++
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/LinearNumberInterpolator.java
2011-03-08 22:42:22 UTC (rev 24335)
@@ -50,7 +50,7 @@
* lower boundary value for the convenience of subclasses.
*/
abstract public class LinearNumberInterpolator<R> extends
NumberInterpolator<R> {
-
+
/**
* DOCUMENT ME!
*
Modified:
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/LinearNumberToColorInterpolator.java
===================================================================
---
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/LinearNumberToColorInterpolator.java
2011-03-08 19:54:12 UTC (rev 24334)
+++
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/LinearNumberToColorInterpolator.java
2011-03-08 22:42:22 UTC (rev 24335)
@@ -60,7 +60,8 @@
*
* @return DOCUMENT ME!
*/
- public Color getRangeValue(double frac, Color lowerRange,
+ @Override
+ public Color getRangeValue(double frac, Color lowerRange,
Color upperRange) {
double red = lowerRange.getRed() +
Modified:
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/LinearNumberToNumberInterpolator.java
===================================================================
---
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/LinearNumberToNumberInterpolator.java
2011-03-08 19:54:12 UTC (rev 24334)
+++
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/LinearNumberToNumberInterpolator.java
2011-03-08 22:42:22 UTC (rev 24335)
@@ -65,6 +65,7 @@
*
* @return Value for the given fraction point.
*/
+ @Override
public Number getRangeValue(double frac, Number lowerRange,
Number upperRange) {
Modified:
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/NumberInterpolator.java
===================================================================
---
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/NumberInterpolator.java
2011-03-08 19:54:12 UTC (rev 24334)
+++
core3/default-mappingcalculators/trunk/src/main/java/org/cytoscape/view/vizmap/mappings/interpolators/NumberInterpolator.java
2011-03-08 22:42:22 UTC (rev 24335)
@@ -52,16 +52,16 @@
*/
abstract public class NumberInterpolator<R> implements Interpolator<Number, R>
{
- public R getRangeValue(Number lowerDomain, R lowerRange,
- Number upperDomain, R upperRange, Number domainValue) {
+ @Override
+ public <T extends Number> R getRangeValue(T lowerDomain, R lowerRange,
+ T upperDomain, R upperRange, T domainValue) {
if (lowerDomain == null || lowerRange == null || upperDomain ==
null
|| upperRange == null || domainValue == null)
return null;
-
+
return getRangeValue(lowerDomain.doubleValue(), lowerRange,
upperDomain
.doubleValue(), upperRange,
domainValue.doubleValue());
-
}
// /**
--
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.