Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public IEnumerable <SpectralImageData> GetSpectralImagesByTrackReference(IModelReference trackReference)
 {
     return(ramStorage.GetSpectralImagesByTrackReference(trackReference));
 }