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.