1 /* 2 * dpkg - Debian Package library and the Debian Package Maven plugin 3 * (c) Copyright 2016 Gerrit Hohl 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License 7 * as published by the Free Software Foundation; either version 2 8 * of the License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 */ 19 package net.sourceforge.javadpkg.store; 20 21 22 /** 23 * <p> 24 * A {@link FileHash} implementation. 25 * </p> 26 * 27 * @author Gerrit Hohl (gerrit-hohl@users.sourceforge.net) 28 * @version <b>1.0</b>, 27.04.2016 by Gerrit Hohl 29 */ 30 public class FileHashImpl implements FileHash { 31 32 33 /** The name of the source. */ 34 private String name; 35 /** The path in the target system. */ 36 private String path; 37 /** The hash of the content. */ 38 private byte[] hash; 39 /** The hash of the content as hex number. */ 40 private String hashAsHex; 41 42 43 /** 44 * <p> 45 * Creates a file hash. 46 * </p> 47 * 48 * @param name 49 * The name of the source. 50 * @param path 51 * The path in the target system. 52 * @param hash 53 * The hash of the content. 54 * @throws IllegalArgumentException 55 * If any of the parameters are <code>null</code>. 56 */ 57 public FileHashImpl(String name, String path, byte[] hash) { 58 super(); 59 60 if (name == null) 61 throw new IllegalArgumentException("Argument name is null."); 62 if (path == null) 63 throw new IllegalArgumentException("Argument path is null."); 64 if (hash == null) 65 throw new IllegalArgumentException("Argument hash is null."); 66 67 this.name = name; 68 this.path = path; 69 this.hash = hash.clone(); 70 this.hashAsHex = this.createHex(this.hash); 71 } 72 73 74 /** 75 * <p> 76 * Creates a hex representation of the number stored in the array. 77 * </p> 78 * 79 * @param data 80 * The array. 81 * @return The hex representation. 82 */ 83 private String createHex(byte[] data) { 84 StringBuilder sb; 85 int number; 86 87 88 sb = new StringBuilder(); 89 for (int index = 0; index < data.length; index++) { 90 number = data[index] & 0xFF; 91 if (number < 0x10) { 92 sb.append('0'); 93 } 94 sb.append(Integer.toHexString(number)); 95 } 96 return sb.toString(); 97 } 98 99 100 @Override 101 public String getName() { 102 return this.name; 103 } 104 105 106 @Override 107 public String getPath() { 108 return this.path; 109 } 110 111 112 @Override 113 public byte[] getHash() { 114 return this.hash.clone(); 115 } 116 117 118 @Override 119 public String getHashAsHex() { 120 return this.hashAsHex; 121 } 122 123 124 }