01: /*
02: * This file is part of PFIXCORE.
03: *
04: * PFIXCORE is free software; you can redistribute it and/or modify
05: * it under the terms of the GNU Lesser General Public License as published by
06: * the Free Software Foundation; either version 2 of the License, or
07: * (at your option) any later version.
08: *
09: * PFIXCORE is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: * GNU Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public License
15: * along with PFIXCORE; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: *
18: */
19:
20: package de.schlund.pfixcore.webservice.utils;
21:
22: import java.security.MessageDigest;
23: import java.security.NoSuchAlgorithmException;
24:
25: /**
26: * @author mleidig@schlund.de
27: */
28: public class FileCacheData {
29:
30: String md5;
31: byte[] bytes;
32:
33: public FileCacheData(byte[] bytes) {
34: this .bytes = bytes;
35: md5 = getMD5Digest(bytes);
36: }
37:
38: public FileCacheData(String md5, byte[] bytes) {
39: this .md5 = md5;
40: this .bytes = bytes;
41: }
42:
43: public byte[] getBytes() {
44: return bytes;
45: }
46:
47: public String getMD5() {
48: return md5;
49: }
50:
51: private static String getMD5Digest(byte[] bytes) {
52: MessageDigest digest = null;
53: try {
54: digest = MessageDigest.getInstance("MD5");
55: } catch (NoSuchAlgorithmException x) {
56: throw new RuntimeException("MD5 algorithm not supported.",
57: x);
58: }
59: digest.reset();
60: digest.update(bytes);
61: String md5sum = bytesToString(digest.digest());
62: return md5sum;
63: }
64:
65: private static String bytesToString(byte[] b) {
66: StringBuffer sb = new StringBuffer();
67: for (int i = 0; i < b.length; i++)
68: sb.append(byteToString(b[i]));
69: return sb.toString();
70: }
71:
72: private static String byteToString(byte b) {
73: int b1 = b & 0xF;
74: int b2 = (b & 0xF0) >> 4;
75: return Integer.toHexString(b2) + Integer.toHexString(b1);
76: }
77:
78: }
|