1 package org.apache.archiva.checksum;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 import org.apache.commons.io.FilenameUtils;
24
25 import java.nio.file.Path;
26 import java.util.ArrayList;
27 import java.util.Arrays;
28 import java.util.Collections;
29 import java.util.HashMap;
30 import java.util.HashSet;
31 import java.util.List;
32 import java.util.Map;
33 import java.util.Set;
34
35
36
37
38
39
40
41
42
43
44 public enum ChecksumAlgorithm {
45 MD5("MD5", "MD5", "md5"),
46 SHA1("SHA-1", "SHA1", "sha1", "sha128", "sha-128"),
47 SHA256("SHA-256", "SHA256", "sha256", "sha2", "sha-256"),
48 SHA384("SHA-384", "SHA384", "sha384", "sha3", "sha-384"),
49 SHA512("SHA-512", "SHA512", "sha512", "sha5", "sha-512"),
50 ASC("ASC", "ASC", "asc");
51
52 public static ChecksumAlgorithm getByExtension( Path file )
53 {
54 String ext = FilenameUtils.getExtension( file.getFileName().toString() ).toLowerCase();
55 if (extensionMap.containsKey(ext)) {
56 return extensionMap.get(ext);
57 }
58 throw new IllegalArgumentException( "Filename " + file.getFileName() + " has no valid extension." );
59 }
60
61 private static final Map<String, ChecksumAlgorithm> extensionMap = new HashMap<>( );
62
63 static {
64 for (ChecksumAlgorithm alg : ChecksumAlgorithm.values()) {
65 for (String extString : alg.getExt())
66 {
67 extensionMap.put( extString.toLowerCase(), alg );
68 }
69 }
70 }
71
72 public static Set<String> getAllExtensions() {
73 return extensionMap.keySet();
74 }
75
76
77
78
79 private final String algorithm;
80
81
82
83
84 private final List<String> ext;
85
86
87
88
89 private final String type;
90
91
92
93
94
95
96
97
98 private ChecksumAlgorithm( String algorithm, String type, String... ext )
99 {
100 this.algorithm = algorithm;
101 this.ext = Arrays.asList( ext );
102 this.type = type;
103
104 }
105
106
107
108
109
110 public String getAlgorithm()
111 {
112 return algorithm;
113 }
114
115
116
117
118
119 public List<String> getExt()
120 {
121 return ext;
122 }
123
124
125
126
127
128 public String getType()
129 {
130 return type;
131 }
132
133
134
135
136
137 public String getDefaultExtension() {
138 return ext.get(0);
139 }
140
141
142 }