Author: jm
Date: 2011-05-04 09:33:36 -0700 (Wed, 04 May 2011)
New Revision: 24917
Added:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/AbstractCyTableWriterFactory.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/
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
Modified:
core3/gui-distribution/trunk/startlevel-3/pom.xml
core3/io-impl/trunk/pom.xml
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
Log:
Implemented table serialization to Excel CSV format
List attributes are saved as multiline cells
Modified: core3/gui-distribution/trunk/startlevel-3/pom.xml
===================================================================
--- core3/gui-distribution/trunk/startlevel-3/pom.xml 2011-05-04 14:16:26 UTC
(rev 24916)
+++ core3/gui-distribution/trunk/startlevel-3/pom.xml 2011-05-04 16:33:36 UTC
(rev 24917)
@@ -108,6 +108,11 @@
<artifactId>l2fprod-common-fontchooser</artifactId>
<version>7.3</version>
</dependency>
+ <dependency>
+ <groupId>cytoscape-temp</groupId>
+ <artifactId>opencsv</artifactId>
+ <version>2.1</version>
+ </dependency>
<!-- Cytoscape API Bundles -->
<dependency>
Modified: core3/io-impl/trunk/pom.xml
===================================================================
--- core3/io-impl/trunk/pom.xml 2011-05-04 14:16:26 UTC (rev 24916)
+++ core3/io-impl/trunk/pom.xml 2011-05-04 16:33:36 UTC (rev 24917)
@@ -114,11 +114,6 @@
</dependency>
<dependency>
<groupId>org.cytoscape</groupId>
- <artifactId>io-api</artifactId>
- <version>3.0.0-alpha3-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.cytoscape</groupId>
<artifactId>property-api</artifactId>
<version>3.0.0-alpha4-SNAPSHOT</version>
</dependency>
@@ -155,6 +150,11 @@
<artifactId>jaxb-impl</artifactId>
<version>2.2.1</version>
</dependency>
+ <dependency>
+ <groupId>cytoscape-temp</groupId>
+ <artifactId>opencsv</artifactId>
+ <version>2.1</version>
+ </dependency>
<!-- For Testing -->
<dependency>
Added:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/AbstractCyTableWriterFactory.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/AbstractCyTableWriterFactory.java
(rev 0)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/AbstractCyTableWriterFactory.java
2011-05-04 16:33:36 UTC (rev 24917)
@@ -0,0 +1,34 @@
+package org.cytoscape.io.internal.write.datatable;
+
+import java.io.OutputStream;
+
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.write.CyTableWriterFactory;
+import org.cytoscape.model.CyTable;
+
+public abstract class AbstractCyTableWriterFactory implements
CyTableWriterFactory {
+
+ protected OutputStream outputStream;
+ protected CyTable table;
+ private CyFileFilter fileFilter;
+
+ protected AbstractCyTableWriterFactory(CyFileFilter fileFilter) {
+ this.fileFilter = fileFilter;
+ }
+
+ @Override
+ public void setOutputStream(OutputStream outputStream) {
+ this.outputStream = outputStream;
+ }
+
+ @Override
+ public CyFileFilter getCyFileFilter() {
+ return fileFilter;
+ }
+
+ @Override
+ public void setTable(CyTable table) {
+ this.table = table;
+ }
+
+}
Property changes on:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/AbstractCyTableWriterFactory.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
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
(rev 0)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVCyWriter.java
2011-05-04 16:33:36 UTC (rev 24917)
@@ -0,0 +1,94 @@
+package org.cytoscape.io.internal.write.datatable.csv;
+
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.cytoscape.io.write.CyWriter;
+import org.cytoscape.model.CyColumn;
+import org.cytoscape.model.CyRow;
+import org.cytoscape.model.CyTable;
+import org.cytoscape.work.TaskMonitor;
+
+import au.com.bytecode.opencsv.CSVWriter;
+
+public class CSVCyWriter implements CyWriter {
+
+ private OutputStream outputStream;
+ private CyTable table;
+
+ public CSVCyWriter(OutputStream outputStream, CyTable table) {
+ this.outputStream = outputStream;
+ this.table = table;
+ }
+
+ @Override
+ public void cancel() {
+ }
+
+ @Override
+ public void run(TaskMonitor taskMonitor) throws Exception {
+ CSVWriter writer = new CSVWriter(new
OutputStreamWriter(outputStream), ',', '"', "\r\n");
+ try {
+ List<CyColumn> columns = new
ArrayList<CyColumn>(table.getColumns());
+ Collections.sort(columns, new Comparator<CyColumn>() {
+ @Override
+ public int compare(CyColumn o1, CyColumn o2) {
+ return
o1.getName().compareToIgnoreCase(o2.getName());
+ }
+ });
+ writeHeader(writer, columns);
+ writeValues(writer, columns);
+ } finally {
+ writer.close();
+ }
+ }
+
+ private void writeValues(CSVWriter writer, Collection<CyColumn>
columns) {
+ for (CyRow row : table.getAllRows()) {
+ String[] values = new String[columns.size()];
+ int index = 0;
+ for (CyColumn column : columns) {
+ Class<?> type = column.getType();
+ if (type.equals(List.class)) {
+ StringBuilder builder = new
StringBuilder();
+ boolean first = true;
+ List<?> list =
row.getList(column.getName(), column.getListElementType());
+ if (list != null) {
+ for (Object value : list) {
+ if (!first) {
+
builder.append("\r");
+ }
+ if (value != null) {
+
builder.append(value);
+ }
+ first = false;
+ }
+ values[index] =
builder.toString();
+ }
+ } else {
+ Object value =
row.get(column.getName(), type);
+ if (value != null) {
+ values[index] =
value.toString();
+ } else {
+ values[index] = null;
+ }
+ }
+ index++;
+ }
+ writer.writeNext(values);
+ }
+ }
+
+ private void writeHeader(CSVWriter writer, List<CyColumn> columns) {
+ String[] values = new String[columns.size()];
+ for (int i = 0; i < columns.size(); i++) {
+ values[i] = columns.get(i).getName();
+ }
+ writer.writeNext(values);
+ }
+}
Property changes on:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVCyWriter.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
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
(rev 0)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVTableWriterFactory.java
2011-05-04 16:33:36 UTC (rev 24917)
@@ -0,0 +1,17 @@
+package org.cytoscape.io.internal.write.datatable.csv;
+
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.internal.write.datatable.AbstractCyTableWriterFactory;
+import org.cytoscape.io.write.CyWriter;
+
+public class CSVTableWriterFactory extends AbstractCyTableWriterFactory {
+
+ public CSVTableWriterFactory(CyFileFilter fileFilter) {
+ super(fileFilter);
+ }
+
+ @Override
+ public CyWriter getWriterTask() {
+ return new CSVCyWriter(outputStream, table);
+ }
+}
Property changes on:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVTableWriterFactory.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
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-04 14:16:26 UTC (rev 24916)
+++
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2011-05-04 16:33:36 UTC (rev 24917)
@@ -186,6 +186,10 @@
interface="org.cytoscape.io.write.CyPropertyWriterFactory">
</osgi:service>
+ <osgi:service id="csvTableWriterFactoryService"
ref="csvTableWriterFactory"
+ 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-04 14:16:26 UTC (rev 24916)
+++ core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2011-05-04 16:33:36 UTC (rev 24917)
@@ -233,6 +233,24 @@
</constructor-arg>
</bean>
+ <bean id="csvFilter" class="org.cytoscape.io.BasicCyFileFilter">
+ <constructor-arg index="0">
+ <set>
+ <value>csv</value>
+ </set>
+ </constructor-arg>
+ <constructor-arg index="1">
+ <set>
+ <value>text/plain</value>
+ </set>
+ </constructor-arg>
+ <constructor-arg value="CSV 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" />
@@ -292,6 +310,10 @@
<constructor-arg ref="propertiesFilter"/>
</bean>
+ <bean id="csvTableWriterFactory"
class="org.cytoscape.io.internal.write.datatable.csv.CSVTableWriterFactory">
+ <constructor-arg ref="csvFilter"/>
+ </bean>
+
<!-- Utilities for XGMML Reader -->
<bean id="objectTypeMap"
class="org.cytoscape.io.internal.read.xgmml.ObjectTypeMap" />
--
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.