Advertisement
Guest User

Untitled

a guest
May 19th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.93 KB | None | 0 0
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package org.foi.nwtis.mtensic.ws.serveri;
  7.  
  8. import java.sql.Connection;
  9. import java.sql.DriverManager;
  10. import java.sql.PreparedStatement;
  11. import java.sql.ResultSet;
  12. import java.sql.SQLException;
  13. import java.sql.Statement;
  14. import java.sql.Timestamp;
  15. import java.util.ArrayList;
  16. import java.util.Date;
  17. import java.util.List;
  18. import java.util.logging.Level;
  19. import java.util.logging.Logger;
  20. import javax.jws.WebService;
  21. import javax.jws.WebMethod;
  22. import javax.jws.WebParam;
  23. import javax.servlet.ServletContext;
  24. import org.foi.nwtis.mtensic.konfiguracije.Konfiguracija;
  25. import org.foi.nwtis.mtensic.konfiguracije.bp.BP_Konfiguracija;
  26. import org.foi.nwtis.mtensic.web.podaci.Aerodrom;
  27. import org.foi.nwtis.rest.klijenti.LIQKlijent;
  28. import org.foi.nwtis.rest.podaci.AvionLeti;
  29. import org.foi.nwtis.rest.podaci.Lokacija;
  30.  
  31. /**
  32. *
  33. * @author Monika
  34. */
  35. @WebService(serviceName = "AIRP2WS")
  36. public class AIRP2WS {
  37.  
  38. private static ServletContext sc = null;
  39. private Konfiguracija konfig;
  40. private String airport_name;
  41. private String country;
  42.  
  43. /**
  44. * Web servis za dohvat svih aerodroma iz tablice MYAIRPORTS
  45. *
  46. * @return vraća se lista tipa Aerodrom koja sadrži aerodrome
  47. */
  48. @WebMethod(operationName = "dajSveAerodrome")
  49. public java.util.List<Aerodrom> dajSveAerodrome() {
  50. List<Aerodrom> aerodromi = new ArrayList<>();
  51. try {
  52. BP_Konfiguracija bp_konf = (BP_Konfiguracija) sc.getAttribute("BP_Konfig");
  53. Class.forName(bp_konf.getDriverDatabase());
  54.  
  55. String query = "SELECT * FROM MYAIRPORTS";
  56. try (Connection c = DriverManager.getConnection(bp_konf.getServerDatabase() + bp_konf.getUserDatabase(), bp_konf.getUserUsername(), bp_konf.getUserPassword());) {
  57. java.sql.Statement s = c.createStatement();
  58. ResultSet rs = s.executeQuery(query);
  59. System.out.println(rs);
  60. while (rs.next()) {
  61. String coordinates = rs.getString("COORDINATES");
  62. String[] split = coordinates.split(",");
  63. Lokacija lokacija = new Lokacija(split[0], split[1]);
  64. Aerodrom aerodrom = new Aerodrom(rs.getString("IDENT"), rs.getString("NAME"), rs.getString("ISO_COUNTRY"), lokacija);
  65. aerodromi.add(aerodrom);
  66. }
  67. } catch (SQLException ex) {
  68. System.out.println("ERROR! Greška kod spajanja na bazu.");
  69. }
  70. } catch (ClassNotFoundException ex) {
  71. Logger.getLogger(AIRP2WS.class.getName()).log(Level.SEVERE, null, ex);
  72. }
  73. return aerodromi;
  74.  
  75. }
  76.  
  77. /**
  78. * Web servis za dohvaćanje pojedinog aerodroma temeljem icao parametra
  79. *
  80. * @param icao je parametar po kojem se traži aerodrom iz tablice AIRPORTS
  81. * @return vraća se instanca tipa Aerodrom
  82. */
  83. @WebMethod(operationName = "dajAerodrom")
  84. public Aerodrom dajAerodrom(@WebParam(name = "icao") String icao
  85. ) {
  86. Aerodrom aerodrom = null;
  87. konfig = (Konfiguracija) sc.getAttribute("Konfig");
  88. try {
  89. BP_Konfiguracija bp_konf = (BP_Konfiguracija) sc.getAttribute("BP_Konfig");
  90. Class.forName(bp_konf.getDriverDatabase());
  91.  
  92. String query = "SELECT * FROM NWTIS_G3.AIRPORTS WHERE IDENT = '" + icao + "'";
  93. try (Connection c = DriverManager.getConnection(bp_konf.getServerDatabase() + bp_konf.getUserDatabase(), bp_konf.getUserUsername(), bp_konf.getUserPassword());) {
  94. Statement s = c.createStatement();
  95. ResultSet rs = s.executeQuery(query);
  96. while (rs.next()) {
  97. airport_name = rs.getString("NAME");
  98. country = rs.getString("ISO_COUNTRY");
  99. }
  100. } catch (SQLException ex) {
  101. System.out.println("ERROR! Greška kod dohvaćanja podataka.");
  102. }
  103. } catch (ClassNotFoundException ex) {
  104. System.out.println("ERROR! Greška kod spajanja na bazu.");
  105. }
  106.  
  107. String token = konfig.dajPostavku("LocationIQ.token");
  108. LIQKlijent liqk = new LIQKlijent(token);
  109. //System.out.println("icao: " + icao + ", name: " + airport_name + ", country: " + country + ", location: " + liqk.getGeoLocation(airport_name));
  110. aerodrom = new Aerodrom(icao, airport_name, country, liqk.getGeoLocation(airport_name));
  111. //System.out.println(liqk.getGeoLocation(airport_name).getLatitude() + ", " + liqk.getGeoLocation(airport_name).getLongitude());
  112. return aerodrom;
  113. }
  114.  
  115. /**
  116. * Static metoda koja vraća servlet context
  117. *
  118. * @return vraća se instanca servlet contexta
  119. */
  120. public static ServletContext getSc() {
  121. return sc;
  122. }
  123.  
  124. /**
  125. * Static metoda koja postavlja servlet context
  126. *
  127. * @param servletContext je kontekst servleta
  128. */
  129. public static void setSc(ServletContext servletContext) {
  130. AIRP2WS.sc = servletContext;
  131. }
  132.  
  133. /**
  134. * Web servis koji služi za dodavanje aerodroma iz tablice AIRPORTS u
  135. * tablicu MYAIRPORTS temeljem icao identifikatora
  136. *
  137. * @param icao je identifikator aerodroma koji se treba dohvatiti iz tablice
  138. * airports
  139. * @return vraća se boolean vrijednost ovisno o uspješnosti operacije
  140. */
  141. @WebMethod(operationName = "dodajAerodrom")
  142. public boolean dodajAerodrom(@WebParam(name = "icao") String icao) {
  143. String naziv = "";
  144. String drzava = "";
  145. try {
  146. BP_Konfiguracija bp_konf = (BP_Konfiguracija) sc.getAttribute("BP_Konfig");
  147. Class.forName(bp_konf.getDriverDatabase());
  148.  
  149. String query = "SELECT name, iso_country FROM AIRPORTS WHERE IDENT = '" + icao + "'";
  150. try (Connection c = DriverManager.getConnection(bp_konf.getServerDatabase() + bp_konf.getUserDatabase(), bp_konf.getUserUsername(), bp_konf.getUserPassword());) {
  151. Statement s = c.createStatement();
  152. ResultSet rs = s.executeQuery(query);
  153. while (rs.next()) {
  154. naziv = rs.getString("NAME");
  155. drzava = rs.getString("ISO_COUNTRY");
  156. }
  157. } catch (SQLException ex) {
  158. System.out.println("ERROR! Greska kod dohvacanja podataka.");
  159. }
  160. } catch (ClassNotFoundException ex) {
  161. System.out.println("ERROR! Greska kod spajanja na bazu.");
  162. }
  163.  
  164. konfig = (Konfiguracija) sc.getAttribute("Konfig");
  165. String token = konfig.dajPostavku("LocationIQ.token");
  166.  
  167. LIQKlijent liqk = new LIQKlijent(token);
  168. Lokacija lokacija = new Lokacija(liqk.getGeoLocation(naziv).getLatitude(), liqk.getGeoLocation(naziv).getLongitude());
  169.  
  170. try {
  171. BP_Konfiguracija bp_konf = (BP_Konfiguracija) sc.getAttribute("BP_Konfig");
  172. Class.forName(bp_konf.getDriverDatabase());
  173. Timestamp timestamp = new Timestamp(new Date().getTime());
  174. String lok = lokacija.getLatitude() + ", " + lokacija.getLongitude();
  175. String query = "INSERT INTO MYAIRPORTS (IDENT,NAME,ISO_COUNTRY,COORDINATES,STORED) VALUES (?, ?, ?, ?, ?)";
  176. try (Connection c = DriverManager.getConnection(bp_konf.getServerDatabase() + bp_konf.getUserDatabase(), bp_konf.getUserUsername(), bp_konf.getUserPassword());) {
  177. PreparedStatement preparedStatement = c.prepareStatement(query);
  178. preparedStatement.setString(1, icao);
  179. preparedStatement.setString(2, naziv);
  180. preparedStatement.setString(3, drzava);
  181. preparedStatement.setString(4, lok);
  182. preparedStatement.setTimestamp(5, timestamp);
  183. preparedStatement.execute();
  184. } catch (SQLException ex) {
  185. System.out.println("ERROR! Greska kod dohvacanja podataka.");
  186. }
  187. } catch (ClassNotFoundException ex) {
  188. System.out.println("ERROR! Greska kod spajanja na bazu.");
  189. }
  190.  
  191. return false;
  192. }
  193.  
  194. /**
  195. * Web servis koji služi za vraćanje lista tipe AvionLeti koja sadrži sve
  196. * avione koji su poletjeli s određenog aerodroma u određenom vremenskom
  197. * intervalu
  198. *
  199. * @param icao je identifikator aerodroma
  200. * @param odVremena je početak vremenskog intervala
  201. * @param doVremena je kraj vremenskog intervala
  202. * @return vraća se lista tipa AvionLeti koja sadrži poletjele avione s
  203. * određenog aerodroma
  204. */
  205. @WebMethod(operationName = "dajAvionePoletjeleSAerodroma")
  206. public java.util.List<AvionLeti> dajAvionePoletjeleSAerodroma(@WebParam(name = "icao") String icao, @WebParam(name = "odVremena") int odVremena, @WebParam(name = "doVremena") int doVremena) {
  207. java.util.List<AvionLeti> poletjeliAvioni = new ArrayList<>();
  208. AvionLeti avion;
  209.  
  210. konfig = (Konfiguracija) sc.getAttribute("Konfig");
  211. try {
  212. BP_Konfiguracija bp_konf = (BP_Konfiguracija) sc.getAttribute("BP_Konfig");
  213. Class.forName(bp_konf.getDriverDatabase());
  214.  
  215. String query = "SELECT * FROM NWTIS_G3.AIRPLANES WHERE ICAO24 = " + icao + " AND LASTSEEN < " + doVremena + " AND LASTSEEN >= " + odVremena;
  216. try (Connection c = DriverManager.getConnection(bp_konf.getServerDatabase() + bp_konf.getUserDatabase(), bp_konf.getUserUsername(), bp_konf.getUserPassword());) {
  217. Statement s = c.createStatement();
  218. ResultSet rs = s.executeQuery(query);
  219. while (rs.next()) {
  220. avion = new AvionLeti();
  221. avion.setIcao24(rs.getString("ICAO24"));
  222. avion.setFirstSeen(rs.getInt("FIRSTSEEN"));
  223. avion.setEstDepartureAirport(rs.getString("ESTDEPARTUREAIRPORT"));
  224. avion.setLastSeen(rs.getInt("LASTSEEN"));
  225. avion.setEstArrivalAirport(rs.getString("ESTARRIVALAIRPORT"));
  226. avion.setCallsign(rs.getString("CALLSIGN"));
  227. avion.setEstDepartureAirportHorizDistance(rs.getInt("ESTDEPARTUREAIRPORTHORIZDISTANCE"));
  228. avion.setEstDepartureAirportVertDistance(rs.getInt("ESTDEPARTUREAIRPORTVERTDISTANCE"));
  229. avion.setEstArrivalAirportHorizDistance(rs.getInt("ESTARRIVALAIRPORTHORIZDISTANCE"));
  230. avion.setEstArrivalAirportVertDistance(rs.getInt("ESTARRIVALAIRPORTVERTDISTANCE"));
  231. avion.setArrivalAirportCandidatesCount(rs.getInt("ARRIVALAIRPORTCANDIDATESCOUNT"));
  232. avion.setDepartureAirportCandidatesCount(rs.getInt("DEPARTUREAIRPORTCANDIDATESCOUNT"));
  233. poletjeliAvioni.add(avion);
  234. }
  235. } catch (SQLException ex) {
  236. System.out.println("ERROR! Greška kod dohvaćanja podataka.");
  237. }
  238. } catch (ClassNotFoundException ex) {
  239. System.out.println("ERROR! Greška kod spajanja na bazu.");
  240. }
  241.  
  242. return poletjeliAvioni;
  243. }
  244.  
  245. /**
  246. * Web servis koji vraća postavljenu konfiguraciju za broj redaka u
  247. * izborniku
  248. *
  249. * @return vraća se numerička vrijednost broja redaka u izborniku
  250. */
  251. @WebMethod(operationName = "izbornikBrojRedaka")
  252. public int izbornikBrojRedaka() {
  253. konfig = (Konfiguracija) sc.getAttribute("Konfig");
  254. int brojRedaka = Integer.parseInt(konfig.dajPostavku("izbornik.brojRedaka"));
  255. return brojRedaka;
  256. }
  257.  
  258. /**
  259. * Web servis koji vraća postavljenu konfiguraciju za broj redaka u tablici
  260. *
  261. * @return vraća se numerička vrijednost broja redaka u tablici
  262. */
  263. @WebMethod(operationName = "tablicaBrojRedaka")
  264. public int tablicaBrojRedaka() {
  265. konfig = (Konfiguracija) sc.getAttribute("Konfig");
  266. int brojRedaka = Integer.parseInt(konfig.dajPostavku("tablica.brojRedaka"));
  267. return brojRedaka;
  268. }
  269.  
  270. /**
  271. * Web servis koji služi za provjeru da li je određeni avion poletio s određenog aerodroma u vremenskom intervalu
  272. *
  273. * @param icao24 je identifikator polazišnog aerodroma
  274. * @param icao je identifaktor dolazišnog aerodroma
  275. * @param odVremena je početak vremenskog intervala
  276. * @param doVremena je kraj vremenskog intervala
  277. * @return vraća se boolean vrijednost ovisno o tome je li avion poletio ili ne
  278. */
  279. @WebMethod(operationName = "provjeriAvionPoletioSAerodroma")
  280. public boolean provjeriAvionPoletioSAerodroma(@WebParam(name = "icao24") String icao24, @WebParam(name = "icao") String icao, @WebParam(name = "odVremena") int odVremena, @WebParam(name = "doVremena") int doVremena) {
  281. konfig = (Konfiguracija) sc.getAttribute("Konfig");
  282. try {
  283. BP_Konfiguracija bp_konf = (BP_Konfiguracija) sc.getAttribute("BP_Konfig");
  284. Class.forName(bp_konf.getDriverDatabase());
  285.  
  286. String query = "SELECT * FROM NWTIS_G3.AIRPLANES WHERE ICAO24 = '" + icao24 + "' AND ESTARRIVALAIRPORT = '" + icao + "' AND LASTSEEN >= " + odVremena + " AND LASTSEEN <= " + doVremena;
  287. try (Connection c = DriverManager.getConnection(bp_konf.getServerDatabase() + bp_konf.getUserDatabase(), bp_konf.getUserUsername(), bp_konf.getUserPassword());) {
  288. Statement s = c.createStatement();
  289. ResultSet rs = s.executeQuery(query);
  290. if (rs.next() != false) {
  291. return true;
  292. }
  293. } catch (SQLException ex) {
  294. System.out.println("ERROR! Greška kod dohvaćanja podataka.");
  295. }
  296. } catch (ClassNotFoundException ex) {
  297. System.out.println("ERROR! Greška kod spajanja na bazu.");
  298. }
  299.  
  300. return false;
  301. }
  302. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement