public static void LoadFingerPrintsDataBase(string databaseCategory) { // Search for all files with given extensios in given directory. string databaseDirectoryPath = Path.Combine(DATABASE_DIRECTORY_NAME, databaseCategory); try { string[] files = Directory.GetFiles(databaseDirectoryPath, $"*{FINGEPRINT_EXTENSION}"); foreach (string fingerPrintFile in files) { List <HashedFingerprint> hashedFingerprints = SerializationMachine.ProtoDeserialize <List <HashedFingerprint> >( FilePath.CreateFilePath(fingerPrintFile)); string trackReferenceFile = fingerPrintFile.Replace(FINGEPRINT_EXTENSION, TRACK_REFERENCE_EXTENSION); if (File.Exists(trackReferenceFile)) { IModelReference trackReference = SerializationMachine.ProtoDeserialize <IModelReference>( FilePath.CreateFilePath(trackReferenceFile)); if (hashedFingerprints != null && trackReference != null) { mModelService.InsertHashDataForTrack(hashedFingerprints, trackReference); Console.WriteLine($"Loaded fingerprint of track reference ID: {trackReference.Id}"); } else { Console.WriteLine($"Cannot load fingerprint {fingerPrintFile}"); } } else { Console.WriteLine($"Error! the track reference file of {fingerPrintFile} is missing"); } } } catch (ArgumentException e) { Console.WriteLine($"Argument Exception occures: {e.Message}"); } catch (DirectoryNotFoundException) { Console.WriteLine($"No such directory: {databaseDirectoryPath}"); } }
/// <summary> /// Search for all files with given extensios in given directory. /// </summary> /// <param name="waveFile"></param> public void LoadFingerPrintsDatabase() { try { string[] files = Directory.GetFiles(mDatabaseDirectoryPath, $"*{FINGERPRINT_EXTENSION}"); foreach (string fingerPrintFile in files) { List <HashedFingerprint> hashedFingerprints = SerializationMachine.ProtoDeserialize <List <HashedFingerprint> >( FilePath.CreateFilePath(fingerPrintFile)); string trackReferenceFile = fingerPrintFile.Replace(FINGERPRINT_EXTENSION, TRACK_REFERENCE_EXTENSION); if (File.Exists(trackReferenceFile)) { ModelReference <int> trackReference = SerializationMachine.ProtoDeserialize <ModelReference <int> >( FilePath.CreateFilePath(trackReferenceFile)); if (hashedFingerprints != null && trackReference != null) { mModelService.InsertHashDataForTrack(hashedFingerprints, trackReference); mLogger.WriteLine($"Loaded fingerprint of track reference ID: {trackReference.Id}"); } else { mLogger.WriteLine($"Cannot load fingerprint {fingerPrintFile}"); } } else { mLogger.WriteError($"Error! the track reference file of {fingerPrintFile} is missing"); } } } catch (DirectoryNotFoundException) { mLogger.WriteError($"No such directory: {mDatabaseDirectoryPath}"); } catch (Exception ex) when(ex is ArgumentException || ex is NullReferenceException) { mLogger.WriteError($"Exception occures: {ex.Message}", ex); } }