private InMemoryModelService(ITrackDao trackDao, ISubFingerprintDao subFingerprintDao, ISpectralImageDao spectralImageDao, IRAMStorage ramStorage) { this.ramStorage = ramStorage; Id = "in-memory-model-service"; TrackDao = trackDao; SubFingerprintDao = subFingerprintDao; SpectralImageDao = spectralImageDao; IModelReference?lastTrackReference = null; uint maxTrackId = 0; if (ramStorage.Tracks.Any()) { (lastTrackReference, maxTrackId) = ramStorage.Tracks.Keys .Select(_ => (_, _.Get <uint>())) .OrderByDescending(_ => _.Item2) .First(); } uint maxSubFingerprintId = 0; if (lastTrackReference != null) { maxSubFingerprintId = ramStorage .ReadSubFingerprintByTrackReference(lastTrackReference) .Max(_ => _.SubFingerprintReference.Get <uint>()); } modelReferenceTracker = new UIntModelReferenceTracker(maxTrackId, maxSubFingerprintId); uint maxSpectralImageId = 0; if (lastTrackReference != null) { var spectralImages = ramStorage.GetSpectralImagesByTrackReference(lastTrackReference).ToList(); if (spectralImages.Any()) { maxSpectralImageId = spectralImages.Max(_ => _.SpectralImageReference.Get <uint>()); } } spectralReferenceProvider = new UIntModelReferenceProvider(maxSpectralImageId); }
public IEnumerable <SpectralImageData> GetSpectralImagesByTrackReference(IModelReference trackReference) { return(ramStorage.GetSpectralImagesByTrackReference(trackReference)); }