/OCA/src/dataMapper/AssicuratoMapper.java

https://gitlab.com/TheEdoardo93/OCA · Java · 285 lines · 182 code · 36 blank · 67 comment · 25 complexity · 5e39aa5d6a9ba7d5b61a939da0c4952e MD5 · raw file

  1. package dataMapper;
  2. import util.Assicurato;
  3. import util.DBConnection;
  4. import java.io.IOException;
  5. import java.sql.Connection;
  6. import java.sql.PreparedStatement;
  7. import java.sql.ResultSet;
  8. import java.sql.SQLException;
  9. import java.util.ArrayList;
  10. /**
  11. * Questa classe funge da dataMapper per l'oggetto Assicurato.
  12. */
  13. /**
  14. * @author Casiraghi Edoardo
  15. * @author Palmiero Marco
  16. * @author Terragni Silvia
  17. *
  18. */
  19. public class AssicuratoMapper {
  20. /**
  21. * Questo metodo interroga il database OCB per ricercare un assicurato
  22. * tramite nome o cognome o entrambi. La ricerca potenzialmente può restituire
  23. * più assicurati. Viene istanziato un oggetto Assicurato per ogni risultato
  24. * della query e viene restituito un ArrayList di assicurati.
  25. *
  26. * @param nome String
  27. * @param cognome String
  28. * @return assicurati ArrayList di Assicurato
  29. */
  30. public ArrayList<Assicurato> find(String nome, String cognome) {
  31. ArrayList<Assicurato> assicurati = new ArrayList<Assicurato>();
  32. PreparedStatement preparedStatement = null;
  33. Connection conn = null;
  34. try {
  35. conn = new DBConnection().getOcbConnection();
  36. //query al database OCB
  37. String query = "SELECT id_assicurato, nome, cognome FROM ocb.assicurato";
  38. boolean n = false;
  39. boolean c = false;
  40. if (!(cognome.equals(""))) {
  41. //se viene inserito solo il cognome dell'assicurato
  42. query = query + " where cognome = ?";
  43. c = true;
  44. if (!(nome.equals(""))) {
  45. //se viene inserito sia il nome sia il cognome dell'assicurato
  46. query = query + " AND nome= ?";
  47. n = true;
  48. }
  49. } else {
  50. if (!(nome.equals(""))) {
  51. //se viene inserito solo il nome dell'assicurato
  52. query = query + " where nome= ?";
  53. n = true;
  54. }
  55. }
  56. preparedStatement = conn.prepareStatement(query);
  57. if (c == true) {
  58. preparedStatement.setString(1, cognome);
  59. if (n == true) {
  60. preparedStatement.setString(2, nome);
  61. }
  62. } else {
  63. if (n == true) {
  64. preparedStatement.setString(1, nome);
  65. }
  66. }
  67. ResultSet rs = preparedStatement.executeQuery();
  68. while (rs.next()) {
  69. //i risultati della query (Assicurati) vengono aggiunti all'ArrayList
  70. assicurati.add(new Assicurato(rs.getInt("id_assicurato"),
  71. rs.getString("cognome"), rs.getString("nome")));
  72. }
  73. conn.close();
  74. if (assicurati.size() == 0)
  75. assicurati = null;
  76. return assicurati;
  77. } catch (SQLException e) {
  78. System.err.println("Attenzione: messaggio SQL = " + e.getMessage());
  79. System.err.println("Attenzione: codice di errore SQL = " + e.getErrorCode());
  80. System.err.println("Attenzione: stato SQL = " + e.getSQLState());
  81. e.printStackTrace();
  82. } catch (ClassNotFoundException e) {
  83. // TODO Auto-generated catch block
  84. e.printStackTrace();
  85. } catch (IOException e) {
  86. // TODO Auto-generated catch block
  87. e.printStackTrace();
  88. }
  89. return null;
  90. }
  91. /**
  92. * Questo metodo interroga il database OCB per ricercare un assicurato
  93. * tramite il suo identificativo. Viene istanziato l'oggetto Assicurato
  94. * se trovato e viene restituito.
  95. *
  96. * @param idAssicurato String
  97. * @return assicurato Assicurato
  98. */
  99. public Assicurato find(String idAssicurato) {
  100. PreparedStatement preparedStatement = null;
  101. Connection conn = null;
  102. try {
  103. conn = new DBConnection().getOcbConnection();
  104. Assicurato assicurato = null;
  105. if (!(idAssicurato.equals(""))) { //se l'identificativo dell'assicurato è presente
  106. //query al database OCB
  107. String query = "select nome, cognome from ocb.assicurato where assicurato.id_assicurato = ?";
  108. preparedStatement = conn.prepareStatement(query);
  109. preparedStatement.setString(1, idAssicurato);
  110. ResultSet rs = preparedStatement.executeQuery();
  111. while (rs.next()) {
  112. assicurato = new Assicurato(Integer.parseInt(idAssicurato), rs.getString("cognome"), rs.getString("nome"));
  113. }
  114. }
  115. conn.close();
  116. return assicurato;
  117. } catch (SQLException e) {
  118. System.err.println("Attenzione: messaggio SQL = " + e.getMessage());
  119. System.err.println("Attenzione: codice di errore SQL = " + e.getErrorCode());
  120. System.err.println("Attenzione: stato SQL = " + e.getSQLState());
  121. e.printStackTrace();
  122. } catch (ClassNotFoundException e) {
  123. // TODO Auto-generated catch block
  124. e.printStackTrace();
  125. } catch (IOException e) {
  126. // TODO Auto-generated catch block
  127. e.printStackTrace();
  128. }
  129. return null;
  130. }
  131. /**
  132. * Questo metodo, una volta che dall'interfaccia grafica utente viene selezionato
  133. * l'assicurato di interesse, recupera dai database OCB e BDA tutte le
  134. * informazioni anangrafiche associate all'assicurato. Istanzia e restituisce
  135. * l'oggetto rappresentante l'assicurato, completo delle informazioni reperite.
  136. *
  137. * @param ultimo_assicurato_selezionato int
  138. * @return assicurato Assicurato
  139. */
  140. public Assicurato getInfo(int ultimo_assicurato_selezionato ) {
  141. PreparedStatement preparedStatement = null;
  142. Connection conn = null;
  143. try {
  144. conn = new DBConnection().getOcbConnection();
  145. Assicurato assicurato = null;
  146. if (!(ultimo_assicurato_selezionato == -1)) { //se l'identificativo dell'assicurato è presente
  147. //query al database BDA ed al database OCB per recuperare le informazioni dell'assicurato
  148. String query = "select ocb.assicurato.id_assicurato, ocb.assicurato.nome,"
  149. + " ocb.assicurato.cognome, ocb.assicurato.livelloRischio, bda.assicurato.dataNascita,"
  150. + " bda.assicurato.id_residenza, comune, provincia, regione, cap, telefono"
  151. + " from ocb.assicurato join bda.assicurato"
  152. + " on bda.assicurato.id_assicurato = ocb.assicurato.id_assicurato,"
  153. + " bda.comune where ocb.assicurato.id_assicurato = ? AND"
  154. + " bda.assicurato.id_residenza=comune.id_comune";
  155. preparedStatement = conn.prepareStatement(query);
  156. preparedStatement.setInt(1, ultimo_assicurato_selezionato );
  157. ResultSet rs = preparedStatement.executeQuery();
  158. while (rs.next()) {
  159. assicurato = new Assicurato(ultimo_assicurato_selezionato , rs.getString("cognome"), rs.getString("nome"),
  160. rs.getString("dataNascita"), rs.getInt("livelloRischio"), rs.getString("comune"),
  161. rs.getString("provincia"), rs.getString("regione"), rs.getString("cap"),
  162. rs.getString("telefono"));
  163. }
  164. }
  165. conn.close();
  166. return assicurato;
  167. } catch (SQLException e) {
  168. System.err.println("Attenzione: messaggio SQL = " + e.getMessage());
  169. System.err.println("Attenzione: codice di errore SQL = " + e.getErrorCode());
  170. System.err.println("Attenzione: stato SQL = " + e.getSQLState());
  171. e.printStackTrace();
  172. } catch (ClassNotFoundException e) {
  173. // TODO Auto-generated catch block
  174. e.printStackTrace();
  175. } catch (IOException e) {
  176. // TODO Auto-generated catch block
  177. e.printStackTrace();
  178. }
  179. return null;
  180. }
  181. /**
  182. * Questo metodo effettua un aggiornamento sul database OCB delle informazioni dell'assicurato
  183. * contenute nell'oggetto Assicurato ricevuto come parametro in input al metodo.
  184. *
  185. * @param assicurato Assicurato
  186. */
  187. public void update(Assicurato assicurato) {
  188. if (assicurato.getIdAssicurato() != -1) {
  189. Connection conn = null;
  190. try {
  191. conn = new DBConnection().getOcbConnection();
  192. //query di aggiornamento delle informazioni dell'assicurato nel database OCB
  193. String query = "UPDATE ocb.assicurato SET ocb.assicurato.telefono = ? "
  194. + "WHERE ocb.assicurato.id_assicurato";
  195. PreparedStatement preparedStmt = conn.prepareStatement(query);
  196. preparedStmt.setString(1, assicurato.getTelefono());
  197. preparedStmt.setInt(2, assicurato.getIdAssicurato());
  198. preparedStmt.execute();
  199. conn.close();
  200. } catch (SQLException e) {
  201. System.err.println("Attenzione: messaggio SQL = " + e.getMessage());
  202. System.err.println("Attenzione: codice di errore SQL = " + e.getErrorCode());
  203. System.err.println("Attenzione: stato SQL = " + e.getSQLState());
  204. e.printStackTrace();
  205. } catch (ClassNotFoundException e) {
  206. // TODO Auto-generated catch block
  207. e.printStackTrace();
  208. } catch (IOException e) {
  209. // TODO Auto-generated catch block
  210. e.printStackTrace();
  211. }
  212. } else {
  213. System.err.println("Attenzione: non è stato inserito l'identificativo dell'assicurato!");
  214. }
  215. }
  216. /**
  217. * Questo metodo cancella da OCB le informazioni relative all'assicurato ricevuto
  218. * in input a questo metodo.
  219. *
  220. * @param assicurato Assicurato
  221. */
  222. public void delete(Assicurato assicurato) {
  223. if (assicurato.getIdAssicurato() != -1) {
  224. Connection conn = null;
  225. try {
  226. conn = new DBConnection().getOcbConnection();
  227. //query di cancellazione al database OCB
  228. String query = "DELETE FROM ocb.assicurato WHERE ocb.assicurato.id_assicurato = ?";
  229. PreparedStatement preparedStmt = conn.prepareStatement(query);
  230. preparedStmt.setInt(1, assicurato.getIdAssicurato());
  231. preparedStmt.execute();
  232. conn.close();
  233. } catch (SQLException e) {
  234. System.err.println("Attenzione: messaggio SQL = " + e.getMessage());
  235. System.err.println("Attenzione: codice di errore SQL = " + e.getErrorCode());
  236. System.err.println("Attenzione: stato SQL = " + e.getSQLState());
  237. e.printStackTrace();
  238. } catch (ClassNotFoundException e) {
  239. // TODO Auto-generated catch block
  240. e.printStackTrace();
  241. } catch (IOException e) {
  242. // TODO Auto-generated catch block
  243. e.printStackTrace();
  244. }
  245. } else {
  246. System.err.println("Attenzione: non è stato inserito l'identificativo dell'assicurato!");
  247. }
  248. }
  249. }