Advertisement
Guest User

Untitled

a guest
Nov 4th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.02 KB | None | 0 0
  1. package db;
  2.  
  3. import java.sql.*;
  4. import java.util.LinkedList;
  5.  
  6. public abstract class Db{
  7. private static String url = "jdbc:postgresql://localhost:5432/p2pbase";
  8. private static final String user = "p2pbase";
  9. private static final String pass = "qias0pdm";
  10.  
  11. public static LinkedList<File> getFileList(String name) {
  12. String query = "SELECT MD5,NAME1, SIZE1 FROM FILES WHERE NAME1 LIKE ?";
  13. LinkedList<File> files = new LinkedList<>();
  14. try(
  15. Connection con = DriverManager.getConnection(url, user, pass);
  16. PreparedStatement statement = con.prepareStatement(query);
  17. ) {
  18. statement.setString(1,"%"+name+"%");
  19. ResultSet r = statement.executeQuery();
  20. while (r.next()){
  21. files.add(new File(r.getString(1),r.getString(2),r.getDouble(3)));
  22. }
  23. }catch (SQLException ex){
  24. ex.printStackTrace();
  25. }
  26. return files;
  27. }
  28.  
  29. public static String getIP(String MD5) {
  30. String query = "SELECT p.IP FROM PEER p JOIN HAS h ON (p.IP = h.IP and p.port = h.port) WHERE h.MD5 = ? ORDER BY p.NoConnections";
  31. String ip = null;
  32. try(
  33. Connection con = DriverManager.getConnection(url, user, pass);
  34. PreparedStatement statement = con.prepareStatement(query);
  35. ) {
  36. statement.setString(1,MD5);
  37. ResultSet r = statement.executeQuery();
  38. while (r.next()){
  39. ip = r.getString(1);
  40. break;
  41. }
  42. }catch (SQLException ex){
  43. ex.printStackTrace();
  44. }
  45. return ip;
  46. }
  47.  
  48. public static boolean addFile(String IP, int port, File file) {
  49. String query;
  50. if(!exist(file)){
  51. query = "INSERT INTO FILES values (?,?,?)";
  52. try(
  53. Connection con = DriverManager.getConnection(url, user, pass);
  54. PreparedStatement statement = con.prepareStatement(query);
  55. ) {
  56. statement.setString(1,file.getMD5());
  57. statement.setString(2,file.getName());
  58. statement.setDouble(3,file.getSize());
  59. con.setAutoCommit(false);
  60. int a = statement.executeUpdate();
  61. if(a > 0) con.commit();
  62. else con.rollback();
  63. }catch (SQLException ex){
  64. ex.printStackTrace();
  65. }
  66. }
  67. if(existOnPeer(IP, port, file)){
  68. return false;
  69. }
  70. query = "INSERT INTO HAS values (?,?,?)";
  71. boolean inserted = false;
  72. try(
  73. Connection con = DriverManager.getConnection(url, user, pass);
  74. PreparedStatement statement = con.prepareStatement(query);
  75. ) {
  76. statement.setString(1,IP);
  77. statement.setInt(2,port);
  78. statement.setString(3,file.getMD5());
  79. con.setAutoCommit(false);
  80. int a = statement.executeUpdate();
  81. inserted = a > 0;
  82. if(a > 0) con.commit();
  83. else con.rollback();
  84. }catch (SQLException ex){
  85. ex.printStackTrace();
  86. }
  87. return inserted;
  88. }
  89.  
  90. public static boolean addPeer(String IP, int port) {
  91. String query = "INSERT INTO PEER values (?,?,?)";
  92. boolean inserted = false;
  93. try(
  94. Connection con = DriverManager.getConnection(url, user, pass);
  95. PreparedStatement statement = con.prepareStatement(query);
  96. ) {
  97. statement.setString(1,IP);
  98. statement.setInt(2,port);
  99. statement.setInt(3,0);
  100. con.setAutoCommit(false);
  101. int a = statement.executeUpdate();
  102. inserted = a > 0;
  103. if(a > 0) con.commit();
  104. else con.rollback();
  105. }catch (SQLException ex){
  106. ex.printStackTrace();
  107. }
  108. return inserted;
  109. }
  110.  
  111. public static boolean deletePeer(String IP, int port) {
  112. String query = "DELETE FROM PEER WHERE IP = ? AND PORT = ?";
  113. return update(IP, port, query);
  114. }
  115.  
  116. public static boolean incrementNoConnections(String IP, int port) {
  117. String query = "UPDATE PEER SET NOCONNECTIONS = NOCONNECTIONS + 1 WHERE IP = ? AND PORT = ?";
  118. return update(IP, port, query);
  119. }
  120. public static boolean decrementNoConnections(String IP, int port) {
  121. String query = "UPDATE PEER SET NOCONNECTIONS = NOCONNECTIONS - 1 WHERE IP = ? AND PORT = ?";
  122. return update(IP, port, query);
  123. }
  124.  
  125. private static boolean update(String IP, int port, String query){
  126. boolean updated = false;
  127. try(
  128. Connection con = DriverManager.getConnection(url, user, pass);
  129. PreparedStatement statement = con.prepareStatement(query);
  130. ) {
  131. statement.setString(1,IP);
  132. statement.setInt(2,port);
  133. con.setAutoCommit(false);
  134. int a = statement.executeUpdate();
  135. updated = a > 0;
  136. if(a > 0) con.commit();
  137. else con.rollback();
  138. }catch (SQLException ex){
  139. ex.printStackTrace();
  140. }
  141. return updated;
  142. }
  143.  
  144.  
  145.  
  146. public static boolean deleteFileOnPeer(String IP, int port, String MD5) {
  147. String query = "DELETE FROM HAS WHERE IP = ? AND PORT = ? AND MD5 = ?";
  148. boolean deleted = false;
  149. try(
  150. Connection con = DriverManager.getConnection(url, user, pass);
  151. PreparedStatement statement = con.prepareStatement(query);
  152. ) {
  153. statement.setString(1,IP);
  154. statement.setInt(2,port);
  155. statement.setString(3, MD5);
  156. con.setAutoCommit(false);
  157. int a = statement.executeUpdate();
  158. deleted = a > 0;
  159. if(a > 0) con.commit();
  160. else con.rollback();
  161. }catch (SQLException ex){
  162. ex.printStackTrace();
  163. }
  164. return deleted;
  165. }
  166.  
  167. private static boolean exist(File file){
  168. String query = "SELECT * FROM FILES WHERE MD5 = ?";
  169. boolean finded = false;
  170. try(
  171. Connection con = DriverManager.getConnection(url, user, pass);
  172. PreparedStatement statement = con.prepareStatement(query);
  173. ) {
  174. statement.setString(1,file.getMD5());
  175. ResultSet r = statement.executeQuery();
  176. while (r.next()){
  177. finded = true;
  178. break;
  179. }
  180. }catch (SQLException ex){
  181. ex.printStackTrace();
  182. }
  183. return finded;
  184. }
  185.  
  186. private static boolean existOnPeer(String ip, int port, File file){
  187. String query = "SELECT * FROM HAS WHERE IP = ? AND PORT = ? AND MD5 = ?";
  188. boolean finded = false;
  189. try(
  190. Connection con = DriverManager.getConnection(url, user, pass);
  191. PreparedStatement statement = con.prepareStatement(query);
  192. ) {
  193. statement.setString(1,ip);
  194. statement.setInt(2,port);
  195. statement.setString(3,file.getMD5());
  196. ResultSet r = statement.executeQuery();
  197. while (r.next()){
  198. finded = true;
  199. break;
  200. }
  201. }catch (SQLException ex){
  202. ex.printStackTrace();
  203. }
  204. return finded;
  205. }
  206.  
  207. public static void setUrl(String IP) {
  208. Db.url = "jdbc:postgresql://"+IP+":5432/p2pbase";
  209. }
  210.  
  211. //under this line only testing methods
  212. public static LinkedList<File> getAllFiles() {
  213. String query = "SELECT * FROM FILES";
  214. LinkedList<File> files = new LinkedList<>();
  215. try(
  216. Connection con = DriverManager.getConnection(url, user, pass);
  217. PreparedStatement statement = con.prepareStatement(query);
  218. ) {
  219. ResultSet r = statement.executeQuery();
  220. while (r.next()){
  221. files.add(new File(r.getString(1),r.getString(2),r.getDouble(3)));
  222. }
  223. }catch (SQLException ex){
  224. ex.printStackTrace();
  225. }
  226.  
  227. return files;
  228. }
  229.  
  230. public static LinkedList<String> getAllFilesOnPeers() {
  231. String query = "SELECT * FROM HAS";
  232. LinkedList<String> files = new LinkedList<>();
  233. try(
  234. Connection con = DriverManager.getConnection(url, user, pass);
  235. PreparedStatement statement = con.prepareStatement(query);
  236. ) {
  237. ResultSet r = statement.executeQuery();
  238. while (r.next()){
  239. files.add("Peer : "+r.getString(1)+":"+r.getInt(2) + " File: "+r.getString(3));
  240. }
  241. }catch (SQLException ex){
  242. ex.printStackTrace();
  243. }
  244.  
  245. return files;
  246. }
  247.  
  248. public static LinkedList<String> getAllPeers() {
  249. String query = "SELECT * FROM PEER";
  250. LinkedList<String> peer = new LinkedList<>();
  251. try(
  252. Connection con = DriverManager.getConnection(url, user, pass);
  253. PreparedStatement statement = con.prepareStatement(query);
  254. ) {
  255. ResultSet r = statement.executeQuery();
  256. while (r.next()){
  257. peer.add("Peer : "+r.getString(1)+":"+r.getInt(2));
  258. }
  259. }catch (SQLException ex){
  260. ex.printStackTrace();
  261. }
  262.  
  263. return peer;
  264. }
  265.  
  266. public static boolean deleteFile(String MD5){
  267. String query = "DELETE FROM FILES WHERE MD5 = ?";
  268. boolean deleted = false;
  269. try(
  270. Connection con = DriverManager.getConnection(url, user, pass);
  271. PreparedStatement statement = con.prepareStatement(query);
  272. ) {
  273. statement.setString(1, MD5);
  274. con.setAutoCommit(false);
  275. int a = statement.executeUpdate();
  276. deleted = a > 0;
  277. if(a > 0) con.commit();
  278. else con.rollback();
  279. }catch (SQLException ex){
  280. ex.printStackTrace();
  281. }
  282. return deleted;
  283. }
  284. public static boolean deleteAllFileOnPeer() {
  285. String query = "DELETE FROM HAS";
  286. return delete(query);
  287. }
  288.  
  289. public static boolean deleteAllPeers() {
  290. String query = "DELETE FROM PEER";
  291. return delete(query);
  292. }
  293. public static boolean deleteAllFiles(){
  294. String query = "DELETE FROM FILES";
  295. return delete(query);
  296. }
  297. public static boolean delete(String query){
  298. boolean deleted = false;
  299. try(
  300. Connection con = DriverManager.getConnection(url, user, pass);
  301. PreparedStatement statement = con.prepareStatement(query);
  302. ) {
  303. con.setAutoCommit(false);
  304. int a = statement.executeUpdate();
  305. deleted = a > 0;
  306. if(a > 0) con.commit();
  307. else con.rollback();
  308. }catch (SQLException ex){
  309. ex.printStackTrace();
  310. }
  311. return deleted;
  312. }
  313. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement