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.

Reply via email to