Advertisement
Guest User

Untitled

a guest
Oct 31st, 2016
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.02 KB | None | 0 0
  1. package vPakkaus;
  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.util.ArrayList;
  9.  
  10. /**
  11. * Luokka vastaa tietokantayhteydesta ja kyselyista.
  12. *
  13. */
  14. public class DB_AccessObject {
  15. // ACCESS SQL_DB_OBJ.
  16. private static Connection conn = null;
  17. private PreparedStatement ps = null;
  18. private ResultSet rs = null;
  19. /**
  20. * Luodaan yhteys virtuaalikoneeseen ja tietokantaan.
  21. *
  22. */
  23. public DB_AccessObject() {
  24. try {
  25. Class.forName("com.mysql.jdbc.Driver");
  26. //conn = DriverManager.getConnection("jdbc:mysql://10.114.32.19:3306/varasto", "jenkins", "jenkins");
  27. conn = DriverManager.getConnection("jdbc:mysql://localhost:9000/varasto", "toimi", "toimi");
  28. } catch (SQLException e) {
  29. System.out.println("Yhteyden muodostaminen epäonnistui");
  30. try {
  31. System.out.println("Yritetään muodostaa yhteys Jenkinsillä");
  32. conn = DriverManager.getConnection("jdbc:mysql://10.114.32.19:3306/varasto", "jenkins", "jenkins");
  33. } catch (SQLException e1) {
  34. // TODO Auto-generated catch block
  35. e1.printStackTrace();
  36. }
  37. } catch (ClassNotFoundException e) {
  38. System.out.println("JDBC-ajurin lataus epäonnistui");
  39. }
  40. }
  41.  
  42. // -----METODIT-----//
  43.  
  44. /**
  45. * Metodi, joka vastaa käyttäjätunnusten hakemisesta ja tarkistamisesta.
  46. *
  47. * @param uname kayttajatunnus
  48. * @param pword salasana
  49. * @return palautta listana.
  50. */
  51.  
  52. public int[] LogIn(String uname, String pword) {
  53. int res = 0; // Oletetaan, että login epäonnistuu
  54.  
  55. PreparedStatement haetiedot = null;
  56. ResultSet rs = null;
  57. String pass = "";
  58. int id = 0;
  59.  
  60. try {
  61. // Parametrisoitu sql-kysely
  62. haetiedot = conn.prepareStatement("SELECT * FROM users WHERE user = ?");
  63. try {
  64. // Asetetaan argumentit sql-kyselyyn
  65. haetiedot.setString(1, uname);
  66. rs = haetiedot.executeQuery();// Hae annetulla käyttäjänimellä
  67.  
  68. // tietokanta rivi
  69. try {
  70. while (rs.next()) {
  71. pass = rs.getString("pass"); // hae password column ja
  72. // tallenna muuttujaan
  73. id = rs.getInt("id");
  74. }
  75. } catch (SQLException e) {
  76. e.printStackTrace();
  77. } finally {
  78. rs.close();
  79. System.out.println("Tulosjuokko suljettu");
  80. }
  81. } catch (SQLException e) {
  82. System.out.println("Haku " + uname + " epäonnistui!");
  83. e.printStackTrace();
  84. }
  85. } catch (Exception e) {
  86. System.out.println("Tietojen haku epäonnistui!");
  87. } finally {
  88. try {
  89. haetiedot.close();
  90. System.out.println("Haku kysely suljettu");
  91. } catch (SQLException e) {
  92. System.out.println("Yhteyden sulkemisessa vikaa");
  93. e.printStackTrace();
  94. } catch (Exception e) {
  95. System.out.println("Vikaa LogInin lopussa");
  96. }
  97. }
  98.  
  99. if (pass.equals(pword)) { // tarkistetaan salasanat
  100. // True vain jos funktioon tullut salasana
  101. // on sama mikä löytyy tietokannasta
  102. res = 1;
  103. }
  104. int[] list = { res, id };
  105. return list;
  106. }
  107.  
  108. /**
  109. * Lisaa tavara tietokantaan. Kutsuu metodeita, jolla saadaan arvot syotettya oikeisiin tietokantatauluihin.
  110. *
  111. * @param nimi Tavaran nimi(String)
  112. * @param paino Tavaran paino (double)
  113. * @param tilavuus Tavaran tilavuus (double)
  114. * @param hyllypaikka missä hyllypaikassa tavara sijaitsee (String)
  115. * @param hinta Tavaran hinta (float)
  116. * @param maara Tavaran maara (int)
  117. * @return Onnistuuko tavaran lisaaminen (boolean)
  118. */
  119. public boolean Lisaa(String nimi, double paino, double tilavuus, String hyllypaikka, float hinta, int maara) {
  120.  
  121. Hyllypaikka h = HaeHylly("a-1");
  122. System.out.println(h.getTuoteID());
  123. ArrayList<Boolean> errors = new ArrayList(); //virheet kerätään listaan, false = ei virhettä
  124. Integer id = null;
  125. Product product = findProduct(nimi); //tarkistetaan löytyykö tuotetta jo samalla nimellä
  126.  
  127. if (product == null) { //!löytyy tarkoittaa että tuotetta ei löydy ja voidaan lisätä uusi
  128.  
  129. errors.add(addProductToDB(nimi, hinta, paino, tilavuus)); // lisätään tuote tuotetaulukkoon
  130. id = getProductID(nimi);
  131. System.out.println("id = "+id);
  132.  
  133. errors.add(addProductLocation(hyllypaikka, id));
  134. errors.add(addProductToWarehouse(maara, id));
  135.  
  136. if (errors.contains(!false)) {
  137. System.out.println(nimi+" lisätty onnistuneesti");
  138. return true;
  139. }
  140.  
  141. } else {
  142. System.out.println("Tuotetta ei voida lisätä tällä nimellä, tuote löytyy jo "+product.getProduct_name());
  143. }
  144. System.out.println("Virhe tapahtunut Prosessissa");
  145. return false;
  146. }
  147.  
  148.  
  149.  
  150. /**
  151. * Lisaa tiedot tavara-tauluun tietokannassa.
  152. *
  153. * @param nimi Tavaran nimi
  154. * @param hinta Tavaran hinta
  155. * @param paino Tavaran paino
  156. * @param tilavuus Tavaran tilavuus
  157. * @return jos jotain error tapahtuu lisaamisessa
  158. */
  159. public boolean addProductToDB(String nimi, float hinta, double paino, double tilavuus) {
  160.  
  161. boolean error = true;
  162. try {
  163. ps = conn.prepareStatement("INSERT INTO tuote(nimi, hinta, paino, tilavuus)" + "VALUES (?,?,?,?);");
  164. //haetaan tuotteen id tietokannasta
  165.  
  166. ps.setString(1, nimi);
  167. ps.setFloat(2, hinta);
  168. ps.setDouble(3, paino);
  169. ps.setDouble(4, tilavuus);
  170.  
  171. ps.executeUpdate();
  172. ps.close();
  173.  
  174. } catch (SQLException e) {
  175. error = false;
  176. System.out.println("Lisäys epäonnistui tuotetaulukkoon!");
  177. e.printStackTrace();
  178. }
  179. return error;
  180. }
  181.  
  182.  
  183. /**
  184. *Hakee tavaran ID:n nimen perusteella.
  185. *
  186. * @param nimi Tavaran nimi
  187. * @return Tavaran ID
  188. */
  189.  
  190. public int getProductID(String nimi) {
  191. Integer id = null;
  192.  
  193. try {
  194. ps = conn.prepareStatement("SELECT tuoteID FROM tuote WHERE nimi = ?");
  195.  
  196. // Asetetaan argumentit sql-kyselyyn
  197. ps.setString(1, nimi);
  198. rs = ps.executeQuery();// Hae annetulla käyttäjänimellä
  199. // tietokanta rivi
  200.  
  201. while (rs.next()) {
  202. id = rs.getInt("tuoteID");
  203. }
  204.  
  205. } catch (SQLException e) {
  206. e.printStackTrace();
  207. }
  208. return id;
  209. }
  210.  
  211. public Hyllypaikka HaeHylly(String tunnus){
  212. Hyllypaikka hyl = null;
  213. try {
  214. ps = conn.prepareStatement("select hyllypaikka.pituus, hyllypaikka.leveys, hyllypaikka.syvyys, tuoterivi.maara, tuoterivi.tuoteID from hyllypaikka, tuoterivi where hyllypaikka.tunnus=? and tuoterivi.hyllypaikka=hyllypaikka.tunnus;");
  215. ps.setString(1, tunnus);
  216. rs = ps.executeQuery();
  217. while(rs.next()){
  218. double leveys = rs.getDouble("leveys");
  219. double pituus = rs.getDouble("pituus");
  220. double syvyys = rs.getDouble("syvyys");
  221. int maara = rs.getInt("maara");
  222. int tuoteID = rs.getInt("tuoteID");
  223. hyl = new Hyllypaikka(pituus, leveys, syvyys, maara, tuoteID);
  224. }
  225. } catch (SQLException e) {
  226. e.printStackTrace();
  227. }
  228.  
  229. return hyl;
  230. }
  231.  
  232. /**
  233. * Etsii tavaran nimen perusteella.
  234. *
  235. * @param nimi Tavaran nimi
  236. * @return palauttaa tavaran kaikki tietueet nimen perusteella.(palauttaa null, jos tavara ei löyty.)
  237. */
  238. public Product findProduct(String nimi) {
  239. Product product = null;
  240.  
  241. try {
  242. ps = conn.prepareStatement("SELECT tuote.tuoteID, tuote.nimi, tuote.hinta, tuote.paino, tuote.tilavuus FROM tuote WHERE tuote.nimi = ?");
  243.  
  244. // Asetetaan argumentit sql-kyselyyn
  245. ps.setString(1, nimi);
  246. rs = ps.executeQuery();// Hae annetulla käyttäjänimellä
  247. // tietokanta rivi
  248.  
  249. while (rs.next()) {
  250. int id = rs.getInt("tuoteID");
  251. String name = rs.getString("nimi");
  252. String hyllypaikka = rs.getString("tunnus");
  253. double paino = rs.getDouble("paino");
  254. double pituus = rs.getDouble("pituus");
  255. double leveys = rs.getDouble("leveys");
  256. double syvyys = rs.getDouble("syvyys");
  257. float hinta = rs.getFloat("hinta");
  258. int maara = rs.getInt("maara");
  259. System.out.println(name+ " "+ hyllypaikka+ " "+ paino+ " "+ pituus+ " "+ hinta + " " +maara);
  260.  
  261. product = new Product(name, hyllypaikka, paino, syvyys,pituus,leveys, hinta, maara);
  262. product.setID(id);
  263. }
  264.  
  265. } catch (SQLException e) {
  266. e.printStackTrace();
  267. }
  268.  
  269. return product;
  270. }
  271.  
  272. /**
  273. * Lisaa tavaralle hyllypaikka tietokantaan.
  274. *
  275. * @param hyllypaikka varaston hyllypaikat
  276. * @param id tavaran ID
  277. * @return Palauta booleana, onko lisaaminen onnistunut
  278. */
  279. public boolean addProductLocation(String hyllypaikka, int id){
  280. boolean error = true;
  281.  
  282. try {
  283. ps = conn.prepareStatement("INSERT INTO hyllypaikka(tunnus, tuoteID)" + "VALUES (?,?);");
  284.  
  285. ps.setString(1, hyllypaikka);
  286. ps.setInt(2, id);
  287.  
  288. ps.executeUpdate();
  289. ps.close();
  290.  
  291. } catch (SQLException e) {
  292. System.out.println("Lisäys epäonnistui hyllypaikkataulukkoon!");
  293. e.printStackTrace();
  294. error = false;
  295. }
  296. return error;
  297. }
  298.  
  299. /**
  300. * Lisaa tietokantaan tuotteelle oikean varaston.
  301. *
  302. * @param maara Tavaran maara
  303. * @param id Tavaran ID
  304. * @return Palauta booleana, onko lisaaminen onnistunut
  305. */
  306. public boolean addProductToWarehouse(int maara, int id) {
  307. boolean error = true;
  308. try {
  309. ps= conn.prepareStatement("INSERT INTO varasto(varastoID, maara, tuoteID)" + "VALUES (?,?,?);");
  310.  
  311. int varastoID = 1;
  312. ps.setInt(1, varastoID);
  313. ps.setInt(2, maara);
  314. ps.setInt(3, id);
  315.  
  316. ps.executeUpdate();
  317. ps.close();
  318.  
  319. } catch (SQLException e) {
  320. System.out.println("Lisäys epäonnistui varastotaulukkoon!");
  321. e.printStackTrace();
  322. error = false;
  323. }
  324. return error;
  325. }
  326.  
  327. /**
  328. *Hakee useamman tavaran tietueet. Hakuehto on osa tavaran nimestä.
  329. *
  330. * @param nimi Tavaran nimi.
  331. * @return Palauttaa ArrayList, mika sisaltaa product olioita.
  332. */
  333. public ArrayList<Product> findProducts(String nimi) {
  334. ArrayList<Product> products = new ArrayList();
  335. Product product;
  336.  
  337. try {
  338. nimi = "%"+nimi+"%";
  339. ps = conn.prepareStatement("SELECT tuote.tuoteID, tuote.nimi, tuote.hinta, tuote.paino, tuote.tilavuus, hyllypaikka.tunnus, varasto.maara FROM tuote, hyllypaikka, varasto WHERE tuote.nimi LIKE ? AND tuote.tuoteID = hyllypaikka.tuoteID AND tuote.tuoteID = varasto.tuoteID;");
  340.  
  341. // Asetetaan argumentit sql-kyselyyn
  342. ps.setString(1, nimi);
  343. rs = ps.executeQuery();// Hae annetulla käyttäjänimellä
  344. // tietokanta rivi
  345.  
  346. while (rs.next()) {
  347.  
  348. int id = rs.getInt("tuoteID");
  349. String name = rs.getString("nimi");
  350. String hyllypaikka = rs.getString("tunnus");
  351. double paino = rs.getDouble("paino");
  352. double tilavuus = rs.getDouble("tilavuus");
  353. float hinta = rs.getFloat("hinta");
  354. int maara = rs.getInt("maara");
  355.  
  356. product = new Product(name, hyllypaikka, paino, tilavuus, hinta, maara);
  357. product.setID(id);
  358. products.add(product);
  359. }
  360.  
  361.  
  362. } catch (SQLException e) {
  363. e.printStackTrace();
  364. }
  365.  
  366. return products;
  367. }
  368.  
  369. /**
  370. * Paivittaa tavaran tiedot tietokantaan.
  371. *
  372. * @param products tavaran tietue
  373. * @return Return error, jos tavaran lisaaminen epäonnistuu.
  374. */
  375. public boolean updateProducts(ArrayList<Product> products) {
  376. boolean error = true;
  377.  
  378. for(Product p : products){
  379.  
  380. try {
  381. ps= conn.prepareStatement("UPDATE tuote, varasto, hyllypaikka SET tuote.nimi = ?,tuote.hinta = ?, tuote.paino = ?, tuote.tilavuus = ?, hyllypaikka.tunnus = ?, varasto.maara = ? WHERE tuote.tuoteID = hyllypaikka.tuoteID AND tuote.tuoteID = varasto.tuoteID AND tuote.tuoteID = ?;");
  382.  
  383. ps.setString(1, p.getProduct_name());
  384. ps.setFloat(2, p.getProduct_price());
  385. ps.setDouble(3, p.getProduct_weight());
  386. ps.setDouble(4, p.getProduct_volume());
  387. ps.setString(5, p.getProduct_location());
  388. ps.setInt(6, p.getMaara());
  389. ps.setInt(7, p.getID());
  390.  
  391. ps.executeUpdate();
  392. ps.close();
  393.  
  394. } catch (SQLException e) {
  395. e.printStackTrace();
  396. error = false;
  397. }
  398.  
  399. }
  400.  
  401. return error;
  402. }
  403.  
  404.  
  405. /**
  406. * Sulje tietokanta yhteys.
  407. *
  408. * @throws SQLException Heittää error, jos jostain syystä sulkeminen epäonnistuu
  409. */
  410.  
  411. public void close() throws SQLException {
  412. conn.close();
  413. }
  414.  
  415.  
  416. /**
  417. * Tavaran tiedon postaminen.
  418. *
  419. * @param id Tavaran ID
  420. * @return Palauta booleana, onko poistaminen onnistunut.
  421. */
  422.  
  423. public boolean deleteProduct(int id){
  424. boolean error = true;
  425. ps = null;
  426. try {
  427. ps = conn.prepareStatement("DELETE FROM hyllypaikka WHERE tuoteID = ?");
  428. ps.setInt(1, id);
  429. ps.executeUpdate();
  430. ps = conn.prepareStatement("DELETE FROM varasto WHERE tuoteID = ?");
  431. ps.setInt(1, id);
  432. ps.executeUpdate();
  433. ps = conn.prepareStatement("DELETE FROM tuote WHERE tuoteID = ?");
  434. ps.setInt(1, id);
  435. ps.executeUpdate();
  436. } catch (SQLException e) {
  437. // TODO Auto-generated catch block
  438. error = false;
  439. e.printStackTrace();
  440. }
  441. return error;
  442. }
  443.  
  444. /**
  445. * Poistaa kaikkien taulujen sisällöt joilla on viitteitä tuote tauluun sekä poistaa tuotetaulun rivit.
  446. * Käytetään vain testailussa.
  447. */
  448.  
  449. public void dropTuotteet(){
  450. ps = null;
  451. try {
  452. ps = conn.prepareStatement("DELETE FROM hyllypaikka");
  453. ps.executeUpdate();
  454. ps = conn.prepareStatement("DELETE FROM varasto");
  455. ps.executeUpdate();
  456. ps = conn.prepareStatement("DELETE FROM tuote");
  457. ps.executeUpdate();
  458. } catch (SQLException e) {
  459. // TODO Auto-generated catch block
  460. e.printStackTrace();
  461. }
  462.  
  463. }
  464.  
  465. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement