/* * 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.options; import com.beust.jcommander.JCommander; import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; import com.beust.jcommander.ParametersDelegate; import static org.opencb.opencga.app.cli.GeneralCliOptions.*; /** * Created by pfurio on 13/06/16. */ @Parameters(commandNames = {"projects"}, commandDescription = "Project commands") public class ProjectCommandOptions { public CreateCommandOptions createCommandOptions; public InfoCommandOptions infoCommandOptions; public StudiesCommandOptions studiesCommandOptions; public UpdateCommandOptions updateCommandOptions; public DeleteCommandOptions deleteCommandOptions; public JCommander jCommander; public CommonCommandOptions commonCommandOptions; public DataModelOptions commonDataModelOptions; public NumericOptions commonNumericOptions; public ProjectCommandOptions(CommonCommandOptions commonCommandOptions, DataModelOptions dataModelOptions, NumericOptions numericOptions, JCommander jCommander) { this.commonCommandOptions = commonCommandOptions; this.commonDataModelOptions = dataModelOptions; this.commonNumericOptions = numericOptions; this.jCommander = jCommander; this.createCommandOptions = new CreateCommandOptions(); this.infoCommandOptions = new InfoCommandOptions(); this.studiesCommandOptions = new StudiesCommandOptions(); this.updateCommandOptions = new UpdateCommandOptions(); this.deleteCommandOptions = new DeleteCommandOptions(); } public class BaseProjectCommand { @ParametersDelegate public CommonCommandOptions commonOptions = commonCommandOptions; @Parameter(names = {"--project"}, description = "Project id or alias", required = true, arity = 1) public String project; } @Parameters(commandNames = {"create"}, commandDescription = "Create a new project") public class CreateCommandOptions { @ParametersDelegate public CommonCommandOptions commonOptions = commonCommandOptions; @Parameter(names = {"-n", "--name"}, description = "Project name", required = true, arity = 1) public String name; @Parameter(names = {"-a", "--alias"}, description = "Alias", required = true, arity = 1) public String alias; @Parameter(names = {"-d", "--description"}, description = "Description", required = false, arity = 1) public String description; @Parameter(names = {"-o", "--organization"}, description = "Organization", required = false, arity = 1) public String organization; @Parameter(names = {"--organism-scientific-name"}, description = "Organism scientific name. Mandatory parameter if not defined " + "in the client configuration file.", required = false, arity = 1) public String scientificName; @Parameter(names = {"--organism-common-name"}, description = "Organism common name", required = false, arity = 1) public String commonName; @Parameter(names = {"--organism-taxonomy-code"}, description = "Organism taxonomy code", required = false, arity = 1) public String taxonomyCode; @Parameter(names = {"--organism-assembly"}, description = "Organism assembly. Mandatory parameter if not defined " + "in the client configuration file.", required = false, arity = 1) public String assembly; } @Parameters(commandNames = {"info"}, commandDescription = "Get project information") public class InfoCommandOptions extends BaseProjectCommand { @ParametersDelegate public DataModelOptions dataModelOptions = commonDataModelOptions; } @Parameters(commandNames = {"studies"}, commandDescription = "Get all studies from a project") public class StudiesCommandOptions extends BaseProjectCommand { @ParametersDelegate public DataModelOptions dataModelOptions = commonDataModelOptions; @ParametersDelegate public NumericOptions numericOptions = commonNumericOptions; } @Parameters(commandNames = {"update"}, commandDescription = "Update a project") public class UpdateCommandOptions extends BaseProjectCommand { @Parameter(names = {"-n", "--name"}, description = "Project name", required = false, arity = 1) public String name; @Parameter(names = {"-d", "--description"}, description = "Description", required = false, arity = 1) public String description; @Parameter(names = {"-o", "--organization"}, description = "Organization", required = false, arity = 1) public String organization; @Parameter(names = {"-a", "--attributes"}, description = "Attributes", required = false, arity = 1) public String attributes; @Parameter(names = {"--organism-common-name"}, description = "Organism common name", required = false, arity = 1) public String commonName; @Parameter(names = {"--organism-taxonomy-code"}, description = "Organism taxonomy code", required = false, arity = 1) public String taxonomyCode; } @Parameters(commandNames = {"delete"}, commandDescription = "[PENDING] Delete a project") public class DeleteCommandOptions extends BaseProjectCommand { } }