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.