/no/truben/dbox/util/onlineresource/TrubenResource.java

http://dbox.googlecode.com/ · Java · 164 lines · 137 code · 23 blank · 4 comment · 24 complexity · f297fdb8d98d2a9246f1f0e294483aec MD5 · raw file

  1. package no.truben.dbox.util.onlineresource;
  2. import no.truben.dbox.util.onlineresource.OnlineResource;
  3. import no.truben.dbox.model.ApplicationBean;
  4. import java.io.BufferedReader;
  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.FileNotFoundException;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.io.InputStreamReader;
  11. import java.math.BigInteger;
  12. import java.net.URL;
  13. import java.security.MessageDigest;
  14. import java.security.NoSuchAlgorithmException;
  15. import java.util.logging.Level;
  16. import java.util.logging.Logger;
  17. /**
  18. *
  19. * @author truben
  20. */
  21. public class TrubenResource implements OnlineResource {
  22. private final String SEARCH_URL = "http://dbox.truben.no/GameDB/search.php?query=";
  23. private String name = "";
  24. private String publisher = "";
  25. private String developer = "";
  26. private String genre = "";
  27. private String year = "";
  28. private boolean valid = false;
  29. public TrubenResource(String hash) {
  30. try {
  31. URL updateURL = new URL(SEARCH_URL + hash);
  32. BufferedReader in = new BufferedReader(new InputStreamReader(updateURL.openStream()));
  33. while(true) {
  34. String line = in.readLine();
  35. if(line == null)
  36. break;
  37. if(line.equals("No entry found"))
  38. break;
  39. else {
  40. String[] segmenst = line.split(":=");
  41. valid = true;
  42. if(segmenst.length != 2)
  43. break;
  44. else if(segmenst[0].trim().equals("name"))
  45. name = segmenst[1].trim();
  46. else if(segmenst[0].trim().equals("year"))
  47. year = segmenst[1].trim();
  48. else if(segmenst[0].trim().equals("developer"))
  49. developer = segmenst[1].trim();
  50. else if(segmenst[0].trim().equals("genre"))
  51. genre = segmenst[1].trim();
  52. else if(segmenst[0].trim().equals("publisher"))
  53. publisher = segmenst[1].trim();
  54. }
  55. }
  56. } catch (IOException ex) {
  57. Logger.getLogger(TrubenResource.class.getName()).log(Level.SEVERE, null, ex);
  58. }
  59. }
  60. public static String getMD5(String filename) {
  61. {
  62. InputStream is = null;
  63. try {
  64. MessageDigest digest = MessageDigest.getInstance("MD5");
  65. File f = new File(filename);
  66. is = new FileInputStream(f);
  67. byte[] buffer = new byte[8192];
  68. int read = 0;
  69. try {
  70. while ((read = is.read(buffer)) > 0) {
  71. digest.update(buffer, 0, read);
  72. }
  73. byte[] md5sum = digest.digest();
  74. BigInteger bigInt = new BigInteger(1, md5sum);
  75. String ret = bigInt.toString(16);
  76. if(ret.length() == 31)
  77. ret = "0" + ret;
  78. if(ret.length() == 30)
  79. ret = "00" + ret;
  80. if(ret.length() == 29)
  81. ret = "000" + ret;
  82. return ret;
  83. } catch (IOException e) {
  84. throw new RuntimeException("Unable to process file for MD5", e);
  85. } finally {
  86. try {
  87. is.close();
  88. } catch (IOException e) {
  89. throw new RuntimeException("Unable to close input stream for MD5 calculation", e);
  90. }
  91. }
  92. } catch (FileNotFoundException ex) {
  93. Logger.getLogger(TrubenResource.class.getName()).log(Level.SEVERE, null, ex);
  94. } catch (NoSuchAlgorithmException ex) {
  95. Logger.getLogger(TrubenResource.class.getName()).log(Level.SEVERE, null, ex);
  96. } finally {
  97. try {
  98. is.close();
  99. } catch (IOException ex) {
  100. Logger.getLogger(TrubenResource.class.getName()).log(Level.SEVERE, null, ex);
  101. }
  102. }
  103. return "";
  104. }
  105. }
  106. @Override
  107. public ApplicationBean fillInInformation(ApplicationBean di) {
  108. if(this.isValid()) {
  109. di.setGenre(genre);
  110. di.setDeveloper(developer);
  111. di.setPublisher(publisher);
  112. di.setName(name);
  113. di.setYear(year);
  114. }
  115. return di;
  116. }
  117. @Override
  118. public String getDeveloper() {
  119. return developer;
  120. }
  121. @Override
  122. public String getGenre() {
  123. return genre;
  124. }
  125. @Override
  126. public String getName() {
  127. return name;
  128. }
  129. @Override
  130. public String getPublisher() {
  131. return publisher;
  132. }
  133. @Override
  134. public String getYear() {
  135. return year;
  136. }
  137. @Override
  138. public boolean isValid() {
  139. return valid;
  140. }
  141. }