/* * 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.ObjectMap; 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.executors.catalog.commons.AclCommandExecutor; import org.opencb.opencga.app.cli.main.options.PanelCommandOptions; import org.opencb.opencga.catalog.db.api.PanelDBAdaptor; import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.catalog.models.DiseasePanel; import org.opencb.opencga.catalog.models.acls.permissions.DiseasePanelAclEntry; import java.io.IOException; /** * Created by sgallego on 6/15/16. */ public class PanelCommandExecutor extends OpencgaCommandExecutor { private PanelCommandOptions panelsCommandOptions; private AclCommandExecutor<DiseasePanel, DiseasePanelAclEntry> aclCommandExecutor; public PanelCommandExecutor(PanelCommandOptions panelsCommandOptions) { super(panelsCommandOptions.commonCommandOptions); this.panelsCommandOptions = panelsCommandOptions; this.aclCommandExecutor = new AclCommandExecutor<>(); } @Override public void execute() throws Exception { logger.debug("Executing panels command line"); String subCommandString = getParsedSubCommand(panelsCommandOptions.jCommander); QueryResponse queryResponse = null; switch (subCommandString) { case "create": queryResponse = create(); break; case "info": queryResponse = info(); break; case "acl": queryResponse = aclCommandExecutor.acls(panelsCommandOptions.aclsCommandOptions, openCGAClient.getPanelClient()); break; case "acl-create": queryResponse = aclCommandExecutor.aclsCreate(panelsCommandOptions.aclsCreateCommandOptions, openCGAClient.getPanelClient()); break; case "acl-member-delete": queryResponse = aclCommandExecutor.aclMemberDelete(panelsCommandOptions.aclsMemberDeleteCommandOptions, openCGAClient.getPanelClient()); break; case "acl-member-info": queryResponse = aclCommandExecutor.aclMemberInfo(panelsCommandOptions.aclsMemberInfoCommandOptions, openCGAClient.getPanelClient()); break; case "acl-member-update": queryResponse = aclCommandExecutor.aclMemberUpdate(panelsCommandOptions.aclsMemberUpdateCommandOptions, openCGAClient.getPanelClient()); break; default: logger.error("Subcommand not valid"); break; } createOutput(queryResponse); } /********************************************** Administration Commands ***********************************************/ private QueryResponse<DiseasePanel> create() throws CatalogException, IOException { logger.debug("Creating a new panel"); String name = panelsCommandOptions.createCommandOptions.name; String disease = panelsCommandOptions.createCommandOptions.disease; ObjectMap params = new ObjectMap(); params.putIfNotEmpty(PanelDBAdaptor.QueryParams.DESCRIPTION.key(), panelsCommandOptions.createCommandOptions.description); params.putIfNotEmpty(PanelDBAdaptor.QueryParams.GENES.key(), panelsCommandOptions.createCommandOptions.genes); params.putIfNotEmpty(PanelDBAdaptor.QueryParams.REGIONS.key(), panelsCommandOptions.createCommandOptions.regions); params.putIfNotEmpty(PanelDBAdaptor.QueryParams.VARIANTS.key(), panelsCommandOptions.createCommandOptions.variants); return openCGAClient.getPanelClient().create(resolveStudy(panelsCommandOptions.createCommandOptions.studyId), name, disease, params); } private QueryResponse<DiseasePanel> info() throws CatalogException, IOException { logger.debug("Getting panel information"); QueryOptions options = new QueryOptions(); options.putIfNotEmpty(QueryOptions.INCLUDE, panelsCommandOptions.infoCommandOptions.include); options.putIfNotEmpty(QueryOptions.EXCLUDE, panelsCommandOptions.infoCommandOptions.exclude); return openCGAClient.getPanelClient().get(panelsCommandOptions.infoCommandOptions.id, options); } }