package org.cytoscape.rest.internal.resource; import java.util.Set; import javax.inject.Singleton; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.cytoscape.model.CyNetwork; import com.qmino.miredot.annotations.ReturnType; @Singleton @Path("/v1/networks.json") public class NetworkFullResource extends AbstractResource { public NetworkFullResource() { super(); } /** * * Returns full list of network data as a JSON array. * JSON is in <a href="http://cytoscape.github.io/cytoscape.js/">Cytoscape.js</a> * format. If no query parameter is given, returns all networks in current session. * * @summary Get networks in Cytoscape.js JSON format * * @param column Optional. Network table column name to be used for search. * @param query Optional. Search query. * * @return Matched networks in Cytoscape.js JSON. If no query is given, all networks. * */ @GET @Path("/") @Produces(MediaType.APPLICATION_JSON + "; charset=UTF-8") @ReturnType("java.util.List<org.cytoscape.rest.internal.model.CyJsNetwork>") public String getNetworks(@QueryParam("column") String column, @QueryParam("query") String query) { Set<CyNetwork> networks; if (column == null && query == null) { networks = networkManager.getNetworkSet(); } else { if(column == null || column.length() == 0) { throw getError("Column name parameter is missing.", new IllegalArgumentException(), Response.Status.INTERNAL_SERVER_ERROR); } if(query == null || query.length() == 0) { throw getError("Query parameter is missing.", new IllegalArgumentException(), Response.Status.INTERNAL_SERVER_ERROR); } networks = getNetworksByQuery(query, column); } return getNetworksAsString(networks); } private final String getNetworksAsString(final Set<CyNetwork> networks) { if (networks.isEmpty()) { return "[]"; } final StringBuilder result = new StringBuilder(); result.append("["); for (final CyNetwork network : networks) { result.append(getNetworkString(network)); result.append(","); } String jsonString = result.toString(); jsonString = jsonString.substring(0, jsonString.length() - 1); return jsonString + "]"; } }