Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.foi.nwtis.mtensic.ejb.sb;
- import java.io.StringReader;
- import java.util.ArrayList;
- import java.util.Queue;
- import javax.annotation.Resource;
- import javax.ejb.EJB;
- import javax.ejb.Stateful;
- import javax.ejb.LocalBean;
- import javax.inject.Inject;
- import javax.jms.JMSConnectionFactory;
- import javax.jms.JMSContext;
- import javax.json.Json;
- import javax.json.JsonReader;
- import org.foi.nwtis.mtensic.ejb.eb.MqttPoruke;
- import org.foi.nwtis.mtensic.podaci.Aerodrom;
- /**
- *
- * @author Monika
- */
- @Stateful
- @LocalBean
- public class KorisnickeAkcije {
- @EJB
- private MqttPorukeFacade mqttPorukeFacade;
- @EJB
- private DnevnikFacade dnevnikFacade;
- @Resource(mappedName = "jms/NWTiS_mtensic_2")
- private Queue myQueue;
- @Inject
- @JMSConnectionFactory("jms/NWTiS_mtensic_2Factory")
- private JMSContext context;
- private String korime;
- private String lozinka;
- private ArrayList<Aerodrom> aerodromi = new ArrayList<>();
- private int redniBrojJMSPoruke = 0;
- public boolean autentifikacija(String korime, String lozinka) {
- // logika za autenticiranje
- /*Aplikacija3REST app3 = new Aplikacija3REST(korime, lozinka);
- String odgovor = app3.autentifikacija();
- JsonReader jsonReader = Json.createReader(new StringReader(odgovor));
- JsonObject odgovorParsed = jsonReader.readObject();
- String status = odgovorParsed.getString("status");
- if (status.contains("OK")) {
- this.korime = korime;
- this.lozinka = lozinka;
- Thread t = new Thread(new Runnable() {
- public void run() {
- mqttPriprema();
- }
- });
- t.start();
- return true;
- } else {
- return false;
- }*/
- Thread t = new Thread(new Runnable() {
- public void run() {
- mqttPriprema();
- }
- });
- t.start();
- return true;
- }
- public void mqttPriprema() {
- dohvatiAerodrome();
- mqttSlusac();
- }
- public void dohvatiAerodrome() {
- /*AerodromiREST aerodromiREST = new AerodromiRest(korime, lozinka);
- String odgovor = aerodromiRest.dajSveAerodrome();
- JsonReader jsonReader = Json.createReader(new StringReader(odgovor));
- JsonObject aerodromiObjekt = jsonReader.readObject();
- JsonArray aerodromiArray = aerodromiObjekt.getJsonArray("odgovor");
- for (int i = 0; i < arr.size(); ++i) {
- JsonObject objAerodrom = arr.getJsonObject(i);
- String[] koordinate = objAerodrom.getString("kordinate").split(",");
- Lokacija l = new Lokacija(koordinate[0], koordinate[1]);
- aerodromi.add(new Aerodrom(objAerodrom.getString("icao"), objAerodrom.getString("naziv"), objAerodrom.getString("drzava"), l));
- }
- p.close();*/
- }
- public void mqttSlusac() {
- try {
- // promijeniti
- String user = "tompehard";
- String password = "tom999tom";
- String host = "nwtis.foi.hr";
- int port = 61613;
- final String destination = "/NWTiS/mtensic";
- MQTT mqtt = new MQTT();
- mqtt.setHost(host, port);
- mqtt.setUserName(user);
- mqtt.setPassword(password);
- connection = mqtt.callbackConnection();
- connection.listener(new org.fusesource.mqtt.client.Listener() {
- @Override
- public void onConnected() {
- System.out.println("Otvorena veza na MQTT");
- }
- @Override
- public void onDisconnected() {
- System.out.println("Prekinuta veza na MQTT");
- System.exit(0);
- }
- @Override
- public void onFailure(Throwable value) {
- System.out.println("Problem u vezi na MQTT");
- System.exit(-2);
- }
- @Override
- public void onPublish(UTF8Buffer topic, Buffer msg, Runnable ack) {
- String body = msg.utf8().toString();
- Thread t = new Thread(new Runnable() {
- public void run() {
- pristiglaMqttPoruka(body, idPoruke);
- }
- });
- t.start();
- //System.out.println(body);
- }
- });
- connection.connect(new Callback<Void>() {
- @Override
- public void onSuccess(Void value) {
- Topic[] topics = {new Topic(destination, QoS.AT_LEAST_ONCE)};
- connection.subscribe(topics, new Callback<byte[]>() {
- @Override
- public void onSuccess(byte[] qoses) {
- System.out.println("Pretplata na: " + destination);
- }
- @Override
- public void onFailure(Throwable value) {
- System.out.println("Problem kod pretplate na: " + destination);
- System.exit(-2);
- }
- });
- }
- @Override
- public void onFailure(Throwable value) {
- System.out.println("Neuspjela pretplata na: " + destination);
- System.exit(-2);
- }
- });
- // Wait forever..
- synchronized (Listener.class) {
- while (true) {
- Listener.class.wait();
- }
- }
- } catch (URISyntaxException | InterruptedException ex) {
- Logger.getLogger(KorisnickeAkcije.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- private void pristiglaMqttPoruka(String mqttPoruka) {
- System.out.println(poruka);
- JsonReader jsonReader = Json.createReader(new StringReader(mqttPoruka));
- JsonObject odgovorParsed = jsonReader.readObject();
- int primljeniAerodrom = odgovorParsed.getString("aerodrom");
- String vrijeme = odgovorParsed.getString("vrijeme");
- String poruka = odgovorParsed.getString("poruka");
- int id = odgovorParsed.getInt("id");
- MqttPoruke mqtt = new MqttPoruke(id, poruka, new Date());
- mqttPorukeFacade.create(mqtt);
- for (Aerodrom aerodrom : aerodromi) {
- if (aerodrom.getIcao().equals(primljeniAerodrom)) {
- saljiJmsPoruku(poruka, vrijeme);
- break;
- }
- }
- }
- public void saljiJmsPoruku(String mqttPoruka, String vrijeme) {
- //String timeStamp = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss.SSS").format(new Timestamp(System.currentTimeMillis()));
- String idPoruke = String.valueOf(redniBrojJMSPoruke);
- JsonObject response = new JsonObject();
- response.addProperty("id", idPoruke);
- response.addProperty("poruka", mqttPoruka);
- response.addProperty("vrijeme", vrijeme);
- sendJMSMessageToNWTiS_mtensic_2(response.toString());
- redniBrojJMSPoruke++;
- }
- private void sendJMSMessageToNWTiS_mtensic_2(String jsonPoruka) {
- try {
- Message msg = session.createTextMessage(jsonPoruka);
- context.createProducer().send(myQueue, msg);
- // ili
- //context.createProducer(myQueue).send(msg);
- } catch (JMSException ex) {
- Logger.getLogger(EmailDretva.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement