int getCurrentRelease(Study study, String userId) throws CatalogException { return catalogManager.getProjectManager().resolveId(StringUtils.split(study.getFqn(), ":")[0], userId).getCurrentRelease(); }
@Override public QueryResult<Integer> incrementCurrentRelease(long projectId) throws CatalogDBException { long startTime = startQuery(); Query query = new Query(QueryParams.UID.key(), projectId); Bson update = new Document("$inc", new Document("projects.$." + QueryParams.CURRENT_RELEASE.key(), 1)); QueryResult<UpdateResult> updateQR = userCollection.update(parseQuery(query), update, null); if (updateQR == null || updateQR.first().getMatchedCount() == 0) { throw new CatalogDBException("Could not increment release number. Project id " + projectId + " not found"); } else if (updateQR.first().getModifiedCount() == 0) { throw new CatalogDBException("Internal error. Current release number could not be incremented."); } QueryResult<Project> projectQueryResult = get(projectId, new QueryOptions(QueryOptions.INCLUDE, QueryParams.CURRENT_RELEASE.key())); return endQuery(Long.toString(projectId), startTime, Arrays.asList(projectQueryResult.first().getCurrentRelease())); }
public static void updateProjectMetadata(CatalogManager catalog, StudyConfigurationManager scm, String project, String sessionId) throws CatalogException, StorageEngineException { final Project p = catalog.getProjectManager().get(project, new QueryOptions(QueryOptions.INCLUDE, Arrays.asList( ProjectDBAdaptor.QueryParams.ORGANISM.key(), ProjectDBAdaptor.QueryParams.CURRENT_RELEASE.key())), sessionId) .first(); StorageOperation.updateProjectMetadata(scm, p.getOrganism(), p.getCurrentRelease()); }
private int getProjectCurrentRelease(long projectId) throws CatalogException { QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, ProjectDBAdaptor.QueryParams.CURRENT_RELEASE.key()); QueryResult<Project> projectQueryResult = projectDBAdaptor.get(projectId, options); if (projectQueryResult.getNumResults() == 0) { throw new CatalogException("Internal error. Cannot retrieve current release from project"); } return projectQueryResult.first().getCurrentRelease(); }
new File.FileStatus(File.FileStatus.READY), 0, project.getCurrentRelease()); rootFile.setUuid(UUIDUtils.generateOpenCGAUUID(UUIDUtils.Entity.FILE)); files.add(rootFile); 0, cipher, Arrays.asList(new Group(MEMBERS, Collections.emptyList()), new Group(ADMINS, Collections.emptyList())), experiments, files, jobs, new LinkedList<>(), new LinkedList<>(), new LinkedList<>(), new LinkedList<>(), Collections.emptyList(), new LinkedList<>(), null, null, datastores, project.getCurrentRelease(), stats, attributes);
alias = project.getId(); organism = project.getOrganism(); currentRelease = project.getCurrentRelease(); dataStore = getDataStoreByProjectId(catalogManager, projectStr, File.Bioformat.VARIANT, sessionId); studyIds = Collections.emptyList(); studyIds = studyInfos.stream().map(StudyInfo::getStudyFQN).collect(Collectors.toList()); Project project = catalogManager.getProjectManager().get(info.getProjectId(), null, sessionId).first(); currentRelease = project.getCurrentRelease(); for (int i = 1; i < studyInfos.size(); i++) { info = studyInfos.get(i);
int currentRelease = project.getCurrentRelease();
.get(studyInfo.getProjectId(), new QueryOptions(QueryOptions.INCLUDE, ProjectDBAdaptor.QueryParams.CURRENT_RELEASE.key()), sessionId); int release = projectQueryResult.first().getCurrentRelease();
public Integer getReleaseFilter(Query query, String sessionId) throws CatalogException { Integer release; if (isValidParam(query, VariantQueryParam.RELEASE)) { release = query.getInt(VariantQueryParam.RELEASE.key(), -1); if (release <= 0) { throw VariantQueryException.malformedParam(VariantQueryParam.RELEASE, query.getString(VariantQueryParam.RELEASE.key())); } Project project = getProjectFromQuery(query, sessionId, new QueryOptions(INCLUDE, ProjectDBAdaptor.QueryParams.CURRENT_RELEASE.key())); int currentRelease = project.getCurrentRelease(); if (release > currentRelease) { throw VariantQueryException.malformedParam(VariantQueryParam.RELEASE, query.getString(VariantQueryParam.RELEASE.key())); } else if (release == currentRelease) { // Using latest release. We don't need to filter by release! release = null; } // else, filter by release } else { release = null; } return release; }
@Test public void incrementCurrentRelease() throws CatalogDBException { long projectId = catalogProjectDBAdaptor.getId(user3.getId(), user3.getProjects().get(0).getId()); QueryResult<Project> projectQueryResult = catalogProjectDBAdaptor.get(projectId, new QueryOptions(QueryOptions.INCLUDE, ProjectDBAdaptor.QueryParams.CURRENT_RELEASE.key())); assertEquals(1, projectQueryResult.first().getCurrentRelease()); assertEquals(2, catalogProjectDBAdaptor.incrementCurrentRelease(projectId).first().intValue()); assertEquals(3, catalogProjectDBAdaptor.incrementCurrentRelease(projectId).first().intValue()); }
public static File createFile(String path, boolean indexed) throws CatalogException { File file = catalog.getFileManager().create("s1", File.Type.FILE, File.Format.VCF, File.Bioformat.VARIANT, path, null, null, null, 10, -1, null, -1, null, null, true, "", null, sessionId).first(); if (indexed) { int release = catalog.getProjectManager().get("p1", null, sessionId).first().getCurrentRelease(); catalog.getFileManager().updateFileIndexStatus(file, Status.READY, "", release, sessionId); } return file; }
public QueryResult<Integer> incrementRelease(String projectStr, String sessionId) throws CatalogException { String userId = catalogManager.getUserManager().getUserId(sessionId); Project project = resolveId(projectStr, userId); long projectId = project.getUid(); authorizationManager.checkCanEditProject(projectId, userId); // Obtain the current release number int currentRelease = project.getCurrentRelease(); // Check current release has been used at least in one study or file or cohort or individual... List<Study> allStudiesInProject = project.getStudies(); if (allStudiesInProject.isEmpty()) { throw new CatalogException("Cannot increment current release number. No studies found for release " + currentRelease); } if (checkCurrentReleaseInUse(allStudiesInProject, currentRelease)) { // Increment current project release QueryResult<Integer> integerQueryResult = projectDBAdaptor.incrementCurrentRelease(projectId); // Upgrade release in sample, family and individuals for (Study study : allStudiesInProject) { sampleDBAdaptor.updateProjectRelease(study.getUid(), integerQueryResult.first()); individualDBAdaptor.updateProjectRelease(study.getUid(), integerQueryResult.first()); familyDBAdaptor.updateProjectRelease(study.getUid(), integerQueryResult.first()); panelDBAdaptor.updateProjectRelease(study.getUid(), integerQueryResult.first()); } return integerQueryResult; } else { throw new CatalogException("Cannot increment current release number. The current release " + currentRelease + " has not yet " + "been used in any entry"); } }