diff --git a/osu.Game/Stores/RealmArchiveModelImporter.cs b/osu.Game/Stores/RealmArchiveModelImporter.cs
index 1ff42130b1..4ea2a10288 100644
--- a/osu.Game/Stores/RealmArchiveModelImporter.cs
+++ b/osu.Game/Stores/RealmArchiveModelImporter.cs
@@ -258,61 +258,6 @@ namespace osu.Game.Stores
return await scheduledImport.ConfigureAwait(false);
}
- ///
- /// Any file extensions which should be included in hash creation.
- /// Generally should include all file types which determine the file's uniqueness.
- /// Large files should be avoided if possible.
- ///
- ///
- /// This is only used by the default hash implementation. If is overridden, it will not be used.
- ///
- protected abstract string[] HashableFileTypes { get; }
-
- internal static void LogForModel(TModel? model, string message, Exception? e = null)
- {
- string trimmedHash;
- if (model == null || !model.IsValid || string.IsNullOrEmpty(model.Hash))
- trimmedHash = "?????";
- else
- trimmedHash = model.Hash.Substring(0, 5);
-
- string prefix = $"[{trimmedHash}]";
-
- if (e != null)
- Logger.Error(e, $"{prefix} {message}", LoggingTarget.Database);
- else
- Logger.Log($"{prefix} {message}", LoggingTarget.Database);
- }
-
- ///
- /// Whether the implementation overrides with a custom implementation.
- /// Custom hash implementations must bypass the early exit in the import flow (see usage).
- ///
- protected virtual bool HasCustomHashFunction => false;
-
- ///
- /// Create a SHA-2 hash from the provided archive based on file content of all files matching .
- ///
- ///
- /// In the case of no matching files, a hash will be generated from the passed archive's .
- ///
- protected virtual string ComputeHash(TModel item)
- {
- // for now, concatenate all hashable files in the set to create a unique hash.
- MemoryStream hashable = new MemoryStream();
-
- foreach (RealmNamedFileUsage file in item.Files.Where(f => HashableFileTypes.Any(ext => f.Filename.EndsWith(ext, StringComparison.OrdinalIgnoreCase))).OrderBy(f => f.Filename))
- {
- using (Stream s = Files.Store.GetStream(file.File.GetStoragePath()))
- s.CopyTo(hashable);
- }
-
- if (hashable.Length > 0)
- return hashable.ComputeSHA2Hash();
-
- return item.Hash;
- }
-
///
/// Silently import an item from a .
///
@@ -419,6 +364,61 @@ namespace osu.Game.Stores
});
}
+ ///
+ /// Any file extensions which should be included in hash creation.
+ /// Generally should include all file types which determine the file's uniqueness.
+ /// Large files should be avoided if possible.
+ ///
+ ///
+ /// This is only used by the default hash implementation. If is overridden, it will not be used.
+ ///
+ protected abstract string[] HashableFileTypes { get; }
+
+ internal static void LogForModel(TModel? model, string message, Exception? e = null)
+ {
+ string trimmedHash;
+ if (model == null || !model.IsValid || string.IsNullOrEmpty(model.Hash))
+ trimmedHash = "?????";
+ else
+ trimmedHash = model.Hash.Substring(0, 5);
+
+ string prefix = $"[{trimmedHash}]";
+
+ if (e != null)
+ Logger.Error(e, $"{prefix} {message}", LoggingTarget.Database);
+ else
+ Logger.Log($"{prefix} {message}", LoggingTarget.Database);
+ }
+
+ ///
+ /// Whether the implementation overrides with a custom implementation.
+ /// Custom hash implementations must bypass the early exit in the import flow (see usage).
+ ///
+ protected virtual bool HasCustomHashFunction => false;
+
+ ///
+ /// Create a SHA-2 hash from the provided archive based on file content of all files matching .
+ ///
+ ///
+ /// In the case of no matching files, a hash will be generated from the passed archive's .
+ ///
+ protected virtual string ComputeHash(TModel item)
+ {
+ // for now, concatenate all hashable files in the set to create a unique hash.
+ MemoryStream hashable = new MemoryStream();
+
+ foreach (RealmNamedFileUsage file in item.Files.Where(f => HashableFileTypes.Any(ext => f.Filename.EndsWith(ext, StringComparison.OrdinalIgnoreCase))).OrderBy(f => f.Filename))
+ {
+ using (Stream s = Files.Store.GetStream(file.File.GetStoragePath()))
+ s.CopyTo(hashable);
+ }
+
+ if (hashable.Length > 0)
+ return hashable.ComputeSHA2Hash();
+
+ return item.Hash;
+ }
+
private string computeHashFast(ArchiveReader reader)
{
MemoryStream hashable = new MemoryStream();