Skip to content

Commit 2b1d440

Browse files
committed
Modified FileDigestCalculator to output triples instead of strings.
1 parent b05913b commit 2b1d440

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

main/java/net/b3e/mf/extra/pipe/FileDigestCalculator.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,22 @@
2525
import org.culturegraph.mf.exceptions.MetafactureException;
2626
import org.culturegraph.mf.framework.DefaultObjectPipe;
2727
import org.culturegraph.mf.framework.ObjectReceiver;
28+
import org.culturegraph.mf.framework.annotations.Description;
29+
import org.culturegraph.mf.framework.annotations.In;
30+
import org.culturegraph.mf.framework.annotations.Out;
31+
import org.culturegraph.mf.types.Triple;
2832

2933
/**
34+
* Uses the input string as a file name and computes a cryptographic hash the file.
35+
*
3036
* @author Christoph Böhme
3137
*
3238
*/
39+
@Description("Uses the input string as a file name and computes a cryptographic hash the file")
40+
@In(String.class)
41+
@Out(Triple.class)
3342
public final class FileDigestCalculator extends
34-
DefaultObjectPipe<String, ObjectReceiver<String>> {
43+
DefaultObjectPipe<String, ObjectReceiver<Triple>> {
3544

3645
private static final int BUFFER_SIZE = 1024;
3746

@@ -40,27 +49,29 @@ public final class FileDigestCalculator extends
4049
private static final char[] NIBBLE_TO_HEX =
4150
{ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
4251

52+
private final DigestAlgorithm algorithm;
4353
private final MessageDigest messageDigest;
4454

4555

4656
public FileDigestCalculator(final DigestAlgorithm algorithm) {
47-
this.messageDigest = algorithm.getInstance();
57+
this.algorithm = algorithm;
58+
this.messageDigest = this.algorithm.getInstance();
4859
}
4960

5061
public FileDigestCalculator(final String algorithm) {
51-
this.messageDigest = DigestAlgorithm.valueOf(algorithm.toUpperCase()).getInstance();
62+
this.algorithm = DigestAlgorithm.valueOf(algorithm.toUpperCase());
63+
this.messageDigest = this.algorithm.getInstance();
5264
}
5365

5466
@Override
5567
public void process(final String file) {
5668
final String digest;
5769
try (final InputStream stream = new FileInputStream(file)) {
5870
digest = bytesToHex(getDigest(stream, messageDigest));
59-
6071
} catch (IOException e) {
6172
throw new MetafactureException(e);
6273
}
63-
getReceiver().process(digest);
74+
getReceiver().process(new Triple(file, algorithm.name(), digest));
6475
}
6576

6677
private static byte[] getDigest(final InputStream stream, final MessageDigest messageDigest) throws IOException {

0 commit comments

Comments
 (0)