Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2017
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.69 KB | None | 0 0
  1. package hib;
  2.  
  3. import java.util.List;
  4. import javax.servlet.http.HttpSession;
  5. import main.Utils;
  6. import org.hibernate.Query;
  7. import org.hibernate.Session;
  8. import org.hibernate.cfg.AnnotationConfiguration;
  9. import org.hibernate.SessionFactory;
  10.  
  11. /**
  12. * Hibernate Utility class with a convenient method to get Session Factory object.
  13. *
  14. * @author barry
  15. */
  16. public class HibernateUtil
  17. {
  18.  
  19. public static char closeAccountIfPossible(User user)
  20. {
  21. char result;
  22. try
  23. {
  24. Session session = HibernateUtil.getSessionFactory().openSession();
  25. session.beginTransaction();
  26.  
  27. Query q = session.createQuery("from Transaction as transaction "
  28. + "where transaction.accountNum=:accountNum order by unixTime desc");
  29. q.setParameter("accountNum", user.getAccountNum());
  30. q.setMaxResults(1);
  31. Transaction lastTransaction = (Transaction) q.uniqueResult();
  32.  
  33. long balance = lastTransaction.getBalance();
  34.  
  35. // CLOSE ACCOUNT
  36. if (balance == 0)
  37. {
  38. session.delete(user);
  39.  
  40. q = session.createQuery("delete from Transaction as transaction "+
  41. "where transaction.accountNum=:accountNum");
  42. q.setParameter("accountNum", user.getAccountNum());
  43. q.executeUpdate();
  44.  
  45. result = 's';
  46. }
  47. else if (balance > 0)
  48. {
  49. result = 'g';
  50. }
  51. else
  52. {
  53. result = 'l';
  54. }
  55.  
  56. session.getTransaction().commit();
  57. session.close();
  58. }
  59. catch (Exception e)
  60. {
  61. result = 'e';
  62. }
  63.  
  64. return result;
  65. }
  66.  
  67. public static void main(String[] args)
  68. {
  69. char r = deleteRecordsInUserTable();
  70. System.out.println("r="+r);
  71. }
  72. public static char deleteRecordsInUserTable()
  73. {
  74. Utils.p("HIBERNATEUTIL, deleteRecordsInUserTable");
  75. char result;
  76. try
  77. {
  78. Session session = HibernateUtil.getSessionFactory().openSession();
  79. session.beginTransaction();
  80.  
  81. //Utils.p("HIBENATEUTILS, "+((session==null)?"NULL SESSION":"NOT NULL SESSION"));
  82. //Utils.p("HIBENATEUTILS A");
  83. Query q = session.createQuery("delete from User");
  84.  
  85.  
  86. q.executeUpdate();
  87. q = session.createQuery("delete from Transaction");
  88. q.executeUpdate();
  89.  
  90. //Utils.p("HIBENATEUTILS C");
  91. result = 'd';
  92.  
  93. session.getTransaction().commit();
  94. session.close();
  95.  
  96. //Utils.p("HIBENATEUTILS D");
  97. }
  98. catch (Exception e)
  99. {
  100. result = 'e';
  101. Utils.p("HIBENATEUTILS E"+e.getMessage());
  102. }
  103.  
  104. return result;
  105. }
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112. Session session = null;
  113. private static final SessionFactory sessionFactory;
  114.  
  115. static
  116. {
  117. try
  118. {
  119. // Create the SessionFactory from standard (hibernate.cfg.xml)
  120. // config file.
  121. sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
  122. } catch (Throwable ex)
  123. {
  124. // Log the exception.
  125. System.err.println("Initial SessionFactory creation failed." + ex);
  126. throw new ExceptionInInitializerError(ex);
  127. }
  128. }
  129.  
  130. public static SessionFactory getSessionFactory()
  131. {
  132. return sessionFactory;
  133. }
  134.  
  135. public static boolean addUser(User user)
  136. {
  137. try
  138. {
  139. Session session = HibernateUtil.getSessionFactory().openSession();
  140. session.beginTransaction();
  141. session.save(user);
  142.  
  143. session.getTransaction().commit();
  144. session.close();
  145. } catch (Exception e)
  146. {
  147. return false;
  148. }
  149.  
  150. return true;
  151. }
  152.  
  153. public static List<User> getUsersNotThisAccountNum(String accountNum)
  154. {
  155. List<User> users = null;
  156.  
  157. try
  158. {
  159. Session session = HibernateUtil.getSessionFactory().openSession();
  160. session.beginTransaction();
  161.  
  162. Query q = session.createQuery("from User as user "
  163. + "where user.accountNum != :accountNum");
  164. q.setParameter("accountNum", accountNum);
  165. users = q.list();
  166.  
  167. session.getTransaction().commit();
  168. session.close();
  169. } catch (Exception e)
  170. {
  171. }
  172.  
  173. return users;
  174. }
  175.  
  176.  
  177.  
  178. public static boolean identicalAccountNumberPresent(String generatedAN)
  179. {
  180. boolean identicalPresent = false;
  181.  
  182. try
  183. {
  184. Session session = HibernateUtil.getSessionFactory().openSession();
  185. session.beginTransaction();
  186.  
  187. Query q = session.createQuery("from User as user "
  188. + "where user.accountNum = :accountNum");
  189. q.setParameter("accountNum", generatedAN);
  190. if (!q.list().isEmpty())
  191. {
  192. identicalPresent = true;
  193. }
  194.  
  195. session.getTransaction().commit();
  196. session.close();
  197. } catch (Exception e)
  198. {
  199. }
  200.  
  201. return identicalPresent;
  202. }
  203.  
  204.  
  205.  
  206. public static long getLastBalance(String accountNum) throws Exception
  207. {
  208. Session session = HibernateUtil.getSessionFactory().openSession();
  209. session.beginTransaction();
  210.  
  211. Query q = session.createQuery("from Transaction as transaction "
  212. + "where transaction.accountNum=:accountNum order by unixTime desc");
  213. q.setParameter("accountNum", accountNum);
  214. q.setMaxResults(1);
  215. long balance = ((Transaction) q.uniqueResult()).getBalance();
  216.  
  217. session.getTransaction().commit();
  218. session.close();
  219.  
  220. return balance;
  221. }
  222.  
  223. public static boolean updateUserAndHttpSessionBean(User user, long desiredOverdraft, HttpSession httpSession)
  224. {
  225. boolean userUpdated;
  226. user.setOverdraft(desiredOverdraft);
  227.  
  228. try
  229. {
  230. Session session = HibernateUtil.getSessionFactory().openSession();
  231. session.beginTransaction();
  232.  
  233. session.update(user);
  234. userUpdated = true;
  235.  
  236. session.getTransaction().commit();
  237. session.close();
  238. } catch (Exception e)
  239. {
  240. userUpdated = false;
  241. }
  242.  
  243. httpSession.setAttribute("USERBEAN", user);
  244.  
  245. return userUpdated;
  246. }
  247.  
  248. public static void depositMoney(String accountNum, long plusPence, String message)
  249. {
  250. try
  251. {
  252. Session session = HibernateUtil.getSessionFactory().openSession();
  253. session.beginTransaction();
  254.  
  255. Query q = session.createQuery("from Transaction as transaction "
  256. + "where transaction.accountNum=:accountNum order by unixTime desc");
  257. q.setParameter("accountNum", accountNum);
  258. q.setMaxResults(1);
  259. Transaction lastTransaction = (Transaction) q.uniqueResult();
  260.  
  261. // CREATE NEW TRANSACTION
  262. Transaction transaction = new Transaction(
  263. accountNum,
  264. message,
  265. plusPence,
  266. lastTransaction.getBalance() + plusPence,
  267. System.currentTimeMillis());
  268.  
  269. session.save(transaction);
  270.  
  271.  
  272. session.getTransaction().commit();
  273. session.close();
  274. } catch (Exception e)
  275. {
  276. }
  277. }
  278.  
  279. public static char transferMoneyIfPossible(User user, long plusPence, String payeeStr)
  280. {
  281. // p = NO PAYEE
  282. // i = INSUFFICIENT FUNDS
  283. // t = TRANSFER SUCCESSFUL
  284. // e = ERROR IN TRANSFER
  285.  
  286. char transferResult;
  287.  
  288. try
  289. {
  290. Session session = HibernateUtil.getSessionFactory().openSession();
  291. session.beginTransaction();
  292.  
  293. Query q = session.createQuery("from Transaction as transaction "
  294. + "where transaction.accountNum = :accountNum order by unixTime desc");
  295. q.setParameter("accountNum", user.getAccountNum());
  296. q.setMaxResults(1);
  297. Transaction lastUserTransaction = (Transaction) q.uniqueResult();
  298.  
  299. // SUFFICIENT FUNDS AVAILABLE
  300. if (lastUserTransaction.getBalance() - plusPence >= -user.getOverdraft())
  301. {
  302. // NOW CONFIRM PAYEE STILL EXISTS(MAY HAVE CLOSED ACCOUNT)
  303. String payeeAN = payeeStr.substring(payeeStr.length() - 9, payeeStr.length() - 1);
  304. q = session.createQuery("from User as user "
  305. + "where user.accountNum=:accountNum");
  306. q.setParameter("accountNum", payeeAN);
  307. if (q.uniqueResult() == null)
  308. {
  309. transferResult = 'p';
  310. } // MAKE TWO TRANSACTIONS
  311. else
  312. {
  313. long currentTimeMillis = System.currentTimeMillis();
  314.  
  315. // CREATE USER TRANSACTION
  316. Transaction userTransaction = new Transaction(
  317. user.getAccountNum(),
  318. "Transfer to " + payeeStr,
  319. -plusPence,
  320. lastUserTransaction.getBalance() - plusPence,
  321. currentTimeMillis);
  322. session.save(userTransaction);
  323.  
  324.  
  325. // CREATE PAYEE TRANSACTION
  326. Query payeeQuery = session.createQuery("from Transaction as transaction "
  327. + "where transaction.accountNum=:accountNum order by unixTime desc");
  328. payeeQuery.setParameter("accountNum", payeeAN);
  329. payeeQuery.setMaxResults(1);
  330. Transaction lastPayeeTransaction = (Transaction) q.uniqueResult();
  331. Transaction payeeTransaction = new Transaction(
  332. payeeAN,
  333. "Transfer from " + user.toString(),
  334. plusPence,
  335. lastPayeeTransaction.getBalance() - plusPence,
  336. currentTimeMillis);
  337. session.save(payeeTransaction);
  338.  
  339. transferResult = 't';
  340. }
  341. } else
  342. {
  343. transferResult = 'i';
  344. }
  345.  
  346. session.getTransaction().commit();
  347. session.close();
  348. } catch (Exception e)
  349. {
  350. transferResult = 'e';
  351. }
  352.  
  353. return transferResult;
  354. }
  355.  
  356. public static boolean withdrawMoneyIfPossible(String accountNum, Long overdraft, long plusPence)
  357. {
  358. boolean withdrawn = false;
  359.  
  360. try
  361. {
  362. Session session = HibernateUtil.getSessionFactory().openSession();
  363. session.beginTransaction();
  364.  
  365. Query q = session.createQuery("from Transaction as transaction "
  366. + "where transaction.accountNum = :accountNum order by unixTime desc");
  367. q.setParameter("accountNum", accountNum);
  368. q.setMaxResults(1);
  369. Transaction lastTransaction = (Transaction) q.uniqueResult();
  370.  
  371. if (lastTransaction.getBalance() - plusPence >= -overdraft)
  372. {
  373. // CREATE NEW TRANSACTION
  374. Transaction transaction = new Transaction(
  375. accountNum,
  376. "Withdrawal",
  377. -plusPence,
  378. lastTransaction.getBalance() - plusPence,
  379. System.currentTimeMillis());
  380.  
  381. session.save(transaction);
  382.  
  383. withdrawn = true;
  384. }
  385.  
  386. session.getTransaction().commit();
  387. session.close();
  388. } catch (Exception e)
  389. {
  390. return false;
  391. }
  392.  
  393. return withdrawn;
  394. }
  395.  
  396. public static char changeOverdraftOfPossible(User user, long desiredOverdraft, HttpSession httpSession)
  397. {
  398. // 's' SAME OVERDRAFT
  399. // 'o' OVERDRAFT CHANGED
  400. // 'i' INVALID OVERDRAFT
  401. char overdraftResult;
  402.  
  403. if (desiredOverdraft == user.getOverdraft())
  404. {
  405. overdraftResult = 's';
  406. }
  407. else
  408. {
  409. if (desiredOverdraft > user.getOverdraft())
  410. {
  411. if(updateUserAndHttpSessionBean(user, desiredOverdraft, httpSession)) overdraftResult = 'o';
  412. else overdraftResult = 'e';
  413. }
  414. else // (desiredOverdraft < user.getOverdraft())
  415. {
  416. try
  417. {
  418. long balance = getLastBalance(user.getAccountNum());
  419. if (balance < -desiredOverdraft)
  420. {
  421. overdraftResult = 'i';
  422. }
  423. else
  424. {
  425. if(updateUserAndHttpSessionBean(user, desiredOverdraft, httpSession)) overdraftResult = 'o';
  426. else overdraftResult = 'e';
  427. }
  428. }
  429. catch (Exception e)
  430. {
  431. overdraftResult = 'e';
  432. }
  433. }
  434. }
  435.  
  436. return overdraftResult;
  437. }
  438.  
  439.  
  440. public static boolean addTransaction(Transaction transaction)
  441. {
  442. try
  443. {
  444. Session session = HibernateUtil.getSessionFactory().openSession();
  445. session.beginTransaction();
  446.  
  447. session.save(transaction);
  448.  
  449.  
  450. session.getTransaction().commit();
  451. session.close();
  452. } catch (Exception e)
  453. {
  454. Utils.pt("HIBERNATEUTILS, addTransaction "+transaction+" "+e.getMessage());
  455. return false;
  456. }
  457.  
  458. return true;
  459. }
  460.  
  461. public static String getMissingTransactionsString(String accountNum, long lastUnixTime)
  462. {
  463. List<Transaction> transactions = getTransactions(accountNum, lastUnixTime);
  464.  
  465. String reply = "";
  466.  
  467. int len = transactions.size();
  468. for (int lp = 0; lp < len - 1; lp++)
  469. {
  470. reply += transactions.get(lp).toDataString() + "#";
  471. }
  472. if (len > 0)
  473. {
  474. reply += transactions.get(len - 1).toDataString();
  475. }
  476.  
  477. return reply;
  478. }
  479.  
  480. public static List<Transaction> getTransactions(String accountNum, long unixTime)
  481. {
  482. return getTransactions(accountNum, " and unixTime > " + unixTime);
  483. }
  484.  
  485. public static List<Transaction> getTransactions(String accountNum)
  486. {
  487. return getTransactions(accountNum, "");
  488. }
  489.  
  490. public static List<Transaction> getTransactions(String accountNum, String extraCondition)
  491. {
  492. List<Transaction> transactions = null;
  493.  
  494. try
  495. {
  496. Session session = HibernateUtil.getSessionFactory().openSession();
  497. session.beginTransaction();
  498. Query q = session.createQuery("from Transaction as transaction "
  499. + "where transaction.accountNum = :accountNum"
  500. + extraCondition);
  501. q.setParameter("accountNum", accountNum);
  502. transactions = q.list(); //q.uniqueResult();
  503.  
  504.  
  505. session.getTransaction().commit();
  506. session.close();
  507.  
  508. } catch (Exception e)
  509. {
  510. }
  511.  
  512. return transactions;
  513. }
  514.  
  515. public static List<User> getUsers()
  516. {
  517. List<User> users = null;
  518.  
  519. try
  520. {
  521. Session session = HibernateUtil.getSessionFactory().openSession();
  522. session.beginTransaction();
  523. Query q = session.createQuery("from User as user");
  524. users = q.list(); //q.uniqueResult();
  525.  
  526. session.getTransaction().commit();
  527. session.close();
  528.  
  529. } catch (Exception e)
  530. {
  531. }
  532.  
  533. return users;
  534. }
  535.  
  536. public static User getUser(String accountNum, String password)
  537. {
  538. User user = null;
  539.  
  540. try
  541. {
  542. Session session = HibernateUtil.getSessionFactory().openSession();
  543. session.beginTransaction();
  544. Query q = session.createQuery("from User as user where "
  545. + "user.accountNum = :accountNum and "
  546. + "user.password = :password");
  547. q.setParameter("accountNum", accountNum);
  548. q.setParameter("password", password);
  549. user = (User) q.uniqueResult();
  550.  
  551. session.getTransaction().commit();
  552. session.close();
  553. } catch (Exception e)
  554. {
  555. }
  556.  
  557. return user;
  558. }
  559.  
  560. public static boolean isUserOfEmail(String email)
  561. {
  562. boolean existantUser = true;
  563. try
  564. {
  565. Session session = HibernateUtil.getSessionFactory().openSession();
  566. session.beginTransaction();
  567. Query q = session.createQuery("from User as user where user.email = :email");
  568. q.setParameter("email", email);
  569. existantUser = (q.uniqueResult() != null);
  570.  
  571. session.getTransaction().commit();
  572. session.close();
  573. } catch (Exception e)
  574. {
  575. }
  576.  
  577. return existantUser;
  578. }
  579.  
  580.  
  581.  
  582. public static Ic getIcObject(String type)
  583. {
  584. Ic ic = null;
  585.  
  586. try
  587. {
  588. Session session = HibernateUtil.getSessionFactory().openSession();
  589. session.beginTransaction();
  590.  
  591. Query q = session.createQuery("from Ic as ic "
  592. + "where ic.type = :type");
  593. q.setParameter("type", type);
  594. ic = (Ic)q.uniqueResult();
  595.  
  596. session.getTransaction().commit();
  597. session.close();
  598. } catch (Exception e)
  599. {
  600. }
  601.  
  602. return ic;
  603. }
  604.  
  605.  
  606. public static boolean saveIcObject(Ic ic)
  607. {
  608. try
  609. {
  610. Session session = HibernateUtil.getSessionFactory().openSession();
  611. session.beginTransaction();
  612.  
  613. session.update(ic);
  614.  
  615. session.getTransaction().commit();
  616. session.close();
  617. }
  618. catch (Exception e)
  619. {
  620. return false;
  621. }
  622. return true;
  623. }
  624.  
  625.  
  626. public static void applyIOrCToUser(User user, Ic ic)
  627. {
  628. try
  629. {
  630. Session session = HibernateUtil.getSessionFactory().openSession();
  631. session.beginTransaction();
  632.  
  633. Query q = session.createQuery("from Transaction as transaction "
  634. + "where transaction.accountNum=:accountNum order by unixTime desc");
  635. q.setParameter("accountNum", user.getAccountNum());
  636. q.setMaxResults(1);
  637. Transaction lastTransaction = (Transaction) q.uniqueResult();
  638.  
  639.  
  640. if(lastTransaction.getBalance() > 0 && ic.getType().equals("i"))
  641. {
  642. // ADD pc% INTEREST
  643. long amount = (long)(Math.round(lastTransaction.getBalance() * 0.01 * ic.getRate()));
  644.  
  645. if (amount != 0)
  646. {
  647.  
  648. Transaction transaction = new Transaction(
  649. user.getAccountNum(),
  650. "Interest: " + ic.getRate() + "%",
  651. amount,
  652. lastTransaction.getBalance() + amount,
  653. System.currentTimeMillis());
  654.  
  655. session.save(transaction);
  656. }
  657. }
  658. else if (lastTransaction.getBalance() < 0 && ic.getType().equals("c"))
  659. {
  660. // DEDUCT pc%
  661. long amount = (long)(Math.round(lastTransaction.getBalance() * 0.01 * ic.getRate()));
  662.  
  663. if(amount != 0 && (lastTransaction.getBalance() >= -user.getOverdraft()))
  664. {
  665. Transaction transaction = new Transaction(
  666. user.getAccountNum(),
  667. "Overdraft Charge: " + ic.getRate() + "%",
  668. amount,
  669. lastTransaction.getBalance() + amount,
  670. System.currentTimeMillis());
  671.  
  672. session.save(transaction);
  673. }
  674. }
  675.  
  676.  
  677. session.getTransaction().commit();
  678. session.close();
  679. } catch (Exception e)
  680. {
  681. }
  682. }
  683.  
  684. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement