Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package org.foi.nwtis.krigaslje.web.dretve;
- import java.io.IOException;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import java.util.regex.*;
- import javax.mail.Flags;
- import javax.mail.Folder;
- import javax.mail.Message;
- import javax.mail.MessagingException;
- import javax.mail.NoSuchProviderException;
- import javax.mail.Session;
- import javax.mail.Store;
- import javax.mail.internet.ContentType;
- import javax.mail.internet.MimeMessage;
- import javax.mail.search.FlagTerm;
- import javax.servlet.ServletContext;
- import org.foi.nwtis.krigaslje.konfiguracije.Konfiguracija;
- /**
- *
- * @author grupa_2
- */
- public class ObradaPoruka extends Thread {
- private boolean prekid_obrade = false;
- private ServletContext sc = null;
- @Override
- public void interrupt() {
- prekid_obrade = true;
- super.interrupt(); //To change body of generated methods, choose Tools | Templates.
- }
- @Override
- public void run() {
- Konfiguracija konf = (Konfiguracija) sc.getAttribute("Mail_Konfig");
- String serverDatabase = konf.dajPostavku("server.database");
- String adminUsername = konf.dajPostavku("admin.username");
- String adminPassword = konf.dajPostavku("admin.password");
- String adminDatabase = konf.dajPostavku("admin.database");
- String userUsername = konf.dajPostavku("user.username");
- String userPassword = konf.dajPostavku("user.password");
- String userDatabase = konf.dajPostavku("user.database");
- String driverDatabaseOdbc = konf.dajPostavku("driver.database.odbc");
- String driverDatabaseMysql = konf.dajPostavku("driver.database.mysql");
- String driverDatabaseDerby = konf.dajPostavku("driver.database.derby");
- String driverDatabasePostgressql = konf.dajPostavku("driver.database.postgresql");
- String server = konf.dajPostavku("mail.server");
- String port = konf.dajPostavku("mail.port");
- String korisnik = konf.dajPostavku("mail.usernameThread");
- String lozinka = konf.dajPostavku("mail.passwordThread");
- String timeSecThread = konf.dajPostavku("mail.timeSecThread");
- String numMessages = konf.dajPostavku("mail.sumMessages");
- String subject = konf.dajPostavku("mail.subject");
- String folderNWTiS = konf.dajPostavku("mail.folderNWTiS");
- String folderOther = konf.dajPostavku("folderOther");
- String usernameStat = konf.dajPostavku("mail.usernameStatistics");
- String subjectStat = konf.dajPostavku("mail.subjectStatistics");
- String usernameView = konf.dajPostavku("mail.usernameView");
- String passwordView = konf.dajPostavku("mail.passwordView");
- int trajanjeCiklusa = Integer.parseInt(konf.dajPostavku("mail.timeSecThread"));
- int trajanjeObrade = 0;
- //TODO odredi trajanje obrade
- int redniBrojCiklusa = 0;
- int brojUredaja = 0;
- int brojMjerenja = 0;
- int brojDogadaja = 0;
- while (!prekid_obrade) {
- // Start the session
- java.util.Properties properties = System.getProperties();
- properties.put("mail.smtp.host", server);
- Session session = Session.getInstance(properties, null);
- // Connect to the store
- try {
- Store store = session.getStore("imap");
- store.connect(server, korisnik, lozinka);
- // Open the INBOX folder
- Folder folder = store.getFolder("INBOX");
- folder.open(Folder.READ_ONLY);
- //dohvacam neprocitane
- Flags seen = new Flags(Flags.Flag.SEEN);
- FlagTerm unseenFlagTerm = new FlagTerm(seen, false);
- Message[] messages = folder.search(unseenFlagTerm);
- for (int i = 0; i < messages.length; ++i) {
- MimeMessage message = (MimeMessage) messages[i];
- try {
- Object object = (Object) message.getContent();
- ContentType ct = new ContentType(message.getContentType());
- //String s = "";
- //"text/plain".equalsIgnoreCase(ct.getBaseType())
- //(message.getSubject().equals(subject))
- if (message.getSubject().equals(subject)) { // TU JE SRANJE
- if ("text/plain".equalsIgnoreCase(ct.getBaseType())) {
- //obrada poruke
- String body = (String) object;
- String REGEX_TEMP = "TEMP IoT ([0-9]) T: (\\d{4}.\\d{2}.\\d{2}) (\\d{2}:\\d{2}:\\d{2}) C: (\\d{2}.\\d{1});";
- String REGEX_EVENT = "EVENT IoT (\\d{1}) T: (\\d{4}.\\d{2}.\\d{2}) (\\d{2}:\\d{2}:\\d{2}) F: (\\d{2});";
- String REGEX_ADD = "ADD IoT ([1-6]{1}) \"(.{1,30})\" GPS: (-?[0-9]{1,3}.?[0-9]{1,6}),(-?[0-9]{1,3}.?[0-9].{1,6});";
- Pattern patternAdd = Pattern.compile(REGEX_ADD);
- Pattern patternEvent = Pattern.compile(REGEX_EVENT);
- Pattern patternTemp = Pattern.compile(REGEX_TEMP);
- String cleanBody = body.replace("\n", "").replace("\r", "");
- Matcher mAdd = patternAdd.matcher(cleanBody);
- Matcher mEvent = patternEvent.matcher(cleanBody);
- Matcher mTemp = patternTemp.matcher(cleanBody);
- boolean statusAdd = mAdd.matches();
- boolean statusEvent = mEvent.matches();//ovo radi
- boolean statusTemp = mTemp.matches();
- if (statusAdd) {
- System.out.println("Dodan uređaj");
- //TODO dodaj uređaj u bazu - ako postoji onda je greška
- DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-mm-dd HH:mm:ss");
- LocalDateTime now = LocalDateTime.now();
- System.out.println(dtf.format(now));
- //db.insertUredaj(mAdd.group(2),mAdd.group(3),mAdd.group(4),mAdd.group(1), vrijeme_promjene, vrijeme_kreiranja);
- } else if (statusEvent) {
- System.out.println("Event");
- //provjerava se u Uređaji za zadain IOT broj i ako postoji dodaje se zapisa u događaji
- //inace greška ako ne postoji
- } else if (statusTemp) {
- System.out.println("Temp");
- //provjerava se u UREĐAJI za zadani IOT broj i ako postoji dodaje se u tablicu temp
- //inace je greska
- }
- }
- } else {
- //ovdje ide ono ako ne valja predmet poruke
- }
- } catch (IOException ex) {
- Logger.getLogger(ObradaPoruka.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- redniBrojCiklusa++;
- System.out.println("Obrada poruka u ciklusu: " + redniBrojCiklusa);
- sleep(trajanjeCiklusa * 1000 - trajanjeObrade);
- } catch (NoSuchProviderException ex) {
- Logger.getLogger(ObradaPoruka.class.getName()).log(Level.SEVERE, null, ex);
- } catch (MessagingException | InterruptedException ex) {
- Logger.getLogger(ObradaPoruka.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- }
- @Override
- public synchronized void start() {
- super.start(); //To change body of generated methods, choose Tools | Templates.
- }
- public void setSc(ServletContext sc) {
- this.sc = sc;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement