/* * Copyright 2015-2016 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.opencb.opencga.app.cli.main.executors.catalog; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.commons.datastore.core.QueryResponse; import org.opencb.opencga.app.cli.main.executors.OpencgaCommandExecutor; import org.opencb.opencga.app.cli.main.options.ToolCommandOptions; import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.catalog.models.Tool; import java.io.IOException; /** * Created by imedina on 03/06/16. */ public class ToolCommandExecutor extends OpencgaCommandExecutor { private ToolCommandOptions toolsCommandOptions; public ToolCommandExecutor(ToolCommandOptions toolsCommandOptions) { super(toolsCommandOptions.commonCommandOptions); this.toolsCommandOptions = toolsCommandOptions; } @Override public void execute() throws Exception { logger.debug("Executing tools command line"); String subCommandString = getParsedSubCommand(toolsCommandOptions.jCommander); QueryResponse queryResponse = null; switch (subCommandString) { case "help": queryResponse = help(); break; case "info": queryResponse = info(); break; case "search": queryResponse = search(); break; case "update": queryResponse = update(); break; case "delete": queryResponse = delete(); break; default: logger.error("Subcommand not valid"); break; } createOutput(queryResponse); } private QueryResponse help() throws CatalogException, IOException { logger.debug("Tool help"); System.out.println("PENDING"); return null; } private QueryResponse<Tool> info() throws CatalogException, IOException { logger.debug("Getting tool information"); QueryOptions queryOptions = new QueryOptions(); queryOptions.putIfNotEmpty("id", toolsCommandOptions.infoCommandOptions.id); queryOptions.putIfNotEmpty("execution", toolsCommandOptions.infoCommandOptions.execution); queryOptions.putIfNotEmpty(QueryOptions.INCLUDE, toolsCommandOptions.infoCommandOptions.include); queryOptions.putIfNotEmpty(QueryOptions.EXCLUDE, toolsCommandOptions.infoCommandOptions.exclude); return openCGAClient.getToolClient().get(toolsCommandOptions.infoCommandOptions.id, queryOptions); } private QueryResponse<Tool> search() throws CatalogException, IOException { logger.debug("Searching tool"); Query query = new Query(); query.putIfNotEmpty("id", toolsCommandOptions.searchCommandOptions.id); query.putIfNotEmpty("userId", toolsCommandOptions.searchCommandOptions.userId); query.putIfNotEmpty("alias", toolsCommandOptions.searchCommandOptions.alias); QueryOptions queryOptions = new QueryOptions(); queryOptions.putIfNotEmpty(QueryOptions.INCLUDE, toolsCommandOptions.searchCommandOptions.include); queryOptions.putIfNotEmpty(QueryOptions.EXCLUDE, toolsCommandOptions.searchCommandOptions.exclude); queryOptions.putIfNotEmpty(QueryOptions.LIMIT, toolsCommandOptions.searchCommandOptions.limit); queryOptions.putIfNotEmpty(QueryOptions.SKIP, toolsCommandOptions.searchCommandOptions.skip); queryOptions.put("count", toolsCommandOptions.searchCommandOptions.count); return openCGAClient.getToolClient().search(query, queryOptions); } private QueryResponse<Tool> update() throws CatalogException, IOException { logger.debug("Updating tool"); return openCGAClient.getToolClient().update(toolsCommandOptions.updateCommandOptions.id, null, QueryOptions.empty()); } private QueryResponse<Tool> delete() throws CatalogException, IOException { logger.debug("Deleting tool"); return openCGAClient.getToolClient().delete(toolsCommandOptions.deleteCommandOptions.id, QueryOptions.empty()); } }