@Test public void importGlobalPanel() throws CatalogException, IOException { Panel panel = Panel.load(getClass().getResource("/disease_panels/panel1.json").openStream()); panelManager.create(panel, false, adminToken); Panel installationPanel = panelManager.get(PanelManager.INSTALLATION_PANELS, panel.getDiseasePanel().getId(), QueryOptions.empty(), null).first(); QueryResult<Panel> diseasePanelQueryResult = panelManager.importInstallationPanel(studyFqn, panel.getDiseasePanel().getId(), QueryOptions.empty(), sessionIdUser); assertEquals(1, diseasePanelQueryResult.getNumResults()); assertNotEquals(installationPanel.getUuid(), diseasePanelQueryResult.first().getUuid()); }
MyResources<Panel> resource = getUids(panelList, studyStr, sessionId); authorizationManager.checkCanAssignOrSeePermissions(resource.getStudy().getUid(), resource.getUser()); checkMembers(resource.getStudy().getUid(), members);
@Test public void importFromPanelAppTest() throws CatalogException, IOException { String token = catalogManager.getUserManager().login("admin", "admin"); panelManager.importPanelApp(token, false); assertEquals(190, panelManager.count(PanelManager.INSTALLATION_PANELS, new Query(), token).getNumTotalResults()); }
@Test public void createInstallationPanelOverwrite() throws CatalogException, IOException { Panel panel = Panel.load(getClass().getResource("/disease_panels/panel1.json").openStream()); panelManager.create(panel, false, adminToken); QueryResult<Panel> diseasePanelQueryResult = panelManager.get(PanelManager.INSTALLATION_PANELS, panel.getDiseasePanel().getId(), QueryOptions.empty(), null); panelManager.create(panel, true, adminToken); QueryResult<Panel> diseasePanelQueryResult2 = panelManager.get(PanelManager.INSTALLATION_PANELS, panel.getDiseasePanel().getId(), QueryOptions.empty(), null); assertNotEquals(diseasePanelQueryResult.first().getUuid(), diseasePanelQueryResult2.first().getUuid()); }
@Test public void createInstallationPanelNoOverwrite() throws CatalogException, IOException { Panel panel = Panel.load(getClass().getResource("/disease_panels/panel1.json").openStream()); panelManager.create(panel, false, adminToken); thrown.expect(CatalogDBException.class); thrown.expectMessage("already exists"); panelManager.create(panel, false, adminToken); }
panelQuery.put(PanelDBAdaptor.QueryParams.ID.key(), panelId); panelQuery.put(PanelDBAdaptor.QueryParams.VERSION.key(), panelVersion); QueryResult<Panel> panelResult = catalogManager.getPanelManager().get(studyStr, panelQuery, QueryOptions.empty(), sessionId); Panel diseasePanel = panelResult.first();
@Test public void updateTest() throws IOException, CatalogException { Panel panel = Panel.load(getClass().getResource("/disease_panels/panel1.json").openStream()); panelManager.create(panel, false, adminToken); Panel diseasePanelQueryResult = panelManager.importInstallationPanel(studyFqn, panel.getDiseasePanel().getId(), null, sessionIdUser).first(); new ObjectMap("id", "BRCA2") )); Panel panelUpdated = panelManager.update(studyFqn, diseasePanelQueryResult.getDiseasePanel().getId(), params, null, sessionIdUser) .first();
@Override public QueryResult<Panel> get(String studyStr, String entryStr, QueryOptions options, String sessionId) throws CatalogException { if (StringUtils.isNotEmpty(studyStr) && INSTALLATION_PANELS.equals(studyStr)) { Panel installationPanel = getInstallationPanel(entryStr); return new QueryResult<>(entryStr, -1, 1, 1, "", "", Collections.singletonList(installationPanel)); } else { return super.get(studyStr, entryStr, options, sessionId); } }
public List<QueryResult<PanelAclEntry>> getAcls(String studyStr, List<String> panelList, String member, boolean silent, String sessionId) throws CatalogException { List<QueryResult<PanelAclEntry>> panelAclList = new ArrayList<>(panelList.size()); for (String panel : panelList) { try { MyResource<Panel> resource = getUid(panel, studyStr, sessionId); QueryResult<PanelAclEntry> allPanelAcls; if (StringUtils.isNotEmpty(member)) { allPanelAcls = authorizationManager.getPanelAcl(resource.getStudy().getUid(), resource.getResource().getUid(), resource.getUser(), member); } else { allPanelAcls = authorizationManager.getAllPanelAcls(resource.getStudy().getUid(), resource.getResource().getUid(), resource.getUser()); } allPanelAcls.setId(panel); panelAclList.add(allPanelAcls); } catch (CatalogException e) { if (silent) { panelAclList.add(new QueryResult<>(panel, 0, 0, 0, "", e.toString(), new ArrayList<>(0))); } else { throw e; } } } return panelAclList; }
panel.setUuid(UUIDUtils.generateOpenCGAUUID(UUIDUtils.Entity.PANEL)); fillDefaultStats(panel);
familyManager = new FamilyManager(authorizationManager, auditManager, this, catalogDBAdaptorFactory, catalogIOManagerFactory, configuration); panelManager = new PanelManager(authorizationManager, auditManager, this, catalogDBAdaptorFactory, catalogIOManagerFactory, configuration); clinicalAnalysisManager = new ClinicalAnalysisManager(authorizationManager, auditManager, this, catalogDBAdaptorFactory,
@Test public void createInstallationPanel() throws CatalogException, IOException { Panel panel = Panel.load(getClass().getResource("/disease_panels/panel1.json").openStream()); panelManager.create(panel, false, adminToken); QueryResult<Panel> diseasePanelQueryResult = panelManager.get(PanelManager.INSTALLATION_PANELS, panel.getDiseasePanel().getId(), QueryOptions.empty(), null); assertEquals(1, diseasePanelQueryResult.getNumResults()); assertEquals(panel.getDiseasePanel().getId(), diseasePanelQueryResult.first().getDiseasePanel().getId()); assertEquals(panel.toString(), diseasePanelQueryResult.first().toString()); }
diseasePanel.getDiseasePanel().setAttributes(attributes); create(diseasePanel, overwrite, token);
throw VariantQueryException.missingStudyFor("panel", panelId, null); Panel panel = catalogManager.getPanelManager().get(defaultStudyStr, panelId, null, sessionId).first();
public void delete(String panelId, String token) throws CatalogException { String userId = userManager.getUserId(token); if (!authorizationManager.checkIsAdmin(userId)) { throw new CatalogAuthorizationException("Only the main OpenCGA administrator can delete global panels"); } Panel panel = getInstallationPanel(panelId); panelDBAdaptor.delete(panel.getUid()); }
@Override public QueryResult<Panel> update(String studyStr, String panelId, ObjectMap parameters, QueryOptions options, String sessionId) throws CatalogException { ParamUtils.checkObj(parameters, "parameters"); parameters = new ObjectMap(parameters); options = ParamUtils.defaultObject(options, QueryOptions::new); MyResource<Panel> resource = getUid(panelId, studyStr, sessionId); // Check update permissions authorizationManager.checkPanelPermission(resource.getStudy().getUid(), resource.getResource().getUid(), resource.getUser(), PanelAclEntry.PanelPermissions.UPDATE); try { ParamUtils.checkAllParametersExist(parameters.keySet().iterator(), (a) -> PanelDBAdaptor.UpdateParams.getParam(a) != null); } catch (CatalogParameterException e) { throw new CatalogException("Could not update: " + e.getMessage(), e); } if (parameters.containsKey(PanelDBAdaptor.UpdateParams.ID.key())) { ParamUtils.checkAlias(parameters.getString(PanelDBAdaptor.UpdateParams.ID.key()), PanelDBAdaptor.UpdateParams.ID.key()); } if (options.getBoolean(Constants.INCREMENT_VERSION)) { // We do need to get the current release to properly create a new version options.put(Constants.CURRENT_RELEASE, studyManager.getCurrentRelease(resource.getStudy(), resource.getUser())); } QueryResult<Panel> queryResult = panelDBAdaptor.update(resource.getResource().getUid(), parameters, options); auditManager.recordUpdate(AuditRecord.Resource.panel, resource.getResource().getUid(), resource.getUser(), parameters, null, null); return queryResult; }
@Override public QueryResult<Panel> create(String studyStr, Panel panel, QueryOptions options, String sessionId) throws CatalogException { String userId = userManager.getUserId(sessionId); Study study = catalogManager.getStudyManager().resolveId(studyStr, userId); // 1. We check everything can be done authorizationManager.checkStudyPermission(study.getUid(), userId, StudyAclEntry.StudyPermissions.WRITE_PANELS); // Check all the panel fields ParamUtils.checkAlias(panel.getDiseasePanel().getId(), "id"); panel.getDiseasePanel().setName(ParamUtils.defaultString(panel.getDiseasePanel().getName(), panel.getDiseasePanel().getId())); panel.setRelease(studyManager.getCurrentRelease(study, userId)); panel.setVersion(1); panel.setAuthor(ParamUtils.defaultString(panel.getAuthor(), "")); panel.getDiseasePanel().setCreationDate(TimeUtils.getTime()); panel.getDiseasePanel().setModificationDate(TimeUtils.getTime()); panel.setStatus(new Status()); panel.getDiseasePanel().setCategories(ParamUtils.defaultObject(panel.getDiseasePanel().getCategories(), Collections.emptyList())); panel.getDiseasePanel().setTags(ParamUtils.defaultObject(panel.getDiseasePanel().getTags(), Collections.emptyList())); panel.getDiseasePanel().setDescription(ParamUtils.defaultString(panel.getDiseasePanel().getDescription(), "")); panel.getDiseasePanel().setPhenotypes(ParamUtils.defaultObject(panel.getDiseasePanel().getPhenotypes(), Collections.emptyList())); panel.getDiseasePanel().setVariants(ParamUtils.defaultObject(panel.getDiseasePanel().getVariants(), Collections.emptyList())); panel.getDiseasePanel().setRegions(ParamUtils.defaultObject(panel.getDiseasePanel().getRegions(), Collections.emptyList())); panel.getDiseasePanel().setGenes(ParamUtils.defaultObject(panel.getDiseasePanel().getGenes(), Collections.emptyList())); panel.getDiseasePanel().setAttributes(ParamUtils.defaultObject(panel.getDiseasePanel().getAttributes(), Collections.emptyMap())); panel.setUuid(UUIDUtils.generateOpenCGAUUID(UUIDUtils.Entity.PANEL)); fillDefaultStats(panel); options = ParamUtils.defaultObject(options, QueryOptions::new); return panelDBAdaptor.insert(study.getUid(), panel, options); }
@Test public void createInstallationPanelNoAdmin() throws CatalogException, IOException { Panel panel = Panel.load(getClass().getResource("/disease_panels/panel1.json").openStream()); thrown.expect(CatalogAuthorizationException.class); panelManager.create(panel, false, sessionIdUser); }
if (diseasePanelIds != null && !diseasePanelIds.isEmpty()) { List<QueryResult<Panel>> queryResults = catalogManager.getPanelManager() .get(studyStr, diseasePanelIds, new Query(), QueryOptions.empty(), token);
public QueryResult<Panel> importInstallationPanel(String studyStr, String panelId, QueryOptions options, String token) throws CatalogException { String userId = userManager.getUserId(token); Study study = catalogManager.getStudyManager().resolveId(studyStr, userId); // 1. We check everything can be done authorizationManager.checkStudyPermission(study.getUid(), userId, StudyAclEntry.StudyPermissions.WRITE_PANELS); // Fetch the installation Panel (if it exists) Panel diseasePanel = getInstallationPanel(panelId); diseasePanel.setUuid(UUIDUtils.generateOpenCGAUUID(UUIDUtils.Entity.PANEL)); diseasePanel.getDiseasePanel().setCreationDate(TimeUtils.getTime()); diseasePanel.setRelease(studyManager.getCurrentRelease(study, userId)); diseasePanel.setVersion(1); // Install the current diseasePanel return panelDBAdaptor.insert(study.getUid(), diseasePanel, options); }