public async Task <OperationResultResponse <WorkspaceInfo> > ExecuteAsync(GetWorkspaceFilter filter) { DbWorkspace dbWorkspace = await _repository.GetAsync(filter); if (dbWorkspace is null) { return(_responseCreator.CreateFailureResponse <WorkspaceInfo>(HttpStatusCode.NotFound)); } if (!dbWorkspace.Users.Select(u => u.UserId).Contains(_httpContextAccessor.HttpContext.GetUserId())) { return(_responseCreator.CreateFailureResponse <WorkspaceInfo>(HttpStatusCode.Forbidden)); } OperationResultResponse <WorkspaceInfo> response = new(); List <UserData> usersData = await GetUsersAsync(dbWorkspace.Users?.Select(u => u.UserId).ToList(), response.Errors); List <ImageInfo> imagesInfo = (await GetImagesAsync( usersData?.Where(u => u.ImageId.HasValue).Select(u => u.ImageId.Value).ToList(), response.Errors)) ?.Select(_imageMapper.Map).ToList(); response.Status = response.Errors.Any() ? OperationResultStatusType.PartialSuccess : OperationResultStatusType.FullSuccess; response.Body = _workspaceInfoMapper.Map( dbWorkspace, usersData?.Select(u => _userMapper.Map(u, imagesInfo?.FirstOrDefault(i => i.Id == u.ImageId))).ToList()); return(response); }
public async Task <OperationResultResponse <bool> > ExecuteAsync(Guid workspaceId, JsonPatchDocument <EditWorkspaceRequest> request) { DbWorkspace dbWorkspace = await _repository.GetAsync(workspaceId); Guid editorId = _httpContextAccessor.HttpContext.GetUserId(); if (dbWorkspace.CreatedBy != editorId && (await _userRepository.GetAdminsAsync(workspaceId)).FirstOrDefault(wa => wa.UserId == editorId) == null && !await _accessValidator.IsAdminAsync()) { return(_responseCreator.CreateFailureResponse <bool>(HttpStatusCode.Forbidden)); } if (!_validator.ValidateCustom(request, out List <string> errors)) { return(_responseCreator.CreateFailureResponse <bool>(HttpStatusCode.BadRequest, errors)); } OperationResultResponse <bool> response = new(); response.Body = await _repository.EditAsync(dbWorkspace, await _mapper.MapAsync(request)); response.Status = OperationResultStatusType.FullSuccess; if (!response.Body) { response = _responseCreator.CreateFailureResponse <bool>(HttpStatusCode.BadRequest); } return(response); }
public WorkspaceInfo Map(DbWorkspace dbWorkspace, List <UserInfo> users) { if (dbWorkspace is null) { return(null); } ImageConsist image = dbWorkspace.ImageContent is null ? null : new() { Content = dbWorkspace.ImageContent, Extension = dbWorkspace.ImageExtension }; return(new WorkspaceInfo { Id = dbWorkspace.Id, Name = dbWorkspace.Name, Description = dbWorkspace.Description, Image = image, CreatedAtUtc = dbWorkspace.CreatedAtUtc, CreatedBy = users?.FirstOrDefault(u => u.Id == dbWorkspace.CreatedBy), IsActive = dbWorkspace.IsActive, Channels = dbWorkspace.Channels? .Select(_channelInfoMapper.Map).ToList(), Users = users? .Where(u => dbWorkspace.Users.Any(wu => wu.UserId == u.Id)).ToList() }); } }
public async Task <Guid?> CreateAsync(DbWorkspace dbWorkspace) { if (dbWorkspace is null) { return(null); } _provider.Workspaces.Add(dbWorkspace); await _provider.SaveAsync(); return(dbWorkspace.Id); }
public async Task <bool> EditAsync(DbWorkspace dbWorkspace, JsonPatchDocument <DbWorkspace> request) { if (dbWorkspace is null || request is null) { return(false); } request.ApplyTo(dbWorkspace); dbWorkspace.ModifiedBy = _httpContextAccessor.HttpContext.GetUserId(); dbWorkspace.ModifiedAtUtc = DateTime.UtcNow; await _provider.SaveAsync(); return(true); }
public override bool Save(ISession session, DbWorkspace dbWorkspace) { var existingModifications = session.CreateCriteria <DbModification>() .Add(Restrictions.Eq("Workspace", dbWorkspace)) .List <DbModification>() .ToDictionary(dbModification => dbModification.Symbol); return(SaveChangedEntities(session, existingModifications, dbModification => dbModification.DeltaMass, (dbModification, value) => dbModification.DeltaMass = value, key => new DbModification { Symbol = key, Workspace = dbWorkspace })); }
public override bool Save(ISession session, DbWorkspace dbWorkspace) { var existingSettings = session.CreateCriteria <DbSetting>() .Add(Restrictions.Eq("Workspace", dbWorkspace)) .List <DbSetting>() .ToDictionary(dbSetting => dbSetting.Name); return(SaveChangedEntities(session, existingSettings, dbSetting => dbSetting.Value, (dbSetting, value) => dbSetting.Value = value, key => new DbSetting { Name = key, Workspace = dbWorkspace, })); }
public override bool Save(ISession session, DbWorkspace dbWorkspace) { var existing = session.CreateCriteria <DbTracerDef>() .Add(Restrictions.Eq("Workspace", dbWorkspace)) .List <DbTracerDef>() .ToDictionary(dbTracerDef => dbTracerDef.Name); return(SaveChangedEntities(session, existing, dbTracerDef => new TracerDefData(dbTracerDef), UpdateDbTracerDef, key => new DbTracerDef { Name = key, Workspace = dbWorkspace, })); }
public void OneTimeSetUp() { _dbWorkspaceToAdd = new DbWorkspace { Name = "Name", Description = "Description", IsActive = true, }; _dbWorkspaceInDb = new DbWorkspace { Id = Guid.NewGuid(), Name = "Name", IsActive = true }; CreateMemoryDb(); }
public ShortWorkspaceInfo Map(DbWorkspace dbWorkspace) { if (dbWorkspace is null) { return(null); } return(new ShortWorkspaceInfo { Id = dbWorkspace.Id, Name = dbWorkspace.Name, Description = dbWorkspace.Description, IsActive = dbWorkspace.IsActive, Image = new ImageConsist() { Content = dbWorkspace.ImageContent, Extension = dbWorkspace.ImageExtension } }); }
public static void InitWorkspace(ISessionFactory sessionFactory) { using (var session = sessionFactory.OpenSession()) { var transaction = session.BeginTransaction(); var dbWorkspace = new DbWorkspace { ModificationCount = 1, TracerDefCount = 0, SchemaVersion = WorkspaceUpgrader.CurrentVersion, }; session.Save(dbWorkspace); var modification = new DbModification { DeltaMass = 57.021461, Symbol = "C", Workspace = dbWorkspace }; session.Save(modification); transaction.Commit(); } }
protected Workspace CreateWorkspace(string path, DbTracerDef dbTracerDef) { using (var sessionFactory = SessionFactoryFactory.CreateSessionFactory(path, SessionFactoryFlags.CreateSchema)) { using (var session = sessionFactory.OpenSession()) { var transaction = session.BeginTransaction(); var dbWorkspace = new DbWorkspace { ModificationCount = 1, TracerDefCount = dbTracerDef == null ? 0 : 1, SchemaVersion = WorkspaceUpgrader.CurrentVersion, }; session.Save(dbWorkspace); if (dbTracerDef != null) { dbTracerDef.Workspace = dbWorkspace; dbTracerDef.Name = "Tracer"; session.Save(dbTracerDef); } var modification = new DbModification { DeltaMass = 57.021461, Symbol = "C", Workspace = dbWorkspace }; session.Save(modification); transaction.Commit(); } } var workspace = new Workspace(path); workspace.SetTaskScheduler(TaskScheduler.Default); workspace.DatabasePoller.LoadAndMergeChanges(null); return(workspace); }
// TODO(nicksh): 2013-10-03: Re-enable this test once it reliably passes //[TestMethod] public void TestPeakFinder() { String dbPath = Path.Combine(TestContext.TestDir, "PeakFinderTest.tpg"); using (var sessionFactory = SessionFactoryFactory.CreateSessionFactory(dbPath, SessionFactoryFlags.CreateSchema)) { using (var session = sessionFactory.OpenSession()) { session.BeginTransaction(); DbWorkspace dbWorkspace = new DbWorkspace { TracerDefCount = 1, SettingCount = 2, SchemaVersion = WorkspaceUpgrader.CurrentVersion }; session.Save(dbWorkspace); DbTracerDef dbTracerDef = TracerDef.GetD3LeuEnrichment(); dbTracerDef.Workspace = dbWorkspace; dbTracerDef.Name = "Tracer"; session.Save(dbTracerDef); session.Save(new DbSetting { Workspace = dbWorkspace, Name = SettingEnum.data_directory.ToString(), Value = GetDataDirectory() }); session.Save(new DbSetting { Workspace = dbWorkspace, Name = SettingEnum.mass_accuracy.ToString(), Value = "100000" }); session.Transaction.Commit(); } } Workspace workspace = new Workspace(dbPath); workspace.SetTaskScheduler(TaskScheduler.Default); workspace.DatabasePoller.LoadAndMergeChanges(null); foreach (var peakFinderPeptide in peptides) { AddPeptide(workspace, peakFinderPeptide); } while (true) { string statusMessage; int progress; workspace.ChromatogramGenerator.GetProgress(out statusMessage, out progress); if ("Idle" == statusMessage) { break; } Thread.Sleep(100); } workspace.DatabasePoller.LoadAndMergeChanges(null); var exceptions = new List <Exception>(); foreach (var peptide in peptides) { try { TestPeptide(workspace, peptide); } catch (Exception exception) { exceptions.Add(exception); Trace.TraceError("{0}:{1}", peptide.PeptideSequence, exception); } } CollectionAssert.AreEqual(new Exception[0], exceptions); }
public abstract bool Save(ISession session, DbWorkspace dbWorkspace);
public void TestChromatogramGenerator() { String dbPath = Path.Combine(TestContext.TestDir, "test" + Guid.NewGuid() + ".tpg"); using (var sessionFactory = SessionFactoryFactory.CreateSessionFactory(dbPath, SessionFactoryFlags.CreateSchema)) { using (var session = sessionFactory.OpenSession()) { session.BeginTransaction(); DbWorkspace dbWorkspace = new DbWorkspace { TracerDefCount = 1, }; session.Save(dbWorkspace); DbTracerDef dbTracerDef = TracerDef.GetN15Enrichment(); dbTracerDef.Workspace = dbWorkspace; dbTracerDef.Name = "Tracer"; session.Save(dbTracerDef); session.Save(new DbSetting { Workspace = dbWorkspace, Name = SettingEnum.data_directory.ToString(), Value = GetDataDirectory() }); session.Transaction.Commit(); } } Workspace workspace = new Workspace(dbPath); workspace.SetTaskScheduler(TaskScheduler.Default); var dbMsDataFile = new DbMsDataFile { Name = "20090724_HT3_0", }; using (var session = workspace.OpenWriteSession()) { session.BeginTransaction(); session.Save(dbMsDataFile); session.Transaction.Commit(); } workspace.DatabasePoller.LoadAndMergeChanges(null); var msDataFile = workspace.MsDataFiles.FindByKey(dbMsDataFile.GetId()); Assert.IsTrue(MsDataFileUtil.InitMsDataFile(workspace, msDataFile)); DbPeptide dbPeptide; using (var session = workspace.OpenWriteSession()) { session.BeginTransaction(); dbPeptide = new DbPeptide { Protein = "TestProtein", Sequence = "YLAAYLLLVQGGNAAPSAADIK", FullSequence = "K.YLAAYLLLVQGGNAAPSAADIK.A", }; session.Save(dbPeptide); var searchResult = new DbPeptideSpectrumMatch { Peptide = dbPeptide, MsDataFile = session.Load<DbMsDataFile>(msDataFile.Id), PrecursorCharge = 3, RetentionTime = 20.557 * 60, }; session.Save(searchResult); session.Transaction.Commit(); } var peptide = new Peptide(workspace, dbPeptide); var peptideAnalysis = peptide.EnsurePeptideAnalysis(); peptideAnalysis.IncChromatogramRefCount(); var peptideFileAnalysis = PeptideFileAnalysis.EnsurePeptideFileAnalysis(peptideAnalysis, msDataFile); workspace.DatabasePoller.LoadAndMergeChanges(null); peptideAnalysis.IncChromatogramRefCount(); var chromatogramGenerator = new ChromatogramGenerator(workspace); chromatogramGenerator.Start(); while (peptideFileAnalysis.ChromatogramSet == null) { Thread.Sleep(100); } var chromatogramDatas = peptideFileAnalysis.GetChromatograms(); Assert.IsFalse(chromatogramDatas.Chromatograms.Count == 0); chromatogramGenerator.Stop(); while (chromatogramGenerator.IsThreadAlive) { Thread.Sleep(100); } }
protected Workspace CreateWorkspace(string path, DbTracerDef dbTracerDef) { using (var sessionFactory = SessionFactoryFactory.CreateSessionFactory(path, SessionFactoryFlags.CreateSchema)) { using (var session = sessionFactory.OpenSession()) { var transaction = session.BeginTransaction(); var dbWorkspace = new DbWorkspace { ModificationCount = 1, TracerDefCount = dbTracerDef == null ? 0 : 1, SchemaVersion = WorkspaceUpgrader.CurrentVersion, }; session.Save(dbWorkspace); if (dbTracerDef != null) { dbTracerDef.Workspace = dbWorkspace; dbTracerDef.Name = "Tracer"; session.Save(dbTracerDef); } var modification = new DbModification { DeltaMass = 57.021461, Symbol = "C", Workspace = dbWorkspace }; session.Save(modification); transaction.Commit(); } } var workspace = new Workspace(path); workspace.SetTaskScheduler(TaskScheduler.Default); workspace.DatabasePoller.LoadAndMergeChanges(null); return workspace; }
public void TestChromatogramGenerator() { String dbPath = Path.Combine(TestContext.TestDir, "test" + Guid.NewGuid() + ".tpg"); using (var sessionFactory = SessionFactoryFactory.CreateSessionFactory(dbPath, SessionFactoryFlags.CreateSchema)) { using (var session = sessionFactory.OpenSession()) { session.BeginTransaction(); DbWorkspace dbWorkspace = new DbWorkspace { TracerDefCount = 1, }; session.Save(dbWorkspace); DbTracerDef dbTracerDef = TracerDef.GetN15Enrichment(); dbTracerDef.Workspace = dbWorkspace; dbTracerDef.Name = "Tracer"; session.Save(dbTracerDef); session.Save(new DbSetting { Workspace = dbWorkspace, Name = SettingEnum.data_directory.ToString(), Value = GetDataDirectory() }); session.Transaction.Commit(); } } Workspace workspace = new Workspace(dbPath); workspace.SetTaskScheduler(TaskScheduler.Default); var dbMsDataFile = new DbMsDataFile { Name = "20090724_HT3_0", }; using (var session = workspace.OpenWriteSession()) { session.BeginTransaction(); session.Save(dbMsDataFile); session.Transaction.Commit(); } workspace.DatabasePoller.LoadAndMergeChanges(null); var msDataFile = workspace.MsDataFiles.FindByKey(dbMsDataFile.GetId()); Assert.IsTrue(MsDataFileUtil.InitMsDataFile(workspace, msDataFile)); DbPeptide dbPeptide; using (var session = workspace.OpenWriteSession()) { session.BeginTransaction(); dbPeptide = new DbPeptide { Protein = "TestProtein", Sequence = "YLAAYLLLVQGGNAAPSAADIK", FullSequence = "K.YLAAYLLLVQGGNAAPSAADIK.A", }; session.Save(dbPeptide); var searchResult = new DbPeptideSpectrumMatch { Peptide = dbPeptide, MsDataFile = session.Load <DbMsDataFile>(msDataFile.Id), PrecursorCharge = 3, RetentionTime = 20.557 * 60, }; session.Save(searchResult); session.Transaction.Commit(); } var peptide = new Peptide(workspace, dbPeptide); var peptideAnalysis = peptide.EnsurePeptideAnalysis(); peptideAnalysis.IncChromatogramRefCount(); var peptideFileAnalysis = PeptideFileAnalysis.EnsurePeptideFileAnalysis(peptideAnalysis, msDataFile); workspace.DatabasePoller.LoadAndMergeChanges(null); peptideAnalysis.IncChromatogramRefCount(); var chromatogramGenerator = new ChromatogramGenerator(workspace); chromatogramGenerator.Start(); while (peptideFileAnalysis.ChromatogramSet == null) { Thread.Sleep(100); } var chromatogramDatas = peptideFileAnalysis.GetChromatograms(); Assert.IsFalse(chromatogramDatas.Chromatograms.Count == 0); chromatogramGenerator.Stop(); while (chromatogramGenerator.IsThreadAlive) { Thread.Sleep(100); } }
public static void InitWorkspace(ISessionFactory sessionFactory) { using (var session = sessionFactory.OpenSession()) { var transaction = session.BeginTransaction(); var dbWorkspace = new DbWorkspace { ModificationCount = 1, TracerDefCount = 0, SchemaVersion = WorkspaceUpgrader.CurrentVersion, }; session.Save(dbWorkspace); var modification = new DbModification { DeltaMass = 57.021461, Symbol = "C", Workspace = dbWorkspace }; session.Save(modification); transaction.Commit(); } }
// TODO(nicksh): 2013-10-03: Re-enable this test once it reliably passes //[TestMethod] public void TestPeakFinder() { String dbPath = Path.Combine(TestContext.TestDir, "PeakFinderTest.tpg"); using (var sessionFactory = SessionFactoryFactory.CreateSessionFactory(dbPath, SessionFactoryFlags.CreateSchema)) { using (var session = sessionFactory.OpenSession()) { session.BeginTransaction(); DbWorkspace dbWorkspace = new DbWorkspace { TracerDefCount = 1, SettingCount = 2, SchemaVersion = WorkspaceUpgrader.CurrentVersion }; session.Save(dbWorkspace); DbTracerDef dbTracerDef = TracerDef.GetD3LeuEnrichment(); dbTracerDef.Workspace = dbWorkspace; dbTracerDef.Name = "Tracer"; session.Save(dbTracerDef); session.Save(new DbSetting { Workspace = dbWorkspace, Name = SettingEnum.data_directory.ToString(), Value = GetDataDirectory() }); session.Save(new DbSetting { Workspace = dbWorkspace, Name = SettingEnum.mass_accuracy.ToString(), Value = "100000" }); session.Transaction.Commit(); } } Workspace workspace = new Workspace(dbPath); workspace.SetTaskScheduler(TaskScheduler.Default); workspace.DatabasePoller.LoadAndMergeChanges(null); foreach (var peakFinderPeptide in peptides) { AddPeptide(workspace, peakFinderPeptide); } while (true) { string statusMessage; int progress; workspace.ChromatogramGenerator.GetProgress(out statusMessage, out progress); if ("Idle" == statusMessage) { break; } Thread.Sleep(100); } workspace.DatabasePoller.LoadAndMergeChanges(null); var exceptions = new List<Exception>(); foreach (var peptide in peptides) { try { TestPeptide(workspace, peptide); } catch (Exception exception) { exceptions.Add(exception); Trace.TraceError("{0}:{1}", peptide.PeptideSequence, exception); } } CollectionAssert.AreEqual(new Exception[0], exceptions); }