From fa14568cb9c3000dd7351cde8e95714a57230f65 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Fri, 3 Mar 2023 10:42:43 +0000 Subject: [PATCH] Fixed issue causing "totalChunkCount" to exclude the metadata file in some cases. ArbitraryDataFile now has a fileCount() method which returns the total number of files associated with that piece of data - i.e. chunks, metadata, and the complete file in cases where it isn't chunked. --- .../org/qortal/arbitrary/ArbitraryDataFile.java | 16 ++++++++++++++++ .../qortal/utils/ArbitraryTransactionUtils.java | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataFile.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataFile.java index 1e86ee98..53560e5f 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataFile.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataFile.java @@ -612,6 +612,22 @@ public class ArbitraryDataFile { return this.chunks.size(); } + public int fileCount() { + int fileCount = this.chunkCount(); + + if (fileCount == 0) { + // Transactions without any chunks can already be treated as a complete file + fileCount++; + } + + if (this.getMetadataHash() != null) { + // Add the metadata file + fileCount++; + } + + return fileCount; + } + public List getChunks() { return this.chunks; } diff --git a/src/main/java/org/qortal/utils/ArbitraryTransactionUtils.java b/src/main/java/org/qortal/utils/ArbitraryTransactionUtils.java index 0ae1026f..68909dee 100644 --- a/src/main/java/org/qortal/utils/ArbitraryTransactionUtils.java +++ b/src/main/java/org/qortal/utils/ArbitraryTransactionUtils.java @@ -193,7 +193,7 @@ public class ArbitraryTransactionUtils { ArbitraryDataFile arbitraryDataFile = ArbitraryDataFile.fromHash(digest, signature); arbitraryDataFile.setMetadataHash(metadataHash); - return arbitraryDataFile.chunkCount() + 1; // +1 for the metadata file + return arbitraryDataFile.fileCount(); } public static boolean isFileRecent(Path filePath, long now, long cleanupAfter) {