Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.72 KB | None | 0 0
  1. package org.foi.nwtis.mtensic.ejb.sb;
  2.  
  3. import java.io.StringReader;
  4. import java.util.ArrayList;
  5. import java.util.Queue;
  6. import javax.annotation.Resource;
  7. import javax.ejb.EJB;
  8. import javax.ejb.Stateful;
  9. import javax.ejb.LocalBean;
  10. import javax.inject.Inject;
  11. import javax.jms.JMSConnectionFactory;
  12. import javax.jms.JMSContext;
  13. import javax.json.Json;
  14. import javax.json.JsonReader;
  15. import org.foi.nwtis.mtensic.ejb.eb.MqttPoruke;
  16. import org.foi.nwtis.mtensic.podaci.Aerodrom;
  17.  
  18. /**
  19. *
  20. * @author Monika
  21. */
  22. @Stateful
  23. @LocalBean
  24. public class KorisnickeAkcije {
  25.  
  26. @EJB
  27. private MqttPorukeFacade mqttPorukeFacade;
  28.  
  29. @EJB
  30. private DnevnikFacade dnevnikFacade;
  31.  
  32. @Resource(mappedName = "jms/NWTiS_mtensic_2")
  33. private Queue myQueue;
  34.  
  35. @Inject
  36. @JMSConnectionFactory("jms/NWTiS_mtensic_2Factory")
  37. private JMSContext context;
  38.  
  39. private String korime;
  40. private String lozinka;
  41.  
  42. private ArrayList<Aerodrom> aerodromi = new ArrayList<>();
  43.  
  44. private int redniBrojJMSPoruke = 0;
  45.  
  46. public boolean autentifikacija(String korime, String lozinka) {
  47. // logika za autenticiranje
  48. /*Aplikacija3REST app3 = new Aplikacija3REST(korime, lozinka);
  49. String odgovor = app3.autentifikacija();
  50.  
  51. JsonReader jsonReader = Json.createReader(new StringReader(odgovor));
  52. JsonObject odgovorParsed = jsonReader.readObject();
  53. String status = odgovorParsed.getString("status");
  54. if (status.contains("OK")) {
  55. this.korime = korime;
  56. this.lozinka = lozinka;
  57.  
  58. Thread t = new Thread(new Runnable() {
  59. public void run() {
  60. mqttPriprema();
  61. }
  62. });
  63. t.start();
  64.  
  65. return true;
  66. } else {
  67. return false;
  68. }*/
  69.  
  70. Thread t = new Thread(new Runnable() {
  71. public void run() {
  72. mqttPriprema();
  73. }
  74. });
  75. t.start();
  76.  
  77. return true;
  78. }
  79.  
  80. public void mqttPriprema() {
  81. dohvatiAerodrome();
  82. mqttSlusac();
  83. }
  84.  
  85. public void dohvatiAerodrome() {
  86. /*AerodromiREST aerodromiREST = new AerodromiRest(korime, lozinka);
  87.  
  88. String odgovor = aerodromiRest.dajSveAerodrome();
  89. JsonReader jsonReader = Json.createReader(new StringReader(odgovor));
  90. JsonObject aerodromiObjekt = jsonReader.readObject();
  91. JsonArray aerodromiArray = aerodromiObjekt.getJsonArray("odgovor");
  92.  
  93. for (int i = 0; i < arr.size(); ++i) {
  94. JsonObject objAerodrom = arr.getJsonObject(i);
  95. String[] koordinate = objAerodrom.getString("kordinate").split(",");
  96. Lokacija l = new Lokacija(koordinate[0], koordinate[1]);
  97. aerodromi.add(new Aerodrom(objAerodrom.getString("icao"), objAerodrom.getString("naziv"), objAerodrom.getString("drzava"), l));
  98.  
  99. }
  100. p.close();*/
  101. }
  102.  
  103. public void mqttSlusac() {
  104. try {
  105. // promijeniti
  106. String user = "tompehard";
  107. String password = "tom999tom";
  108. String host = "nwtis.foi.hr";
  109. int port = 61613;
  110. final String destination = "/NWTiS/mtensic";
  111.  
  112. MQTT mqtt = new MQTT();
  113. mqtt.setHost(host, port);
  114. mqtt.setUserName(user);
  115. mqtt.setPassword(password);
  116.  
  117. connection = mqtt.callbackConnection();
  118. connection.listener(new org.fusesource.mqtt.client.Listener() {
  119. @Override
  120. public void onConnected() {
  121. System.out.println("Otvorena veza na MQTT");
  122. }
  123.  
  124. @Override
  125. public void onDisconnected() {
  126. System.out.println("Prekinuta veza na MQTT");
  127. System.exit(0);
  128. }
  129.  
  130. @Override
  131. public void onFailure(Throwable value) {
  132. System.out.println("Problem u vezi na MQTT");
  133. System.exit(-2);
  134. }
  135.  
  136. @Override
  137. public void onPublish(UTF8Buffer topic, Buffer msg, Runnable ack) {
  138. String body = msg.utf8().toString();
  139.  
  140. Thread t = new Thread(new Runnable() {
  141. public void run() {
  142. pristiglaMqttPoruka(body, idPoruke);
  143. }
  144. });
  145. t.start();
  146. //System.out.println(body);
  147. }
  148. });
  149. connection.connect(new Callback<Void>() {
  150. @Override
  151. public void onSuccess(Void value) {
  152. Topic[] topics = {new Topic(destination, QoS.AT_LEAST_ONCE)};
  153. connection.subscribe(topics, new Callback<byte[]>() {
  154. @Override
  155. public void onSuccess(byte[] qoses) {
  156. System.out.println("Pretplata na: " + destination);
  157. }
  158.  
  159. @Override
  160. public void onFailure(Throwable value) {
  161. System.out.println("Problem kod pretplate na: " + destination);
  162. System.exit(-2);
  163. }
  164. });
  165. }
  166.  
  167. @Override
  168. public void onFailure(Throwable value) {
  169. System.out.println("Neuspjela pretplata na: " + destination);
  170. System.exit(-2);
  171. }
  172. });
  173.  
  174. // Wait forever..
  175. synchronized (Listener.class) {
  176. while (true) {
  177. Listener.class.wait();
  178. }
  179. }
  180. } catch (URISyntaxException | InterruptedException ex) {
  181. Logger.getLogger(KorisnickeAkcije.class.getName()).log(Level.SEVERE, null, ex);
  182. }
  183. }
  184.  
  185. private void pristiglaMqttPoruka(String mqttPoruka) {
  186. System.out.println(poruka);
  187.  
  188. JsonReader jsonReader = Json.createReader(new StringReader(mqttPoruka));
  189. JsonObject odgovorParsed = jsonReader.readObject();
  190. int primljeniAerodrom = odgovorParsed.getString("aerodrom");
  191. String vrijeme = odgovorParsed.getString("vrijeme");
  192. String poruka = odgovorParsed.getString("poruka");
  193. int id = odgovorParsed.getInt("id");
  194. MqttPoruke mqtt = new MqttPoruke(id, poruka, new Date());
  195. mqttPorukeFacade.create(mqtt);
  196.  
  197. for (Aerodrom aerodrom : aerodromi) {
  198. if (aerodrom.getIcao().equals(primljeniAerodrom)) {
  199. saljiJmsPoruku(poruka, vrijeme);
  200. break;
  201. }
  202. }
  203. }
  204.  
  205. public void saljiJmsPoruku(String mqttPoruka, String vrijeme) {
  206. //String timeStamp = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss.SSS").format(new Timestamp(System.currentTimeMillis()));
  207. String idPoruke = String.valueOf(redniBrojJMSPoruke);
  208.  
  209. JsonObject response = new JsonObject();
  210. response.addProperty("id", idPoruke);
  211. response.addProperty("poruka", mqttPoruka);
  212. response.addProperty("vrijeme", vrijeme);
  213.  
  214. sendJMSMessageToNWTiS_mtensic_2(response.toString());
  215. redniBrojJMSPoruke++;
  216. }
  217.  
  218. private void sendJMSMessageToNWTiS_mtensic_2(String jsonPoruka) {
  219. try {
  220. Message msg = session.createTextMessage(jsonPoruka);
  221. context.createProducer().send(myQueue, msg);
  222. // ili
  223. //context.createProducer(myQueue).send(msg);
  224. } catch (JMSException ex) {
  225. Logger.getLogger(EmailDretva.class.getName()).log(Level.SEVERE, null, ex);
  226. }
  227. }
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement