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.

Reply via email to