eriezelagera

Database Impementation

Dec 24th, 2013
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 21.92 KB | None | 0 0
  1. package edu.tup.prepaid_canteen.actions;
  2.  
  3. import edu.tup.prepaid_canteen.lists.*;
  4. import edu.tup.prepaid_canteen.models.*;
  5.  
  6. import java.math.BigDecimal;
  7. import java.util.ArrayList;
  8.  
  9. import java.util.Date;
  10. import java.util.Vector;
  11.  
  12. import javax.persistence.NoResultException;
  13. import javax.persistence.Query;
  14.  
  15. import javax.swing.JOptionPane;
  16.  
  17. public final class Database {
  18.    
  19.     private final ObjClass obj = new ObjClass();
  20.     private final Config cfg = new Config("config");
  21.    
  22.     public Database() {
  23.         cfg.loadConfig();
  24.     }
  25.    
  26.     /*
  27.      *   UserAccounts Entity instance
  28.      */
  29.    
  30.     /* Check if user is expired */
  31.     public boolean isUserExpired( UserAccounts user ) {
  32.         if ( user.getExpiryDate().after(new Date()) ) // Not Expired
  33.             return false;
  34.         else if ( user.getExpiryDate().before(new Date()) || user.getExpiryDate().equals(new Date()) ) // Expired
  35.             return true;
  36.         else
  37.             return true;
  38.     }
  39.    
  40.     /* Check if user is active */
  41.     public boolean isUserActive( UserAccounts user ) {
  42.         try {
  43.             return user.getActive();
  44.         } catch( NoResultException nre ) {
  45.             return false;
  46.         } catch( Exception e ) {
  47.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  48.             return false;
  49.         }
  50.     }
  51.    
  52.     /* Check if username exists */
  53.     public boolean isUsernameExist( String username ) {
  54.         try {
  55.             Query query = obj.getEm().createQuery(
  56.                 "SELECT u.id FROM UserAccounts u " +
  57.                 "WHERE u.name = :user");
  58.             query.setParameter("user", username);
  59.             return query.getSingleResult() != null;
  60.         } catch( NoResultException nre ) {
  61.             return false;
  62.         } catch( Exception e ) {
  63.             LToolkit.createLog(e.toString(), ErrorLevel.INFO);
  64.             return false;
  65.         }
  66.     }
  67.    
  68.     /*
  69.      *   Facility Entity instance
  70.      */
  71.    
  72.     /* Return Facility instance */
  73.     public Facilities getFacility() {
  74.         try {
  75.             Query query = obj.getEm().createQuery(
  76.                 "FROM Facilities f " +
  77.                 "WHERE f.name = :name");
  78.             query.setParameter("name", cfg.getProperty("facilityName"));
  79.             return (Facilities) query.getSingleResult();
  80.         } catch( NoResultException nre ) {
  81.             LToolkit.createLog("Facility was not configured or has incorrect value at system configuration.", ErrorLevel.WARNING);
  82.             JOptionPane.showMessageDialog(null, "Facility not found! See logs for more information.", "Configuration Error!", JOptionPane.WARNING_MESSAGE);
  83.             System.exit(1);
  84.             return null;
  85.         } catch( Exception e ) {
  86.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  87.             return null;
  88.         }
  89.     }
  90.    
  91.     public boolean isSaveLog() {
  92.         try {
  93.             Query query = obj.getEm().createQuery(
  94.                 "SELECT f.saveLog FROM Facilities f" +
  95.                 "WHERE f.name = :name");
  96.             query.setParameter("name", cfg.getProperty("facilityName"));
  97.             return (boolean) query.getSingleResult();
  98.         } catch( NoResultException nre ) {
  99.             System.out.println(nre.toString());
  100.             return false;
  101.         } catch( Exception e ) {
  102.             System.out.println(e.toString());
  103.             return false;
  104.         }
  105.     }
  106.    
  107.     /* Return facility name */
  108.     public String getFacilityName() {
  109.         try {
  110.             Query query = obj.getEm().createQuery(
  111.                 "SELECT f.name FROM Facilities f " +
  112.                 "WHERE f.name = :name");
  113.             query.setParameter("name", cfg.getProperty("facilityName"));
  114.             return (String) query.getSingleResult();
  115.         } catch( NoResultException nre ) {
  116.             LToolkit.createLog("Facility was not configured or has incorrect value at system configuration.", ErrorLevel.WARNING);
  117.             JOptionPane.showMessageDialog(null, "Facility not found! See logs for more information.", "Configuration Error!", JOptionPane.WARNING_MESSAGE);
  118.             System.exit(1);
  119.             return "Auth Window";
  120.         } catch( Exception e ) {
  121.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  122.             return "Auth Window";
  123.         }
  124.     }
  125.    
  126.     /*
  127.      *   CashierShifts Entity instance
  128.      */
  129.    
  130.     /* Return current user shift */
  131.     public UserAccounts getActiveUser() {
  132.         try {
  133.             Query query = obj.getEm().createQuery(
  134.                 "SELECT c.cashierId FROM CashierShifts c " +
  135.                 "WHERE c.active = :active AND " +
  136.                 "c.terminalId = :terminal");
  137.             query.setParameter("active", true);
  138.             query.setParameter("terminal", getTerminal());
  139.             return (UserAccounts) query.getSingleResult();
  140.         } catch( NoResultException nre ) {
  141.             return null;
  142.         } catch( Exception e ) {
  143.             LToolkit.createLog(e.toString(), ErrorLevel.ERROR);
  144.             return null;
  145.         }
  146.     }
  147.    
  148.     public String getActiveUserFullName( FullName full_name ) {
  149.         return full_name == FullName.LastNameFirst ? getActiveUser().getLastName() + ", " + getActiveUser().getFirstName() :
  150.                                                      getActiveUser().getFirstName() + " " + getActiveUser().getLastName();
  151.     }
  152.    
  153.     /* Return Active CashierShift */
  154.     public CashierShifts getActiveCashierShift() {
  155.         try {
  156.             Query query = obj.getEm().createQuery(
  157.                 "FROM CashierShifts c " +
  158.                 "WHERE c.active = :active");
  159.             query.setParameter("active", true);
  160.             return (CashierShifts) query.getSingleResult();
  161.         } catch( NoResultException nre ) {
  162.             return null;
  163.         } catch( Exception e ) {
  164.             LToolkit.createLog(e.toString(), getClass(), ErrorLevel.WARNING);
  165.             return null;
  166.         }
  167.     }
  168.    
  169.     public boolean hasActiveCashierShift() {
  170.         try {
  171.             Query query = obj.getEm().createQuery(
  172.                 "FROM CashierShifts c " +
  173.                 "WHERE c.active = :active AND c.terminalId = :terminal");
  174.             query.setParameter("active", true);
  175.             query.setParameter("terminal", getTerminal());
  176.            
  177.             query.getSingleResult();
  178.             return true;
  179.         } catch( NoResultException nre ) {
  180.             return false;
  181.         } catch( Exception e ) {
  182.             LToolkit.createLog(e.toString(), ErrorLevel.ERROR);
  183.             return false;
  184.         }
  185.     }
  186.    
  187.     /* Return CashierShift Id */
  188.     public Integer getCurrentCashierShiftId() {
  189.         try {
  190.             Query query = obj.getEm().createQuery(
  191.                 "SELECT c.id FROM CashierShifts c " +
  192.                 "WHERE c.active = :active");
  193.             query.setParameter("active", true);
  194.             return (Integer) query.getSingleResult();
  195.         } catch( NoResultException nre ) {
  196.             return null;
  197.         } catch( Exception e ) {
  198.             LToolkit.createLog(e.toString(), getClass(), ErrorLevel.WARNING);
  199.             return null;
  200.         }
  201.     }
  202.    
  203.     /* Return CashierShift's Total Amount by ID */
  204.     public BigDecimal getCashierShiftTotalAmountById( Integer id ) {
  205.         try {
  206.             Query query = obj.getEm().createQuery(
  207.                 "SELECT c.totalAmount FROM CashierShifts c " +
  208.                 "WHERE c.id = :id");
  209.             query.setParameter("id'", id);
  210.             return (BigDecimal) query.getSingleResult();
  211.         } catch( NoResultException nre ) {
  212.             return BigDecimal.ZERO;
  213.         } catch( Exception e ) {
  214.             LToolkit.createLog(e.toString(), ErrorLevel.ERROR);
  215.             return BigDecimal.ZERO;
  216.         }
  217.     }
  218.    
  219.     /* Set user's shift */
  220.     public void setUserShift( CashierShifts cashier, UserAccounts user ) {
  221.         /* Update existing Cashier Shift */
  222.         if ( cashier != null ) {
  223.             CashierShifts shift = cashier;
  224.            
  225.             shift.setActive(true);
  226.             shift.setTotalSalesAmount(shift.getTotalSalesAmount());
  227.             shift.setTerminalId(getTerminal());
  228.  
  229.             obj.getEm().getTransaction().begin();
  230.             obj.getEm().persist(shift);
  231.             obj.getEm().getTransaction().commit();
  232.         }
  233.         /* New Cashier Shift */
  234.         else if ( cashier == null ) {
  235.             CashierShifts shift = new CashierShifts();
  236.            
  237.             //shift.setId(new NextCashierShiftIdCalculator().calculate());
  238.             shift.setId(shift.getId());
  239.             shift.setTerminalId(getTerminal());
  240.             shift.setActive(true);
  241.             shift.setCashierId(user);
  242.             shift.setStartDateTimeCashier(new Date());
  243.             shift.setTotalSalesAmount(shift.getTotalSalesAmount());
  244.  
  245.             obj.getEm().getTransaction().begin();
  246.             obj.getEm().persist(shift);
  247.             obj.getEm().getTransaction().commit();
  248.         }
  249.     }
  250.    
  251.     /*
  252.      *   PosTerminals Entity instance
  253.      */
  254.    
  255.     /* Return PosTerminals instance */
  256.     public PosTerminals getTerminal() {
  257.         try {
  258.             Query query = obj.getEm().createQuery(
  259.                 "FROM PosTerminals p " +
  260.                 "WHERE p.name = :name");
  261.             query.setParameter("name", obj.getTerminalName());
  262.             return (PosTerminals) query.getSingleResult();
  263.         } catch( NoResultException nre ) {
  264.             LToolkit.createLog("Terminal was not configured or has incorrect value at system configuration.", ErrorLevel.WARNING);
  265.             JOptionPane.showMessageDialog(null, "Terminal not found! See logs for more information.", "Configuration Error!", JOptionPane.WARNING_MESSAGE);
  266.             System.exit(1);
  267.             return null;
  268.         } catch( Exception e ) {
  269.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  270.             return null;
  271.         }
  272.     }
  273.    
  274.     public Integer getTerminalIdByName( String name ) {
  275.         try {
  276.             Query query = obj.getEm().createQuery(
  277.                 "SELECT p.id FROM PosTerminals p " +
  278.                 "WHERE p.name = :name");
  279.             query.setParameter("name", name);
  280.             return (Integer) query.getSingleResult();
  281.         } catch( NoResultException nre ) {
  282.             return -1;
  283.         } catch( Exception e ) {
  284.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  285.             return -1;
  286.         }
  287.     }
  288.    
  289.     /*
  290.      *   Inventory Entity instance
  291.      */
  292.    
  293.     /* Check if item exists */
  294.     public boolean isItem( String code ) {
  295.         try {
  296.             Query query = obj.getEm().createQuery(
  297.                 "SELECT i.id FROM Inventories i " +
  298.                 "WHERE i.code = :code");
  299.             query.setParameter("code", code);
  300.             return query.getSingleResult() != null;
  301.         } catch( NoResultException nre ) {
  302.             return false;
  303.         } catch( Exception e ) {
  304.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  305.             return false;
  306.         }
  307.     }
  308.    
  309.     /* Returns Inventory instance by code */
  310.     public Inventories getItems() {
  311.         try {
  312.             Query query = obj.getEm().createQuery(
  313.                 "FROM Inventories i");
  314.             return (Inventories) query.getSingleResult();
  315.         } catch( NoResultException nre ) {
  316.             return null;
  317.         } catch( Exception e ) {
  318.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  319.             return null;
  320.         }
  321.     }
  322.    
  323.     public Inventories getItemByCode( String code ) {
  324.         try {
  325.             Query query = obj.getEm().createQuery(
  326.                 "FROM Inventories i " +
  327.                 "WHERE i.code = :code");
  328.             query.setParameter("code", code);
  329.             return (Inventories) query.getSingleResult();
  330.         } catch( NoResultException nre ) {
  331.             return null;
  332.         } catch( Exception e ) {
  333.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  334.             return null;
  335.         }
  336.     }
  337.    
  338.     /* Returns item name by code */
  339.     public String getItemNameByCode( String code ) {
  340.         try {
  341.             Query query = obj.getEm().createQuery(
  342.                 "SELECT i.name FROM Inventories i " +
  343.                 "WHERE i.code = :code");
  344.             query.setParameter("code", code);
  345.             return (String) query.getSingleResult();
  346.         } catch( NoResultException nre ) {
  347.             return null;
  348.         } catch( Exception e ) {
  349.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  350.             return null;
  351.         }
  352.     }
  353.    
  354.     public String getItemCodeByName( String name ) {
  355.         try {
  356.             Query query = obj.getEm().createQuery(
  357.                 "SELECT i.code FROM Inventories i " +
  358.                 "WHERE i.name = :name");
  359.             query.setParameter("name", name);
  360.             return query.getSingleResult().toString();
  361.         } catch( NoResultException nre ) {
  362.             return null;
  363.         } catch( Exception e ) {
  364.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  365.             return null;
  366.         }
  367.     }
  368.    
  369.     public Vector<String> getItemNameListByName( String name ) {
  370.         Vector<String> v = new Vector<>();
  371.        
  372.         try {
  373.             Query query = obj.getEm().createQuery(
  374.                 "SELECT i.name FROM Inventories i " +
  375.                 "WHERE i.name LIKE :name");
  376.             query.setParameter("name", name + "%");
  377.            
  378.             for ( Object record : query.getResultList() ) {
  379.                 v.addElement(record.toString());
  380.             }
  381.            
  382.             return v;
  383.         } catch( NoResultException nre ) {
  384.             return v;
  385.         } catch( Exception e ) {
  386.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  387.             return v;
  388.         }
  389.     }
  390.    
  391.     public Vector<String> getItemNameListVector() {
  392.         Vector<String> v = new Vector<>();
  393.        
  394.         try {
  395.             Query query = obj.getEm().createQuery(
  396.                 "SELECT i.name FROM Inventories i");
  397.            
  398.             for ( Object record : query.getResultList() ) {
  399.                 v.addElement(record.toString());
  400.             }
  401.            
  402.             return v;
  403.         } catch( NoResultException nre ) {
  404.             return v;
  405.         } catch( Exception e ) {
  406.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  407.             return v;
  408.         }
  409.     }
  410.    
  411.     /*
  412.      *   Customer Entity instance
  413.      */
  414.    
  415.     /* Check is scanned code is customer */
  416.     public boolean isCustomer( String uid ) {
  417.         try {
  418.             Query query = obj.getEm().createQuery(
  419.                 "SELECT c.id FROM Customers c " +
  420.                 "WHERE c.cardUid = :uid");
  421.             query.setParameter("uid", uid);
  422.             return query.getSingleResult() != null;
  423.         } catch( NoResultException nre ) {
  424.             return false;
  425.         } catch( Exception e ) {
  426.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  427.             return false;
  428.         }
  429.     }
  430.    
  431.     public boolean isCustomerActive( String uid ) {
  432.         try {
  433.             Query query = obj.getEm().createQuery(
  434.                 "SELECT c.active FROM Customer c " +
  435.                 "WHERE c.uid = :uid");
  436.             query.setParameter("uid", uid);
  437.             return (boolean) query.getSingleResult();
  438.         } catch( NoResultException nre ) {
  439.             return false;
  440.         } catch( Exception e ) {
  441.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  442.             return false;
  443.         }
  444.     }
  445.    
  446.     public Customers getCurrentCustomer() {
  447.         try {
  448.             Query query = obj.getEm().createQuery(
  449.                 "FROM Customers c " +
  450.                 "WHERE c.cardUid = :uid");
  451.             query.setParameter("uid", obj.getSearchedCustomerUid());
  452.             return (Customers) query.getSingleResult();
  453.         } catch( NoResultException nre ) {
  454.             return null;
  455.         } catch( Exception e ) {
  456.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  457.             return null;
  458.         }
  459.     }
  460.    
  461.     public ArrayList<String> getCustomerListArrayList() {
  462.         ArrayList<String> a = new ArrayList<>();
  463.        
  464.         try {
  465.             Query query = obj.getEm().createQuery(
  466.                 "SELECT c.id FROM Customers c");
  467.            
  468.             for ( Object record : query.getResultList() ) {
  469.                 a.add(getCustomerNameById((Integer) record, FullName.LastNameFirst));
  470.             }
  471.            
  472.             return a;
  473.         } catch( NoResultException nre ) {
  474.             return a;
  475.         } catch( Exception e ) {
  476.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  477.             return a;
  478.         }
  479.     }
  480.    
  481.     public String getCustomerNameByUid( String uid, FullName fullName ) {
  482.         try {
  483.             Query qry_firstName = obj.getEm().createQuery(
  484.                 "SELECT c.firstName FROM Customers c " +
  485.                 "WHERE c.cardUid = :uid");
  486.             Query qry_lastName = obj.getEm().createQuery(
  487.                 "SELECT c.lastName FROM Customers c " +
  488.                 "WHERE c.cardUid = :uid");
  489.             qry_firstName.setParameter("uid", uid);
  490.             qry_lastName.setParameter("uid", uid);
  491.            
  492.             String normalize = LToolkit.normalizeName(qry_firstName.getSingleResult().toString(), qry_lastName.getSingleResult().toString(), fullName);
  493.             return fullName == FullName.NameOnly ? normalize : normalize + "\t\t" + uid;
  494.         } catch( NoResultException nre ) {
  495.             return "Lieze.09";
  496.         } catch( Exception e ) {
  497.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  498.             return "Lieze.09";
  499.         }
  500.     }
  501.    
  502.     public String getCustomerNameById( Integer id, FullName fullName ) {
  503.         try {
  504.             Query qry_firstName = obj.getEm().createQuery(
  505.                 "SELECT c.firstName FROM Customers c " +
  506.                 "WHERE c.id = :id");
  507.             Query qry_lastName = obj.getEm().createQuery(
  508.                 "SELECT c.lastName FROM Customers c " +
  509.                 "WHERE c.id = :id");
  510.             qry_firstName.setParameter("id", id);
  511.             qry_lastName.setParameter("id", id);
  512.            
  513.             String normalize = LToolkit.normalizeName(qry_firstName.getSingleResult().toString(), qry_lastName.getSingleResult().toString(), fullName);
  514.             return fullName == FullName.NameOnly ? normalize : normalize + "\t\t" + getCustomerUidById(id);
  515.         } catch( NoResultException nre ) {
  516.             return "TUP Manila";
  517.         } catch( Exception e ) {
  518.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  519.             return "TUP Manila";
  520.         }
  521.     }
  522.    
  523.     public String getCustomerUidById( Integer id ) {
  524.         try {
  525.             Query query = obj.getEm().createQuery(
  526.                 "SELECT c.cardUid FROM Customers c " +
  527.                 "WHERE c.id = :id");
  528.             query.setParameter("id", id);
  529.             return query.getSingleResult().toString();
  530.         } catch( NoResultException nre ) {
  531.             return null;
  532.         } catch( Exception e ) {
  533.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  534.             return null;
  535.         }
  536.     }
  537.    
  538.     public BigDecimal getCustomerCashByUid( String uid ) {
  539.         try {
  540.             Query query = obj.getEm().createQuery(
  541.                 "SELECT c.cashFund FROM Customers c " +
  542.                 "WHERE c.cardUid = :uid");
  543.             query.setParameter("uid", uid);
  544.             return (BigDecimal) query.getSingleResult();
  545.         } catch( NoResultException nre ) {
  546.             return BigDecimal.ZERO;
  547.         } catch( Exception e ) {
  548.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  549.             return BigDecimal.ZERO;
  550.         }
  551.     }
  552.    
  553.     public byte[] getCustomerPhotoByUid( String uid ) {
  554.         try {
  555.             Query query = obj.getEm().createQuery(
  556.                 "SELECT c.customerPhoto FROM Customers c " +
  557.                 "WHERE c.cardUid = :uid");
  558.             query.setParameter("uid", uid);
  559.             return (byte[]) query.getSingleResult();
  560.         } catch( NoResultException nre ) {
  561.             return null;
  562.         } catch( Exception e ) {
  563.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  564.             return null;
  565.         }
  566.     }
  567.    
  568.     public String getCustomerGenderByUid( String uid ) {
  569.         try {
  570.             Query query = obj.getEm().createQuery(
  571.                 "SELECT c.gender FROM Customers c " +
  572.                 "WHERE c.cardUid = :uid");
  573.             query.setParameter("uid", uid);
  574.             return query.getSingleResult().toString();
  575.         } catch( NoResultException nre ) {
  576.             return null;
  577.         } catch( Exception e ) {
  578.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  579.             return null;
  580.         }
  581.     }
  582.    
  583.     public BigDecimal updateCurrentBalance( BigDecimal value, UpdateBalance balance ) {
  584.         try {
  585.             Query query = obj.getEm().createQuery(
  586.                 "FROM Customers c " +
  587.                 "WHERE c.cardUid = :uid");
  588.             query.setParameter("uid", obj.getSearchedCustomerUid());
  589.            
  590.             Customers customer = (Customers) query.getSingleResult();
  591.             BigDecimal currentBalance = customer.getCashFund();
  592.             BigDecimal newBalance = balance == UpdateBalance.Increase ? currentBalance.add(value) : currentBalance.subtract(value);
  593.             customer.setCashFund(newBalance);
  594.            
  595.             obj.getEm().getTransaction().begin();
  596.             obj.getEm().persist(customer);
  597.             obj.getEm().getTransaction().commit();
  598.             return newBalance;
  599.         } catch( NoResultException nre ) {
  600.             return BigDecimal.ZERO;
  601.         } catch( Exception e ) {
  602.             LToolkit.createLog(e.toString(), ErrorLevel.WARNING);
  603.             return BigDecimal.ZERO;
  604.         }
  605.     }
  606.    
  607. }
Advertisement
Add Comment
Please, Sign In to add comment