package org.cytoscape.rest.internal.serializer; import java.util.Collection; import java.util.List; import org.cytoscape.model.CyColumn; import org.cytoscape.model.CyRow; import org.cytoscape.model.CyTable; public class CyTableSerializer { private String SEP = ","; public String toCSV(final CyTable table, final String sep) throws Exception { String separator = sep; System.out.println(separator); if(separator == null) { separator = SEP; } final StringBuilder builder = new StringBuilder(); final Collection<CyColumn> columns = table.getColumns(); final int colLength = columns.size(); // Rows to be serialized final List<CyRow> rows = table.getAllRows(); int idx = 1; // Add header for (final CyColumn column : columns) { builder.append(column.getName()); if (idx == colLength) { builder.append("\n"); } else { builder.append(separator); } idx++; } for (final CyRow row : rows) { idx = 1; for (final CyColumn column : columns) { final Class<?> type = column.getType(); if (type != List.class) { final Object value = row.get(column.getName(), type); if (value != null) { builder.append(value.toString()); } } else { final List<?> listValue = row.getList(column.getName(), column.getListElementType()); builder.append(listToString(listValue)); } if (idx == colLength) { builder.append("\n"); } else { builder.append(separator); } idx++; } } return builder.toString(); } private final String listToString(final List<?> listCell) { if (listCell == null) { return ""; } final StringBuilder listBuilder = new StringBuilder(); for (final Object item : listCell) { if (item != null) { listBuilder.append(item.toString()); listBuilder.append("|"); } } final String cellString = listBuilder.toString(); if (cellString != null && cellString.isEmpty() == false) { return cellString.substring(0, cellString.length() - 1); } else { return ""; } } }