Author: ruschein
Date: 2011-01-21 10:38:34 -0800 (Fri, 21 Jan 2011)
New Revision: 23541
Modified:
core3/model-api/trunk/src/test/java/org/cytoscape/model/AbstractCyTableTest.java
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
Log:
Improved virtual table column support.
Modified:
core3/model-api/trunk/src/test/java/org/cytoscape/model/AbstractCyTableTest.java
===================================================================
---
core3/model-api/trunk/src/test/java/org/cytoscape/model/AbstractCyTableTest.java
2011-01-21 18:31:57 UTC (rev 23540)
+++
core3/model-api/trunk/src/test/java/org/cytoscape/model/AbstractCyTableTest.java
2011-01-21 18:38:34 UTC (rev 23541)
@@ -647,4 +647,25 @@
assertEquals(matchingRow.get("s1", String.class), "abc");
assertEquals(matchingRow.get("x", Integer.class),
Integer.valueOf(33));
}
+
+ @Test
+ public void testVirtualColumnDelete() {
+ table.createColumn("x", Long.class);
+ table2.createColumn("x2", Long.class);
+ table2.createColumn("s", String.class);
+ table.addVirtualColumn("s1", "s", table2, "x2", "x");
+ assertNotNull(table.getType("s1"));
+ table.deleteColumn("s1");
+ assertNull(table.getType("s1"));
+ }
+
+ @Test
+ public void testVirtualColumnListElementType() {
+ table.createColumn("x", Long.class);
+ table2.createColumn("x2", Long.class);
+ table2.createListColumn("b", Boolean.class);
+ table.addVirtualColumn("b1", "b", table2, "x2", "x");
+ assertEquals("Virtual column list element type should have been
Boolean!",
+ Boolean.class, table.getListElementType("b1"));
+ }
}
Modified:
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
===================================================================
---
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
2011-01-21 18:31:57 UTC (rev 23540)
+++
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
2011-01-21 18:38:34 UTC (rev 23541)
@@ -290,13 +290,20 @@
}
@Override
- public void deleteColumn(String columnName) {
- if (attributes.containsKey(columnName)) {
+ public void deleteColumn(final String columnName) {
+ final VirtualColumn virtColumn =
virtualColumnMap.get(columnName);
+ if (attributes.containsKey(columnName) || virtColumn != null) {
synchronized(this) {
- attributes.remove(columnName);
- reverse.remove(columnName);
- types.remove(columnName);
- listElementTypes.remove(columnName);
+ if (virtColumn != null) {
+ virtualColumnMap.remove(columnName);
+ types.remove(columnName);
+ listElementTypes.remove(columnName);
+ } else {
+ attributes.remove(columnName);
+ reverse.remove(columnName);
+ types.remove(columnName);
+ listElementTypes.remove(columnName);
+ }
}
// This event must be synchronous!
@@ -320,8 +327,8 @@
if (type == List.class)
throw new IllegalArgumentException(
- "use
createListColumn() to create List columns instead of createColumn for attribute
'"
- + columnName
+ "'!");
+ "use createListColumn() to
create List columns instead of createColumn for attribute '"
+ + columnName + "'!");
types.put(columnName, type);
attributes.put(columnName, new HashMap<Object,
Object>());
@@ -818,6 +825,10 @@
throw new IllegalArgumentException("\"sourceJoinKey\"
has a different type from \"targetJoinKey\"!");
types.put(virtualColumn, sourceColumnType);
+ if (sourceColumnType == List.class) {
+ final Class<?> listElementType =
sourceTable.getListElementType(sourceColumn);
+ listElementTypes.put(virtualColumn, listElementType);
+ }
virtualColumnMap.put(
virtualColumn,
new VirtualColumn(sourceTable, sourceColumn, this,
sourceJoinKey, targetJoinKey));
--
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.