Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.zirius.pos.posfilesystem;
- import java.util.ArrayList;
- import java.util.List;
- /**
- *
- * @author Petter Holone <petter@zirius.no>
- */
- public class POSScheduler {
- public static final String KEY = "POS_SYNC_WINCOR_LOCK";
- public static final String MACHINE_ID = java.util.UUID.randomUUID().toString();
- public static final String TABLE = "system_uppgrade";
- private static boolean isResourceFreeForMe(String MACHINE_ID) {
- {//SQL Query
- final com.zirius.db.jData sql = new com.zirius.db.jData();
- try {
- sql.query("SELECT TID,VERDI FROM " + TABLE + " WHERE ID = '" + KEY + "' and TID > NOW()");
- if (sql.gotoFirst()) {
- String machine = sql.getPropertyString("VERDI");
- if (machine.equals(MACHINE_ID)) {
- return true;
- }
- return false;
- }
- return true;
- } finally {
- sql.close();
- }
- }
- }
- public static boolean claimResource(String MACHINE_ID, long minutes) {
- if (minutes < 1l) {
- throw new IllegalArgumentException("minutes < 1");
- }
- {//SQL Query
- if (isResourceFreeForMe(MACHINE_ID)) {
- {//SQL Query
- final com.zirius.db.jData sql = new com.zirius.db.jData();
- try {
- sql.queryUpdateInt("INSERT INTO " + TABLE + " VALUES('" + KEY + "',1,NOW() + INTERVAL " + minutes + " MINUTE,'" + MACHINE_ID + "')"
- + " ON DUPLICATE KEY UPDATE TID=NOW()+INTERVAL " + minutes + " MINUTE, VERDI='" + MACHINE_ID+"'");
- } finally {
- sql.close();
- }
- }
- try {
- Thread.sleep(1000l);
- } catch (InterruptedException ex) {
- ex.printStackTrace();
- }
- if (isResourceFreeForMe(MACHINE_ID)) {
- return true;
- } else {
- return false;
- }
- } else {
- return false;
- }
- }
- }
- public static void main(String[] args) {
- {//init server db
- final String serveraddress = "localhost";
- final String sqlUser = "root";
- final String sqlPass = "root";
- final String client = "duoshopas";
- final String clientUser = "test";
- com.zirius.core.Workbench.server = true;
- com.zirius.olfi.domain.Constants.currentserver = new com.zirius.db.Server(client, serveraddress, sqlUser, sqlPass, client);
- com.zirius.db.pool.init();
- com.zirius.db.DBService dbservice = new com.zirius.db.DBService(com.zirius.dataObjects.firmaObject.class);
- dbservice.hente(com.zirius.db.DBService.DATA_FIRST, null);
- com.zirius.core.Workbench.setFirma((com.zirius.dataObjects.firmaObject) dbservice.getModel());
- com.zirius.core.Workbench.setUser(com.zirius.olfi.modules.user.utils.UserUtil.getUserByUsername(clientUser));
- }
- List<TestThread> testThread =new ArrayList();
- for (int i = 0;i<20;i++) {
- testThread.add(new TestThread());
- }
- System.out.println("hmmm");
- for (TestThread t : testThread) {
- new Thread(t).start();
- }
- System.out.println("hmm2");
- try {
- Thread.sleep(1000 * 60);
- } catch (InterruptedException ex) {
- ex.printStackTrace();
- }
- for (TestThread t : testThread) {
- new Thread(t).start();
- }
- try {
- Thread.sleep(1000 * 60);
- } catch (InterruptedException ex) {
- ex.printStackTrace();
- }
- for (TestThread t : testThread) {
- new Thread(t).start();
- }
- }
- static class TestThread implements Runnable {
- final String myID = java.util.UUID.randomUUID().toString();
- @Override
- public void run() {
- if (claimResource(myID, 1)) {
- System.out.println(myID + "\t\tI GOT THE RESOURCE!");
- } else {
- System.out.println(myID + "\t\tResource is bussy!");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement