Author: jm
Date: 2011-05-11 11:41:00 -0700 (Wed, 11 May 2011)
New Revision: 25009

Added:
   core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableMetadata.java
   
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableMetadataImpl.java
   
core3/session-api/trunk/src/test/java/org/cytoscape/session/CyTableMetadataImpl.java
Modified:
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/loaddatatable/FinalStatusMessageUpdateTask.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVCyWriter.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVTableWriterFactory.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterImpl.java
   
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
   core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
   core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableManager.java
   
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableManagerImpl.java
   core3/session-api/trunk/src/main/java/org/cytoscape/session/CySession.java
   
core3/session-api/trunk/src/test/java/org/cytoscape/session/CySessionTest.java
   
core3/session-impl/trunk/src/main/java/org/cytoscape/session/internal/CySessionManagerImpl.java
   
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/TableChooser.java
Log:
Added support for serializing non-public tables to session file

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/loaddatatable/FinalStatusMessageUpdateTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/loaddatatable/FinalStatusMessageUpdateTask.java
        2011-05-11 15:46:09 UTC (rev 25008)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/loaddatatable/FinalStatusMessageUpdateTask.java
        2011-05-11 18:41:00 UTC (rev 25009)
@@ -1,15 +1,14 @@
 package org.cytoscape.task.internal.loaddatatable;
 
 
+import java.util.Set;
+
+import org.cytoscape.io.read.CyTableReader;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.model.CyTableManager;
-import org.cytoscape.io.read.CyTableReaderManager;
-import org.cytoscape.io.read.CyTableReader;
+import org.cytoscape.model.CyTableMetadata;
 import org.cytoscape.work.AbstractTask;
 import org.cytoscape.work.TaskMonitor;
