Author: kono
Date: 2012-08-01 20:40:01 -0700 (Wed, 01 Aug 2012)
New Revision: 30068

Added:
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/NumberConverter.java
Modified:
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/VizMapPropertyBuilder.java
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/C2CMappingEditorPanel.java
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/ContinuousMappingEditorPanel.java
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/ContinuousTrackRenderer.java
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/GradientEditorPanel.java
Log:
fixes #1295 Error handler added for invalid data types.

Added: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/NumberConverter.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/NumberConverter.java
                          (rev 0)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/NumberConverter.java
  2012-08-02 03:40:01 UTC (rev 30068)
@@ -0,0 +1,32 @@
+package org.cytoscape.view.vizmap.gui.internal;
+
+public final class NumberConverter {
+       
+       public static final <T> T convert(final Class<T> type, final Number 
value) {
+               T converted = null;
+               if(type == Double.class) {
+                       Double doubleValue = value.doubleValue();
+                       converted = (T) doubleValue;
+               } else if(type == Integer.class) {
+                       Integer intValue = value.intValue();
+                       converted = (T) intValue;
+               } else if(type == Float.class) {
+                       Float floatValue = value.floatValue();
+                       converted = (T) floatValue;
+               } else if(type == Byte.class) {
+                       Byte byteValue = value.byteValue();
+                       converted = (T) byteValue;
+               } else if(type == Long.class){
+                       Long longValue = value.longValue();
+                       converted = (T) longValue;
+               } else if(type == Short.class) {
+                       Short shortValue = value.shortValue();
+                       converted = (T) shortValue;
+               } else {
+                       throw new IllegalStateException("Could not covert 
Number.");
+               }
+               
+               return converted;
+       }
+
+}


Property changes on: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/NumberConverter.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Modified: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/VizMapPropertyBuilder.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/VizMapPropertyBuilder.java
    2012-08-01 21:44:42 UTC (rev 30067)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/VizMapPropertyBuilder.java
    2012-08-02 03:40:01 UTC (rev 30068)
@@ -175,21 +175,37 @@
 
                if (visualMapping instanceof DiscreteMapping && (attrName != 
null)) {
                        // Discrete Mapping
-
                        // This set should not contain null!
-                       final SortedSet<K> attrSet = new TreeSet<K>();
-
+                       final SortedSet<Object> attrSet = new TreeSet<Object>();
+                       
+                       
                        for (CyNetwork net : graphObjectSet.keySet()) {
                                if (vp.getTargetDataType() == CyNetwork.class) {
                                        final CyRow row = net.getRow(net);
-                                       processDiscretValues(row, attrName, 
attrSet);
+                                       final CyColumn column = 
row.getTable().getColumn(attrName);
+                                       if(column != null)
+                                               processDiscretValues(row, 
attrName, column, column.getType(), attrSet);
                                } else {
-                                       for (CyIdentifiable go : 
graphObjectSet.get(net)) {
+                                       // Assule all data sets are same data 
type.
+                                       final Set<CyIdentifiable> graphObjects 
= graphObjectSet.get(net);
+                                       if(graphObjects.isEmpty())
+                                               continue;
+                                       
+                                       CyIdentifiable firstEntry = 
graphObjects.iterator().next();
+                                       final CyRow firstRow = 
net.getRow(firstEntry);
+                                       final CyColumn column = 
firstRow.getTable().getColumn(attrName);
+                                       if(column == null)
+                                               continue;
+                                       
+                                       final Class<?> type = column.getType();
+                                       for (final CyIdentifiable go : 
graphObjects) {
                                                final CyRow row = 
net.getRow(go);
-                                               processDiscretValues(row, 
attrName, attrSet);
+                                               processDiscretValues(row, 
attrName, column, type, attrSet);
                                        }
                                }
                        }
+                       
+                       
 
                        // FIXME
                        setDiscreteProps(vp, visualMapping, attrSet, vpEditor, 
topProperty, propertySheetPanel);
@@ -233,25 +249,33 @@
                return topProperty;
        }
        
-       private <K> void processDiscretValues(final CyRow row, final String 
attrName, final SortedSet<K> attrSet) {
-               final CyTable table = row.getTable();
-               final CyColumn column = table.getColumn(attrName);
+       private void processDiscretValues(final CyRow row, final String 
columnName, final CyColumn column, final Class<?> attrClass,
+                       final SortedSet<Object> attrSet) {
 
-               if (column != null) {
-                       final Class<?> attrClass = column.getType();
+               if (column.getListElementType() != null) {
+                       // Expand list contents as a flat list.
+                       final List<?> list = row.getList(columnName, 
column.getListElementType());
+                       if (list != null) {
+                               for (final Object item : list) {
+                                       if (item != null)
+                                               attrSet.add(item);
+                               }
+                       }
+               } else {
+                       Object id = row.get(columnName, attrClass);
 
-                       if (attrClass.isAssignableFrom(List.class)) {
-                               List<?> list = row.getList(attrName, 
column.getListElementType());
-                               if (list != null) {
-                                       for (Object item : list) {
-                                               if (item != null)
-                                                       attrSet.add((K) item);
+                       if (id != null) {
+                               //System.out.println(id + ": id is " + 
id.getClass() + ", col type is " + attrClass);
+
+                               if (id.getClass() != attrClass && id instanceof 
Number)
+                                       
attrSet.add(NumberConverter.convert(attrClass, (Number) id));
+                               else {
+                                       try {
+                                               attrSet.add(id);
+                                       } catch (Exception e) {
+                                               logger.debug(columnName + ": 
Invalid entry ignored", e);
                                        }
                                }
-                       } else {
-                               final Object id = row.get(attrName, attrClass);
-                               if (id != null)
-                                       attrSet.add((K) id);
                        }
                }
        }
@@ -261,7 +285,7 @@
         * list should be created against all available attribute values.
         */
        private <K, V> void setDiscreteProps(VisualProperty<V> vp, 
VisualMappingFunction<K, V> mapping,
-                       SortedSet<K> attrSet, VisualPropertyEditor<V> 
visualPropertyEditor, DefaultProperty parent,
+                       SortedSet<Object> attrSet, VisualPropertyEditor<V> 
visualPropertyEditor, DefaultProperty parent,
                        PropertySheetPanel propertySheetPanel) {
                if (attrSet == null)
                        return;
@@ -277,9 +301,9 @@
                final PropertyRendererRegistry cellRendererFactory = 
(PropertyRendererRegistry) table.getRendererFactory();
                final PropertyEditorRegistry cellEditorFactory = 
(PropertyEditorRegistry) table.getEditorFactory();
 
-               for (K key : attrSet) {
+               for (Object key : attrSet) {
 
-                       valProp = new VizMapperProperty<K, V, 
VisualMappingFunction<K, V>>(CellType.DISCRETE, key, mapping
+                       valProp = new VizMapperProperty<K, V, 
VisualMappingFunction<K, V>>(CellType.DISCRETE, (K)key, mapping
                                        
.getVisualProperty().getRange().getType());
                        strVal = key.toString();
                        valProp.setDisplayName(strVal);

Modified: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/C2CMappingEditorPanel.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/C2CMappingEditorPanel.java
       2012-08-01 21:44:42 UTC (rev 30067)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/C2CMappingEditorPanel.java
       2012-08-02 03:40:01 UTC (rev 30068)
@@ -46,6 +46,7 @@
 import org.cytoscape.model.CyTable;
 import org.cytoscape.view.vizmap.VisualMappingManager;
 import org.cytoscape.view.vizmap.VisualStyle;
+import org.cytoscape.view.vizmap.gui.internal.NumberConverter;
 import org.cytoscape.view.vizmap.mappings.BoundaryRangeValues;
 import org.cytoscape.view.vizmap.mappings.ContinuousMapping;
 import org.cytoscape.view.vizmap.mappings.ContinuousMappingPoint;
@@ -91,11 +92,11 @@
        }
        
        private V convertToValue(final Number value) {
-               return convert(vpValueType, value);
+               return NumberConverter.convert(vpValueType, value);
        }
        
        private K convertToColumnValue(final Number value) {
-               return convert(columnType, value);
+               return NumberConverter.convert(columnType, value);
        }
        
        

Modified: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/ContinuousMappingEditorPanel.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/ContinuousMappingEditorPanel.java
        2012-08-01 21:44:42 UTC (rev 30067)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/ContinuousMappingEditorPanel.java
        2012-08-02 03:40:01 UTC (rev 30068)
@@ -66,6 +66,7 @@
 import org.cytoscape.view.model.VisualProperty;
 import org.cytoscape.view.vizmap.VisualMappingManager;
 import org.cytoscape.view.vizmap.VisualStyle;
+import org.cytoscape.view.vizmap.gui.internal.NumberConverter;
 import org.cytoscape.view.vizmap.mappings.BoundaryRangeValues;
 import org.cytoscape.view.vizmap.mappings.ContinuousMapping;
 import org.cytoscape.view.vizmap.mappings.ContinuousMappingPoint;
@@ -167,33 +168,6 @@
                initRangeValues();
                setSpinner();
        }
-       
-       protected static <T> T convert(final Class<T> type, Number value) {
-               T converted = null;
-               if(type == Double.class) {
-                       Double doubleValue = value.doubleValue();
-                       converted = (T) doubleValue;
-               } else if(type == Integer.class) {
-                       Integer intValue = value.intValue();
-                       converted = (T) intValue;
-               } else if(type == Float.class) {
-                       Float floatValue = value.floatValue();
-                       converted = (T) floatValue;
-               } else if(type == Byte.class) {
-                       Byte byteValue = value.byteValue();
-                       converted = (T) byteValue;
-               } else if(type == Long.class){
-                       Long longValue = value.longValue();
-                       converted = (T) longValue;
-               } else if(type == Short.class) {
-                       Short shortValue = value.shortValue();
-                       converted = (T) shortValue;
-               } else {
-                       throw new IllegalStateException("Could not covert 
Number.");
-               }
-               
-               return converted;
-       }
 
 
        private void setSpinner() {
@@ -555,7 +529,7 @@
                        V greaterVal = above;
 
                        if(equalVal instanceof Number)
-                               mapping.getPoint(0).setRange(new 
BoundaryRangeValues<V>(convert(vpValueType, (Number)equalVal), 
convert(vpValueType, (Number)lesserVal), convert(vpValueType, 
(Number)greaterVal)));
+                               mapping.getPoint(0).setRange(new 
BoundaryRangeValues<V>(NumberConverter.convert(vpValueType, (Number)equalVal), 
NumberConverter.convert(vpValueType, (Number)lesserVal), 
NumberConverter.convert(vpValueType, (Number)greaterVal)));
                        else {
                                mapping.getPoint(0).setRange(new 
BoundaryRangeValues<V>(equalVal, lesserVal, greaterVal));
                        }
@@ -588,7 +562,7 @@
                        }
 
                        if(equalVal instanceof Number)
-                               mapping.getPoint(i).setRange(new 
BoundaryRangeValues<V>(convert(vpValueType, (Number)equalVal), 
convert(vpValueType, (Number)lesserVal), convert(vpValueType, 
(Number)greaterVal)));
+                               mapping.getPoint(i).setRange(new 
BoundaryRangeValues<V>(NumberConverter.convert(vpValueType, (Number)equalVal), 
NumberConverter.convert(vpValueType, (Number)lesserVal), 
NumberConverter.convert(vpValueType, (Number)greaterVal)));
                        else {
                                mapping.getPoint(i).setRange(new 
BoundaryRangeValues<V>(equalVal, lesserVal, greaterVal));
                        }

Modified: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/ContinuousTrackRenderer.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/ContinuousTrackRenderer.java
     2012-08-01 21:44:42 UTC (rev 30067)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/ContinuousTrackRenderer.java
     2012-08-02 03:40:01 UTC (rev 30068)
@@ -61,6 +61,7 @@
 import org.cytoscape.application.CyApplicationManager;
 import org.cytoscape.view.model.VisualProperty;
 import org.cytoscape.view.vizmap.VisualStyle;
+import org.cytoscape.view.vizmap.gui.internal.NumberConverter;
 import org.cytoscape.view.vizmap.mappings.BoundaryRangeValues;
 import org.cytoscape.view.vizmap.mappings.ContinuousMapping;
 import org.jdesktop.swingx.JXMultiThumbSlider;
@@ -539,9 +540,9 @@
                                        }
                                }
 
-                               final BoundaryRangeValues<V> brv = new 
BoundaryRangeValues<V>(ContinuousMappingEditorPanel.convert(
-                                               vpValueType, lesserVal), 
ContinuousMappingEditorPanel.convert(vpValueType, newVal),
-                                               
ContinuousMappingEditorPanel.convert(vpValueType, greaterVal));
+                               final BoundaryRangeValues<V> brv = new 
BoundaryRangeValues<V>(NumberConverter.convert(
+                                               vpValueType, lesserVal), 
NumberConverter.convert(vpValueType, newVal),
+                                               
NumberConverter.convert(vpValueType, greaterVal));
 
                                cMapping.getPoint(selectedIdx).setRange(brv);
                        }
@@ -602,9 +603,9 @@
 
 //                             final BoundaryRangeValues<V> brv = new 
BoundaryRangeValues<V>(
 //                                             lesserVal, newVal, greaterVal);
-                               final BoundaryRangeValues<V> brv = new 
BoundaryRangeValues<V>(ContinuousMappingEditorPanel.convert(
-                                               vpValueType, lesserVal), 
ContinuousMappingEditorPanel.convert(vpValueType, newVal),
-                                               
ContinuousMappingEditorPanel.convert(vpValueType, greaterVal));
+                               final BoundaryRangeValues<V> brv = new 
BoundaryRangeValues<V>(NumberConverter.convert(
+                                               vpValueType, lesserVal), 
NumberConverter.convert(vpValueType, newVal),
+                                               
NumberConverter.convert(vpValueType, greaterVal));
 
                                cMapping.getPoint(selectedIdx).setRange(brv);
 
@@ -638,9 +639,9 @@
 
                                original = cMapping.getPoint(0).getRange();
 //                             brv = new BoundaryRangeValues<V>(newValue, 
original.equalValue, original.greaterValue);
-                               brv = new 
BoundaryRangeValues<V>(ContinuousMappingEditorPanel.convert(
-                                               vpValueType, newValue), 
ContinuousMappingEditorPanel.convert(vpValueType, original.equalValue),
-                                               
ContinuousMappingEditorPanel.convert(vpValueType, original.greaterValue));
+                               brv = new 
BoundaryRangeValues<V>(NumberConverter.convert(
+                                               vpValueType, newValue), 
NumberConverter.convert(vpValueType, original.equalValue),
+                                               
NumberConverter.convert(vpValueType, original.greaterValue));
                                cMapping.getPoint(0).setRange(brv);
 
 
@@ -675,9 +676,9 @@
                                original = 
cMapping.getPoint(cMapping.getPointCount() - 1)
                                                .getRange();
 //                             brv = new 
BoundaryRangeValues<V>(original.lesserValue,original.equalValue, above);
-                               brv = new 
BoundaryRangeValues<V>(ContinuousMappingEditorPanel.convert(
-                                               vpValueType, 
original.lesserValue), ContinuousMappingEditorPanel.convert(vpValueType, 
original.equalValue),
-                                               
ContinuousMappingEditorPanel.convert(vpValueType, above));
+                               brv = new 
BoundaryRangeValues<V>(NumberConverter.convert(
+                                               vpValueType, 
original.lesserValue), NumberConverter.convert(vpValueType, 
original.equalValue),
+                                               
NumberConverter.convert(vpValueType, above));
                                
                                cMapping.getPoint(cMapping.getPointCount() - 
1).setRange(brv);
 

Modified: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/GradientEditorPanel.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/GradientEditorPanel.java
 2012-08-01 21:44:42 UTC (rev 30067)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/mappingeditor/GradientEditorPanel.java
 2012-08-02 03:40:01 UTC (rev 30068)
@@ -53,6 +53,7 @@
 import org.cytoscape.view.vizmap.VisualMappingManager;
 import org.cytoscape.view.vizmap.VisualStyle;
 import org.cytoscape.view.vizmap.gui.editor.ValueEditor;
+import org.cytoscape.view.vizmap.gui.internal.NumberConverter;
 import org.cytoscape.view.vizmap.mappings.BoundaryRangeValues;
 import org.cytoscape.view.vizmap.mappings.ContinuousMapping;
 import org.cytoscape.view.vizmap.mappings.ContinuousMappingPoint;
@@ -137,8 +138,8 @@
                        upperRange = new 
BoundaryRangeValues<Color>(DEF_UPPER_COLOR, DEF_UPPER_COLOR, above);
 
                        // Add two points.
-                       mapping.addPoint( 
ContinuousMappingEditorPanel.convert(columnType, ((rangeValue.doubleValue() * 
0.1) + minValue.doubleValue())), lowerRange);
-                       
mapping.addPoint(ContinuousMappingEditorPanel.convert(columnType,(rangeValue.doubleValue()
 * 0.9) + minValue.doubleValue()), upperRange);
+                       mapping.addPoint( NumberConverter.convert(columnType, 
((rangeValue.doubleValue() * 0.1) + minValue.doubleValue())), lowerRange);
+                       
mapping.addPoint(NumberConverter.convert(columnType,(rangeValue.doubleValue() * 
0.9) + minValue.doubleValue()), upperRange);
 
                        slider.repaint();
                        repaint();
@@ -163,7 +164,7 @@
 
                lowerRange = new BoundaryRangeValues<Color>(lesserVal, 
equalVal, greaterVal);
 
-               
mapping.addPoint(ContinuousMappingEditorPanel.convert(columnType, maxValue), 
lowerRange);
+               mapping.addPoint(NumberConverter.convert(columnType, maxValue), 
lowerRange);
 
                updateMap();
 

-- 
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