1. package dao;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.sql.Statement;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11.  
  12. import model.Company;
  13. import model.Zipcode;
  14.  
  15. public class Dao
  16. {
  17. static Connection conn = createConnection();
  18.  
  19. public static Connection createConnection()
  20. {
  21. Connection conn = null;
  22.  
  23. try {
  24. String userName = "root";
  25. String password = "test123";
  26. String url = "jdbc:mysql://localhost/exampledb";
  27. Class.forName("com.mysql.jdbc.Driver").newInstance();
  28. conn = DriverManager.getConnection(url, userName, password);
  29. System.out.println("Database connection established");
  30.  
  31. } catch (Exception e) {
  32. System.err.println("Cannot connect to database server: " + e);
  33. }
  34. return conn;
  35.  
  36. }
  37.  
  38. public static void storeCompany(Company company)
  39. {
  40. try {
  41. PreparedStatement c;
  42. c = conn.prepareStatement("INSERT INTO company (companynr,companyname,zip) VALUES(?,?,?)");
  43. c.setInt(1, company.getCompanynr());
  44. c.setString(2, company.getCompanyname());
  45. c.setString(3, company.getZip());
  46. c.executeUpdate();
  47. c.close();
  48. } catch (SQLException e) {
  49. System.out.println(e);
  50. }
  51.  
  52. }
  53.  
  54. public static void updateCompany(Company company, int oldNumber)
  55. {
  56. try {
  57. PreparedStatement c;
  58. c = conn.prepareStatement("UPDATE company SET companynr=?, companyname=?, zip=? WHERE companynr=?");
  59. c.setInt(1, company.getCompanynr());
  60. c.setString(2, company.getCompanyname());
  61. c.setString(3, company.getZip());
  62. c.setInt(4, oldNumber);
  63. c.executeUpdate();
  64. c.close();
  65. } catch (SQLException e) {
  66. if (e.getMessage().contains("Duplicate entry")) {
  67. System.out
  68. .println("Cannot have duplicate Primary Key (number)");
  69. }
  70. if (e.getMessage()
  71. .contains(
  72. "Cannot add or update a child row: a foreign key constraint fails")) {
  73. System.out.println("Invalid ZIP");
  74. }
  75. System.out.println(e);
  76. }
  77. }
  78.  
  79. public static void deleteCompany(Company company)
  80. {
  81. try {
  82. PreparedStatement c;
  83. c = conn.prepareStatement("DELETE FROM company WHERE companynr=?");
  84. c.setInt(1, company.getCompanynr());
  85. c.executeUpdate();
  86. c.close();
  87. } catch (SQLException e) {
  88. System.out.println(e);
  89. }
  90. }
  91.  
  92. public static List<Company> getAllCompanys()
  93. {
  94. ArrayList<Company> result = new ArrayList<Company>();
  95.  
  96. try {
  97.  
  98. Statement c = conn.createStatement();
  99. c.executeQuery("SELECT companynr, companyname, zip FROM company");
  100. ResultSet rs = c.getResultSet();
  101. while (rs.next()) {
  102. Company company = new Company();
  103.  
  104. company.setCompanynr(rs.getInt("companynr"));
  105.  
  106. company.setCompanyname(rs.getString("companyname"));
  107. if (rs.wasNull()) {
  108. company.setCompanyname("(name missing)");
  109. }
  110.  
  111. company.setZip(rs.getString("zip"));
  112. if (rs.wasNull()) {
  113. company.setZip("????");
  114. }
  115. result.add(company);
  116.  
  117. }
  118. rs.close();
  119. c.close();
  120.  
  121. } catch (SQLException e) {
  122. System.out.println(e);
  123. }
  124. return result;
  125.  
  126. }
  127.  
  128. public static ArrayList<Zipcode> getDistricts()
  129. {
  130. ArrayList<Zipcode> districts = new ArrayList<Zipcode>();
  131.  
  132. try {
  133.  
  134. Statement z = conn.createStatement();
  135. z.executeQuery("SELECT zip, postaldistrict FROM zipcode");
  136. ResultSet rs = z.getResultSet();
  137. while (rs.next()) {
  138. Zipcode zipcode = new Zipcode();
  139.  
  140. zipcode.setZip(rs.getString("zip"));
  141. if (rs.wasNull()) {
  142. zipcode.setZip("????");
  143. }
  144.  
  145. zipcode.setPostaldistrict(rs.getString("postaldistrict"));
  146. if (rs.wasNull()) {
  147. zipcode.setPostaldistrict("(district missing)");
  148. }
  149.  
  150. districts.add(zipcode);
  151.  
  152. }
  153. rs.close();
  154. z.close();
  155.  
  156. } catch (SQLException e) {
  157. System.out.println(e);
  158. }
  159. return districts;
  160.  
  161. }
  162.  
  163. public static ArrayList<Zipcode> getDistricts(String zip)
  164. {
  165. ArrayList<Zipcode> districts = new ArrayList<Zipcode>();
  166.  
  167. try {
  168.  
  169. Statement z = conn.createStatement();
  170. z.executeQuery("SELECT zip, postaldistrict FROM zipcode WHERE zip LIKE '"
  171. + zip + "%'");
  172. System.out.println(zip);
  173. ResultSet rs = z.getResultSet();
  174. while (rs.next()) {
  175. Zipcode zipcode = new Zipcode();
  176.  
  177. zipcode.setZip(rs.getString("zip"));
  178. if (rs.wasNull()) {
  179. zipcode.setZip("????");
  180. }
  181.  
  182. zipcode.setPostaldistrict(rs.getString("postaldistrict"));
  183. if (rs.wasNull()) {
  184. zipcode.setPostaldistrict("(district missing)");
  185. }
  186.  
  187. districts.add(zipcode);
  188.  
  189. }
  190. rs.close();
  191. z.close();
  192.  
  193. } catch (SQLException e) {
  194. System.out.println(e);
  195. }
  196. return districts;
  197.  
  198. }
  199. }
  200.