-import org.cytoscape.work.Tunable;
-import java.util.Set;
-import java.util.Iterator;
 
 
 class FinalStatusMessageUpdateTask extends AbstractTask {
@@ -44,11 +43,10 @@
        private CyTable getTableByTitle(CyTableManager tableMgr, String 
tableTitle){
                CyTable retValue = null;
 
-               Set<CyTable> tableSet = tableMgr.getAllTables(false);
+               Set<CyTableMetadata> tableSet = tableMgr.getAllTables(false);
 
-               Iterator<CyTable> it = tableSet.iterator();
-               while (it.hasNext()){
-                       CyTable tbl= it.next();
+               for (CyTableMetadata metadata : tableSet){
+                       CyTable tbl= metadata.getCyTable();
                        if(tbl.getTitle().equalsIgnoreCase(tableTitle)){
                                retValue = tbl;
                                break;

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVCyWriter.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVCyWriter.java
    2011-05-11 15:46:09 UTC (rev 25008)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVCyWriter.java
    2011-05-11 18:41:00 UTC (rev 25009)
@@ -18,12 +18,14 @@
 
 public class CSVCyWriter implements CyWriter {
 
-       private OutputStream outputStream;
-       private CyTable table;
+       private final OutputStream outputStream;
+       private final CyTable table;
+       private final boolean writeSchema;
 
-       public CSVCyWriter(OutputStream outputStream, CyTable table) {
+       public CSVCyWriter(OutputStream outputStream, CyTable table, boolean 
writeSchema) {
                this.outputStream = outputStream;
                this.table = table;
+               this.writeSchema = writeSchema;
        }
 
        @Override
@@ -38,16 +40,40 @@
                        Collections.sort(columns, new Comparator<CyColumn>() {
                                @Override
                                public int compare(CyColumn o1, CyColumn o2) {
+                                       // First column should be primary key
+                                       if (o1.isPrimaryKey()) {
+                                               return -1;
+                                       }
+                                       if (o2.isPrimaryKey()) {
+                                               return 1;
+                                       }
                                        return 
o1.getName().compareToIgnoreCase(o2.getName());
                                }
                        });
                        writeHeader(writer, columns);
+                       if (writeSchema) {
+                               writeSchema(writer, columns);
+                       }
                        writeValues(writer, columns);
                } finally {
                        writer.flush();
                }
        }
        
+       private void writeSchema(CSVWriter writer, List<CyColumn> columns) {
+               String[] values = new String[columns.size()];
+               for (int i = 0; i < columns.size(); i++) {
+                       CyColumn column = columns.get(i);
+                       Class<?> type = column.getType();
+                       if (List.class.isAssignableFrom(type)) {
+                               values[i] = String.format("%s<%s>", 
List.class.getCanonicalName(), column.getListElementType().getCanonicalName());
+                       } else {
+                               values[i] = type.getCanonicalName();
+                       }
+               }
+               writer.writeNext(values);
+       }
+
        private void writeValues(CSVWriter writer, Collection<CyColumn> 
columns) {
                for (CyRow row : table.getAllRows()) {
                        String[] values = new String[columns.size()];

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVTableWriterFactory.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVTableWriterFactory.java
  2011-05-11 15:46:09 UTC (rev 25008)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVTableWriterFactory.java
  2011-05-11 18:41:00 UTC (rev 25009)
@@ -6,12 +6,15 @@
 
 public class CSVTableWriterFactory extends AbstractCyTableWriterFactory {
 
-       public CSVTableWriterFactory(CyFileFilter fileFilter) {
+       private final boolean writeSchema;
+
+       public CSVTableWriterFactory(CyFileFilter fileFilter, boolean 
writeSchema) {
                super(fileFilter);
+               this.writeSchema = writeSchema;
        }
        
        @Override
        public CyWriter getWriterTask() {
-               return new CSVCyWriter(outputStream, table);
+               return new CSVCyWriter(outputStream, table, writeSchema);
        }
 }

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterImpl.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterImpl.java
    2011-05-11 15:46:09 UTC (rev 25008)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterImpl.java
    2011-05-11 18:41:00 UTC (rev 25009)
@@ -39,6 +39,7 @@
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
 import java.net.URISyntaxException;
 import java.net.URLEncoder;
 import java.text.DateFormat;
@@ -62,6 +63,7 @@
 import org.cytoscape.io.write.CyWriter;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableMetadata;
 import org.cytoscape.property.session.Cysession;
 import org.cytoscape.property.session.Cytopanels;
 import org.cytoscape.property.session.Network;
@@ -266,7 +268,7 @@
        private void zipNetwork(final CyNetworkView view) throws Exception {
                final CyNetwork network = view.getModel();
 
-               String xgmmlFile = getValidFileName( 
network.getCyRow().get("name",String.class) + XGMML_EXT );
+               String xgmmlFile = getNetworkFileName(network) + XGMML_EXT;
                zos.putNextEntry(new ZipEntry(sessionDir + xgmmlFile) );
 
                // Write the XGMML file *without* our graphics attributes
@@ -279,6 +281,11 @@
                xgmmlWriter = null;
        }
 
+       private String getNetworkFileName(CyNetwork network) throws 
UnsupportedEncodingException {
+               return escape(network.getCyRow().get("name",String.class));
+       }
+
+
        /**
         * Create cysession.xml file.
         *
@@ -356,20 +363,37 @@
 
        private void zipGlobalTables() throws Exception {
                Set<CyNetworkView> views = session.getNetworkViews();
-               Set<Long> excluded = new HashSet<Long>();
+               Set<Long> excludedTables = new HashSet<Long>();
+               Set<CyNetwork> includedNetworks = new HashSet<CyNetwork>();
                for (CyNetworkView view : views) {
                        CyNetwork network = view.getModel();
-                       
excluded.add(network.getDefaultNetworkTable().getSUID());
-                       excluded.add(network.getDefaultNodeTable().getSUID());
-                       excluded.add(network.getDefaultEdgeTable().getSUID());
+                       includedNetworks.add(network);
+                       
excludedTables.add(network.getDefaultNetworkTable().getSUID());
+                       
excludedTables.add(network.getDefaultNodeTable().getSUID());
+                       
excludedTables.add(network.getDefaultEdgeTable().getSUID());
                }
-               Set<CyTable> tables = session.getTables();
-               for (CyTable table : tables) {
-                       if (excluded.contains(table.getSUID())) {
+               Set<CyTableMetadata> tableData = session.getTables();
+               for (CyTableMetadata metadata : tableData) {
+                       CyTable table = metadata.getCyTable();
+                       if (excludedTables.contains(table.getSUID())) {
                                continue;
                        }
-                       
-                       String fileName = String.format("%d|%s.table", 
table.getSUID(), URLEncoder.encode(table.getTitle(), "UTF-8"));
+
+                       String tableTitle = escape(table.getTitle());
+                       String fileName;
+                       Set<CyNetwork> networks = metadata.getCyNetworks();
+                       if (networks.size() == 0) {
+                               fileName = String.format("global/%s.table", 
tableTitle);
+                       } else {
+                               CyNetwork network = 
findIntersection(includedNetworks, networks);
+                               if (network == null) {
+                                       continue;
+                               }
+                               String networkFileName = 
getNetworkFileName(network);
+                               String namespace = 
escape(metadata.getNamespace());
+                               String type = 
escape(metadata.getType().getCanonicalName());
+                               fileName = String.format("%s/%s-%s-%s.table", 
networkFileName, namespace, type, tableTitle);
+                       }
                        zos.putNextEntry(new ZipEntry(sessionDir + fileName));
                        try {
                                CyWriter writer = 
tableWriterMgr.getWriter(table, tableFilter, zos);
@@ -380,4 +404,17 @@
                }
        }
 
+       private <T> T findIntersection(Set<T> set1, Set<T> set2) {
+               for (T element: set1) {
+                       if (set2.contains(element)) {
+                               return element;
+                       }
+               }
+               return null;
+       }
+
+       private String escape(String text) throws UnsupportedEncodingException {
+               return URLEncoder.encode(text, "UTF-8").replace("-", "%2D");
+       }
+
 }

Modified: 
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
--- 
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml  
    2011-05-11 15:46:09 UTC (rev 25008)
+++ 
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml  
    2011-05-11 18:41:00 UTC (rev 25009)
@@ -190,6 +190,10 @@
                interface="org.cytoscape.io.write.CyTableWriterFactory">
        </osgi:service>
 
+       <osgi:service id="sessionTableWriterFactoryService" 
ref="sessionTableWriterFactory"
+               interface="org.cytoscape.io.write.CyTableWriterFactory">
+       </osgi:service>
+
        <osgi:service id="streamUtilService" ref="streamUtil"
                interface="org.cytoscape.io.util.StreamUtil">
        </osgi:service>

Modified: 
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml   
2011-05-11 15:46:09 UTC (rev 25008)
+++ core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml   
2011-05-11 18:41:00 UTC (rev 25009)
@@ -255,6 +255,25 @@
                </constructor-arg>
        </bean>
 
+       <bean id="sessionTableFilter" 
class="org.cytoscape.io.BasicCyFileFilter">
+               <constructor-arg index="0">
+                       <set>
+                               <value>table</value>
+                       </set>
+               </constructor-arg>
+               <constructor-arg index="1">
+                       <set>
+                               <value>text/plain</value>
+                       </set>
+               </constructor-arg>
+               <constructor-arg value="Session table file" />
+               <constructor-arg type="org.cytoscape.io.DataCategory"
+                       value="TABLE" />
+               <constructor-arg type="org.cytoscape.io.util.StreamUtil">
+                       <ref bean="streamUtil" />
+               </constructor-arg>
+       </bean>
+
        <!-- Utility for Stream/Proxy management -->
        <bean id="readUtil" class="org.cytoscape.io.internal.util.ReadUtils">
                <constructor-arg ref="streamUtil" />
@@ -327,8 +346,15 @@
        <bean id="csvTableWriterFactory"
                
class="org.cytoscape.io.internal.write.datatable.csv.CSVTableWriterFactory">
                <constructor-arg ref="csvFilter" />
+               <constructor-arg value="false" type="boolean" />
        </bean>
 
+       <bean id="sessionTableWriterFactory"
+               
class="org.cytoscape.io.internal.write.datatable.csv.CSVTableWriterFactory">
+               <constructor-arg ref="sessionTableFilter" />
+               <constructor-arg value="true" type="boolean" />
+       </bean>
+       
        <!-- Utilities for XGMML Reader -->
 
        <bean id="objectTypeMap" 
class="org.cytoscape.io.internal.read.xgmml.ObjectTypeMap" />
@@ -398,7 +424,7 @@
                <constructor-arg ref="bookmarksFilter" />
                <constructor-arg ref="cysessionFilter" />
                <constructor-arg ref="propertiesFilter" />
-               <constructor-arg ref="csvFilter" />
+               <constructor-arg ref="sessionTableFilter" />
                <constructor-arg ref="networkViewWriterManager" />
                <constructor-arg ref="propertyWriterManager" />
                <constructor-arg ref="tableWriterManager" />

Modified: 
core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableManager.java
===================================================================
--- core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableManager.java 
2011-05-11 15:46:09 UTC (rev 25008)
+++ core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableManager.java 
2011-05-11 18:41:00 UTC (rev 25009)
@@ -57,7 +57,7 @@
         * including private CyTables (i.e. meaning all possible
         * CyTables) or just public CyTables.
         */
-       Set<CyTable> getAllTables(boolean includePrivate);
+       Set<CyTableMetadata> getAllTables(boolean includePrivate);
 
        /**
         * Returns the table with the specified SUID. 

Added: 
core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableMetadata.java
===================================================================
--- 
core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableMetadata.java    
                            (rev 0)
+++ 
core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableMetadata.java    
    2011-05-11 18:41:00 UTC (rev 25009)
@@ -0,0 +1,10 @@
+package org.cytoscape.model;
+
+import java.util.Set;
+
+public interface CyTableMetadata {
+       Class<?> getType();
+       CyTable getCyTable();
+       Set<CyNetwork> getCyNetworks();
+       String getNamespace();
+}


Property changes on: 
core3/model-api/trunk/src/main/java/org/cytoscape/model/CyTableMetadata.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Modified: 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableManagerImpl.java
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableManagerImpl.java
      2011-05-11 15:46:09 UTC (rev 25008)
+++ 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableManagerImpl.java
      2011-05-11 18:41:00 UTC (rev 25009)
@@ -30,6 +30,7 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 
 import org.cytoscape.event.CyEventHelper;
@@ -39,6 +40,7 @@
 import org.cytoscape.model.CyTable;
 import org.cytoscape.model.CyTable.Mutability;
 import org.cytoscape.model.CyTableManager;
+import org.cytoscape.model.CyTableMetadata;
 import org.cytoscape.model.events.NetworkAboutToBeDestroyedEvent;
 import org.cytoscape.model.events.NetworkAboutToBeDestroyedListener;
 import org.cytoscape.model.events.TableAboutToBeDeletedEvent;
@@ -113,19 +115,43 @@
     }
 
     @Override
-    public synchronized Set<CyTable> getAllTables(final boolean 
includePrivate) {
-       Set<CyTable> res = new HashSet<CyTable>();
+    public synchronized Set<CyTableMetadata> getAllTables(final boolean 
includePrivate) {
+       Set<CyTableMetadata> res = new HashSet<CyTableMetadata>();
 
        for (Long key : tables.keySet()) {
-           if (includePrivate)
-               res.add(tables.get(key));
-           else if (tables.get(key).isPublic())
-               res.add(tables.get(key));
+           if (includePrivate || tables.get(key).isPublic())
+               res.add(createMetadata(tables.get(key)));
        }
        return res;
     }
 
-    @Override
+    private CyTableMetadata createMetadata(CyTable cyTable) {
+       Class<?> entryType = null;
+       String entryNamespace = null;
+       Set<CyNetwork> networks = new HashSet<CyNetwork>();
+       for (Entry<Class<?>, Map<CyNetwork, Map<String, CyTable>>> mapEntry : 
networkTableMap.entrySet()) {
+           Class<?> type = mapEntry.getKey();
+           Map<CyNetwork, Map<String, CyTable>> networkMap = 
mapEntry.getValue();
+           for (Entry<CyNetwork, Map<String, CyTable>> entry : 
networkMap.entrySet()) {
+               CyNetwork network = entry.getKey();
+               for (Entry<String, CyTable> tableEntry : 
entry.getValue().entrySet()) {
+                   String namespace = tableEntry.getKey();
+                   CyTable table = tableEntry.getValue();
+                   if (table.getSUID() == cyTable.getSUID()) {
+                       entryType = type;
+                       entryNamespace = namespace;
+                       networks.add(network);
+                   }
+               }
+           }
+       }
+       if (networks.size() > 0) {
+           return new CyTableMetadataImpl(entryType, cyTable, networks, 
entryNamespace);
+       }
+       return new CyTableMetadataImpl(null, cyTable, networks, null);
+    }
+
+       @Override
     public synchronized CyTable getTable(final long suid) {
        return tables.get(suid);
     }

Added: 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableMetadataImpl.java
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableMetadataImpl.java
                             (rev 0)
+++ 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableMetadataImpl.java
     2011-05-11 18:41:00 UTC (rev 25009)
@@ -0,0 +1,43 @@
+package org.cytoscape.model.internal;
+
+import java.util.Set;
+
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableMetadata;
+
+public class CyTableMetadataImpl implements CyTableMetadata {
+
+       private final Class<?> type;
+       private final CyTable table;
+       private final Set<CyNetwork> networks;
+       private final String namespace;
+
+       public CyTableMetadataImpl(Class<?> type, CyTable table, Set<CyNetwork> 
networks, String namespace) {
+               this.type = type;
+               this.table = table;
+               this.networks = networks;
+               this.namespace = namespace;
+       }
+       
+       @Override
+       public Class<?> getType() {
+               return type;
+       }
+       
+       @Override
+       public CyTable getCyTable() {
+               return table;
+       }
+
+       @Override
+       public Set<CyNetwork> getCyNetworks() {
+               return networks;
+       }
+
+       @Override
+       public String getNamespace() {
+               return namespace;
+       }
+
+}


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

Modified: 
core3/session-api/trunk/src/main/java/org/cytoscape/session/CySession.java
===================================================================
--- core3/session-api/trunk/src/main/java/org/cytoscape/session/CySession.java  
2011-05-11 15:46:09 UTC (rev 25008)
+++ core3/session-api/trunk/src/main/java/org/cytoscape/session/CySession.java  
2011-05-11 18:41:00 UTC (rev 25009)
@@ -28,9 +28,8 @@
  */
 package org.cytoscape.session;
 
-import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableMetadata;
 import org.cytoscape.view.model.CyNetworkView;
-import org.cytoscape.view.vizmap.VisualStyle;
 import org.cytoscape.property.bookmark.Bookmarks;
 import org.cytoscape.property.session.Cysession;
 import java.util.Properties;
@@ -66,7 +65,7 @@
 public final class CySession {
 
        private final Set<CyNetworkView> netViews;
-       private final Set<CyTable> tables;
+       private final Set<CyTableMetadata> tables;
        private final Map<CyNetworkView,String> vsMap;
        private final Properties cyProps;
        private final Properties vProps;
@@ -85,7 +84,7 @@
                        netViews = b.netViews;
 
                if ( b.tables == null )
-                       tables = new HashSet<CyTable>();
+                       tables = new HashSet<CyTableMetadata>();
                else 
                        tables = b.tables;
 
@@ -127,7 +126,7 @@
        public static class Builder {
 
                private Set<CyNetworkView> netViews; 
-               private Set<CyTable> tables;
+               private Set<CyTableMetadata> tables;
                private Map<CyNetworkView,String> vsMap; 
                private Properties cyProps;
                private Properties vProps; 
@@ -158,13 +157,13 @@
                /**
                 * Returns an instance of Builder that has at least been 
configured
                 * with the specified tables.
-                * @param t A Set of CyTable objects, presumably all tables
+                * @param tables2 A Set of CyTable objects, presumably all 
tables
                 * that exist in this instance of Cytoscape.
                 * @return An instance of Builder that has at least been 
configured
                 * with the specified tables.
                 */
-       public Builder tables(final Set<CyTable> t) { 
-                       tables = t; 
+       public Builder tables(final Set<CyTableMetadata> tables2) { 
+                       tables = tables2; 
                        return this;
                }
 
@@ -258,7 +257,7 @@
         * Returns a set of all CyTable objects contained in this Session. 
         * @return A set of all CyTable objects contained in this Session. 
         */
-    public Set<CyTable> getTables() { return tables; }
+    public Set<CyTableMetadata> getTables() { return tables; }
 
        /**
         * Returns a map of CyNetworkViews to the names of the VisualStyle

Modified: 
core3/session-api/trunk/src/test/java/org/cytoscape/session/CySessionTest.java
===================================================================
--- 
core3/session-api/trunk/src/test/java/org/cytoscape/session/CySessionTest.java  
    2011-05-11 15:46:09 UTC (rev 25008)
+++ 
core3/session-api/trunk/src/test/java/org/cytoscape/session/CySessionTest.java  
    2011-05-11 18:41:00 UTC (rev 25009)
@@ -1,17 +1,25 @@
 package org.cytoscape.session;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
 
-import java.util.*;
 import java.io.File;
-import org.cytoscape.view.model.CyNetworkView;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
 import org.cytoscape.model.CyTable;
-import org.cytoscape.session.CySession;
+import org.cytoscape.model.CyTableMetadata;
+import org.cytoscape.property.bookmark.Bookmarks;
 import org.cytoscape.property.session.Cysession;
-import org.cytoscape.property.bookmark.Bookmarks;
-import org.junit.Before;
+import org.cytoscape.view.model.CyNetworkView;
 import org.junit.Test;
-import static org.mockito.Mockito.*;
 
 public class CySessionTest {
 
@@ -72,17 +80,19 @@
                CyTable t1 = mock(CyTable.class); 
                CyTable t2 = mock(CyTable.class); 
 
-               Set<CyTable> ts = new HashSet<CyTable>();
-               ts.add( t1 );
-               ts.add( t2 );
+               Set<CyTableMetadata> ts = new HashSet<CyTableMetadata>();
+               CyTableMetadataImpl m1 = new CyTableMetadataImpl(t1);
+               CyTableMetadataImpl m2 = new CyTableMetadataImpl(t2);
+               ts.add( m1 );
+               ts.add( m2 );
 
                session = new CySession.Builder().tables( ts ).build();
 
                assertNotNull(session);
                assertNotNull(session.getTables());
                assertEquals(2,session.getTables().size());
-               assertTrue(session.getTables().contains( t1 ));
-               assertTrue(session.getTables().contains( t2 ));
+               assertTrue(session.getTables().contains( m1 ));
+               assertTrue(session.getTables().contains( m2 ));
        }
        
        @Test

Added: 
core3/session-api/trunk/src/test/java/org/cytoscape/session/CyTableMetadataImpl.java
===================================================================
--- 
core3/session-api/trunk/src/test/java/org/cytoscape/session/CyTableMetadataImpl.java
                                (rev 0)
+++ 
core3/session-api/trunk/src/test/java/org/cytoscape/session/CyTableMetadataImpl.java
        2011-05-11 18:41:00 UTC (rev 25009)
@@ -0,0 +1,46 @@
+package org.cytoscape.session;
+
+import java.util.Set;
+
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableMetadata;
+
+public class CyTableMetadataImpl implements CyTableMetadata {
+
+       private CyTable table;
+
+       public CyTableMetadataImpl(CyTable table) {
+               this.table = table;
+       }
+
+       @Override
+       public boolean equals(Object obj) {
+               return getCyTable().equals(((CyTableMetadata) 
obj).getCyTable());
+       }
+       
+       @Override
+       public int hashCode() {
+               return getCyTable().hashCode();
+       }
+
+       @Override
+       public Class<?> getType() {
+               return null;
+       }
+
+       @Override
+       public CyTable getCyTable() {
+               return table;
+       }
+
+       @Override
+       public Set<CyNetwork> getCyNetworks() {
+               return null;
+       }
+
+       @Override
+       public String getNamespace() {
+               return null;
+       }
+}


Property changes on: 
core3/session-api/trunk/src/test/java/org/cytoscape/session/CyTableMetadataImpl.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Modified: 
core3/session-impl/trunk/src/main/java/org/cytoscape/session/internal/CySessionManagerImpl.java
===================================================================
--- 
core3/session-impl/trunk/src/main/java/org/cytoscape/session/internal/CySessionManagerImpl.java
     2011-05-11 15:46:09 UTC (rev 25008)
+++ 
core3/session-impl/trunk/src/main/java/org/cytoscape/session/internal/CySessionManagerImpl.java
     2011-05-11 18:41:00 UTC (rev 25009)
@@ -42,15 +42,15 @@
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Properties;
 import java.util.Set;
-import java.util.Map.Entry;
 
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNetworkManager;
-import org.cytoscape.model.CyTable;
 import org.cytoscape.model.CyTableManager;
+import org.cytoscape.model.CyTableMetadata;
 import org.cytoscape.property.CyProperty;
 import org.cytoscape.property.bookmark.Bookmarks;
 import org.cytoscape.property.session.Cysession;
@@ -121,7 +121,7 @@
 
         Map<String, List<File>> pluginMap = savingEvent.getPluginFileListMap();
 
-        Set<CyTable> tables = tblMgr.getAllTables(true);
+        Set<CyTableMetadata> tables = tblMgr.getAllTables(true);
         Set<CyNetworkView> netViews = nvMgr.getNetworkViewSet();
 
         Set<VisualStyle> allStyles = vmMgr.getAllVisualStyles();

Modified: 
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/TableChooser.java
===================================================================
--- 
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/TableChooser.java
       2011-05-11 15:46:09 UTC (rev 25008)
+++ 
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/TableChooser.java
       2011-05-11 18:41:00 UTC (rev 25009)
@@ -2,19 +2,19 @@
 
 
 import java.awt.Component;
-
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
 import javax.swing.JLabel;
 import javax.swing.JList;
-import javax.swing.JComboBox;
 import javax.swing.ListCellRenderer;
 
 import org.cytoscape.model.CyNetwork;
@@ -22,6 +22,7 @@
 import org.cytoscape.model.CyTable;
 import org.cytoscape.model.CyTableEntry;
 import org.cytoscape.model.CyTableManager;
+import org.cytoscape.model.CyTableMetadata;
 
 
 public class TableChooser extends JComboBox {
@@ -50,10 +51,11 @@
                this.networkManager   = networkManager;
                this.tableToStringMap = tableToStringMap;
 
-               oldSet = tableManager.getAllTables(/* includePrivate = */ 
false);
-               tables = new ArrayList<CyTable>(oldSet.size());
-               for (final CyTable table : oldSet)
-                       tables.add(table);
+               oldSet = new HashSet<CyTable>();
+               for (CyTableMetadata metadata : tableManager.getAllTables(/* 
includePrivate = */ false)) {
+                       oldSet.add(metadata.getCyTable());
+               }
+               tables = new ArrayList<CyTable>(oldSet);
                Collections.sort(tables, tableComparator);
                updateTableToStringMap();
        }
@@ -73,7 +75,10 @@
        }
 
        public int getSize() {
-               final Set<CyTable> tableSet = tableManager.getAllTables(/* 
includePrivate = */ false);
+               final Set<CyTable> tableSet = new HashSet<CyTable>();
+               for (CyTableMetadata metadata : tableManager.getAllTables(/* 
includePrivate = */ false)) {
+                       tableSet.add(metadata.getCyTable());
+               }
                if (!tableSet.equals(oldSet)) {
                        oldSet = tableSet;
                        fireContentsChanged(this, 0, tableSet.size() - 1);

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