Advertisement
Guest User

Untitled

a guest
May 14th, 2017
572
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.39 KB | None | 0 0
  1. package com.zirius.pos.posfilesystem;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. /**
  7. *
  8. * @author Petter Holone <petter@zirius.no>
  9. */
  10. public class POSScheduler {
  11.  
  12. public static final String KEY = "POS_SYNC_WINCOR_LOCK";
  13. public static final String MACHINE_ID = java.util.UUID.randomUUID().toString();
  14. public static final String TABLE = "system_uppgrade";
  15.  
  16. private static boolean isResourceFreeForMe(String MACHINE_ID) {
  17. {//SQL Query
  18. final com.zirius.db.jData sql = new com.zirius.db.jData();
  19. try {
  20. sql.query("SELECT TID,VERDI FROM " + TABLE + " WHERE ID = '" + KEY + "' and TID > NOW()");
  21. if (sql.gotoFirst()) {
  22. String machine = sql.getPropertyString("VERDI");
  23. if (machine.equals(MACHINE_ID)) {
  24. return true;
  25. }
  26. return false;
  27. }
  28. return true;
  29. } finally {
  30. sql.close();
  31. }
  32. }
  33. }
  34.  
  35. public static boolean claimResource(String MACHINE_ID, long minutes) {
  36. if (minutes < 1l) {
  37. throw new IllegalArgumentException("minutes < 1");
  38. }
  39. {//SQL Query
  40. if (isResourceFreeForMe(MACHINE_ID)) {
  41. {//SQL Query
  42. final com.zirius.db.jData sql = new com.zirius.db.jData();
  43. try {
  44. sql.queryUpdateInt("INSERT INTO " + TABLE + " VALUES('" + KEY + "',1,NOW() + INTERVAL " + minutes + " MINUTE,'" + MACHINE_ID + "')"
  45. + " ON DUPLICATE KEY UPDATE TID=NOW()+INTERVAL " + minutes + " MINUTE, VERDI='" + MACHINE_ID+"'");
  46. } finally {
  47. sql.close();
  48. }
  49. }
  50. try {
  51. Thread.sleep(1000l);
  52. } catch (InterruptedException ex) {
  53. ex.printStackTrace();
  54. }
  55. if (isResourceFreeForMe(MACHINE_ID)) {
  56. return true;
  57. } else {
  58. return false;
  59. }
  60. } else {
  61. return false;
  62. }
  63. }
  64.  
  65. }
  66.  
  67. public static void main(String[] args) {
  68. {//init server db
  69.  
  70. final String serveraddress = "localhost";
  71. final String sqlUser = "root";
  72. final String sqlPass = "root";
  73. final String client = "duoshopas";
  74. final String clientUser = "test";
  75.  
  76. com.zirius.core.Workbench.server = true;
  77.  
  78. com.zirius.olfi.domain.Constants.currentserver = new com.zirius.db.Server(client, serveraddress, sqlUser, sqlPass, client);
  79. com.zirius.db.pool.init();
  80.  
  81. com.zirius.db.DBService dbservice = new com.zirius.db.DBService(com.zirius.dataObjects.firmaObject.class);
  82. dbservice.hente(com.zirius.db.DBService.DATA_FIRST, null);
  83. com.zirius.core.Workbench.setFirma((com.zirius.dataObjects.firmaObject) dbservice.getModel());
  84.  
  85. com.zirius.core.Workbench.setUser(com.zirius.olfi.modules.user.utils.UserUtil.getUserByUsername(clientUser));
  86. }
  87.  
  88. List<TestThread> testThread =new ArrayList();
  89. for (int i = 0;i<20;i++) {
  90. testThread.add(new TestThread());
  91. }
  92. System.out.println("hmmm");
  93. for (TestThread t : testThread) {
  94. new Thread(t).start();
  95. }
  96. System.out.println("hmm2");
  97. try {
  98. Thread.sleep(1000 * 60);
  99. } catch (InterruptedException ex) {
  100. ex.printStackTrace();
  101. }
  102. for (TestThread t : testThread) {
  103. new Thread(t).start();
  104. }
  105. try {
  106. Thread.sleep(1000 * 60);
  107. } catch (InterruptedException ex) {
  108. ex.printStackTrace();
  109. }
  110. for (TestThread t : testThread) {
  111. new Thread(t).start();
  112. }
  113. }
  114.  
  115. static class TestThread implements Runnable {
  116.  
  117. final String myID = java.util.UUID.randomUUID().toString();
  118.  
  119. @Override
  120. public void run() {
  121. if (claimResource(myID, 1)) {
  122. System.out.println(myID + "\t\tI GOT THE RESOURCE!");
  123. } else {
  124. System.out.println(myID + "\t\tResource is bussy!");
  125. }
  126. }
  127. }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement