Author: kono
Date: 2012-03-08 14:10:15 -0800 (Thu, 08 Mar 2012)
New Revision: 28457
Added:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/table/MapGlobalToLocalTableTask.java
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/table/MapGlobalToLocalTableTaskFactory.java
Modified:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
Log:
fixes #750 Very simple mapping command had been added.
Modified:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
2012-03-08 22:09:16 UTC (rev 28456)
+++
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
2012-03-08 22:10:15 UTC (rev 28457)
@@ -92,6 +92,8 @@
import org.cytoscape.task.internal.table.CopyValueToEntireColumnTaskFactory;
import org.cytoscape.task.internal.table.DeleteColumnTaskFactory;
import org.cytoscape.task.internal.table.DeleteTableTaskFactory;
+import org.cytoscape.task.internal.table.MapGlobalToLocalTableTask;
+import org.cytoscape.task.internal.table.MapGlobalToLocalTableTaskFactory;
import org.cytoscape.task.internal.table.RenameColumnTaskFactory;
import org.cytoscape.task.internal.title.EditNetworkTitleTaskFactory;
import org.cytoscape.task.internal.zoom.FitContentTaskFactory;
@@ -231,6 +233,18 @@
GroupNodeContextTaskFactory expandGroupTaskFactory = new
GroupNodeContextTaskFactory(cyGroupManager, false);
+ MapGlobalToLocalTableTaskFactory mapGlobal = new
MapGlobalToLocalTableTaskFactory(cyTableManagerServiceRef,
cyNetworkManagerServiceRef);
+
+ Properties mapGlobalProps = new Properties();
+
mapGlobalProps.setProperty("id","mapGlobalToLocalTableTaskFactory");
+ mapGlobalProps.setProperty("preferredMenu","Tools");
+ mapGlobalProps.setProperty("accelerator","cmd m");
+ mapGlobalProps.setProperty("title", "Map Global Table to Local
Table");
+ mapGlobalProps.setProperty("menuGravity","1.0");
+ mapGlobalProps.setProperty("toolBarGravity","3.0");
+ mapGlobalProps.setProperty("inToolBar","false");
+ registerAllServices(bc, mapGlobal, mapGlobalProps);
+
Properties loadNetworkFileTaskFactoryProps = new Properties();
loadNetworkFileTaskFactoryProps.setProperty("id","loadNetworkFileTaskFactory");
loadNetworkFileTaskFactoryProps.setProperty("preferredMenu","File.Import.Network");
Added:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/table/MapGlobalToLocalTableTask.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/table/MapGlobalToLocalTableTask.java
(rev 0)
+++
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/table/MapGlobalToLocalTableTask.java
2012-03-08 22:10:15 UTC (rev 28457)
@@ -0,0 +1,87 @@
+package org.cytoscape.task.internal.table;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.cytoscape.model.CyColumn;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableEntry;
+import org.cytoscape.model.CyTableManager;
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.Tunable;
+import org.cytoscape.work.util.ListSingleSelection;
+
+/**
+ * Very simple mapping function. Simply map all available columns in the global
+ * table to selected local one.
+ *
+ */
+public final class MapGlobalToLocalTableTask extends AbstractTask {
+
+ @Tunable(description = "Select a Global Table:")
+ public final ListSingleSelection<String> globalTables;
+
+ @Tunable(description = "Map selected Global Table to:")
+ public final ListSingleSelection<String> localTables;
+
+ private final Map<String, CyTable> name2tableMap;
+
+ MapGlobalToLocalTableTask(final CyTableManager tableManager, final
CyNetworkManager networkManager) {
+
+ final Set<CyNetwork> allNetworks =
networkManager.getNetworkSet();
+ if (allNetworks.size() == 0)
+ throw new IllegalStateException("No network in current
session. You need at least one network.");
+
+ this.name2tableMap = new HashMap<String, CyTable>();
+
+ final List<String> locals = new ArrayList<String>();
+ final List<String> globals = new ArrayList<String>();
+
+ for (final CyNetwork network : allNetworks) {
+ locals.add(network.getDefaultNodeTable().getTitle());
+ locals.add(network.getDefaultEdgeTable().getTitle());
+ locals.add(network.getDefaultNetworkTable().getTitle());
+ }
+
+ final Set<CyTable> allTables = tableManager.getAllTables(false);
+ for (final CyTable table : allTables) {
+ name2tableMap.put(table.getTitle(), table);
+ if (locals.contains(table.getTitle()) == false)
+ globals.add(table.getTitle());
+ }
+
+ if (globals.size() == 0)
+ throw new IllegalStateException("No Global Table in
current session!");
+
+ this.localTables = new ListSingleSelection<String>(locals);
+ this.globalTables = new ListSingleSelection<String>(globals);
+
+ this.localTables.setSelectedValue(locals.get(0));
+ this.globalTables.setSelectedValue(globals.get(0));
+
+ }
+
+ @Override
+ public void run(TaskMonitor taskMonitor) throws Exception {
+ final CyTable globalTable =
name2tableMap.get(globalTables.getSelectedValue());
+ final CyTable localTable =
name2tableMap.get(localTables.getSelectedValue());
+ mapTable(localTable, globalTable);
+ }
+
+ private void mapTable(final CyTable localTable, final CyTable
globalTable) {
+
+ if (globalTable.getPrimaryKey().getType() != String.class)
+ throw new IllegalStateException("Local table's primary
key should be type String!");
+
+ final CyColumn trgCol = localTable.getColumn(CyTableEntry.NAME);
+ if (trgCol != null)
+ localTable.addVirtualColumns(globalTable,
CyTableEntry.NAME, false);
+ }
+
+}
Added:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/table/MapGlobalToLocalTableTaskFactory.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/table/MapGlobalToLocalTableTaskFactory.java
(rev 0)
+++
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/table/MapGlobalToLocalTableTaskFactory.java
2012-03-08 22:10:15 UTC (rev 28457)
@@ -0,0 +1,23 @@
+package org.cytoscape.task.internal.table;
+
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyTableManager;
+import org.cytoscape.work.TaskFactory;
+import org.cytoscape.work.TaskIterator;
+
+public final class MapGlobalToLocalTableTaskFactory implements TaskFactory {
+
+ private final CyTableManager tableManager;
+ private final CyNetworkManager networkManager;
+
+ public MapGlobalToLocalTableTaskFactory(final CyTableManager
tableManager, final CyNetworkManager networkManager) {
+ this.tableManager = tableManager;
+ this.networkManager = networkManager;
+ }
+
+ @Override
+ public TaskIterator createTaskIterator() {
+ return new TaskIterator(new
MapGlobalToLocalTableTask(tableManager, networkManager));
+ }
+
+}
--
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.