Controller.CashierController.java Source code

Java tutorial

Introduction

Here is the source code for Controller.CashierController.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import DBClasses.Attraction;
import DBClasses.Cardusage;
import DBClasses.Terminal;
import DBClasses.Users;
import Tools.HibernateUtil;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JTextPane;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;

/**
 * Klasa obsugujca funkcje dostpne w panelu kasjera
 * @author Sebastian
 */
public class CashierController {

    /**
     * obiekt przechowujcy uytkownika wybranego do edycji w panelu kasjera
     */
    private static Users selectedUser;

    private Session s;

    /**
     * konstruktor otwierajcy now sesj
     */
    public CashierController() {
        s = HibernateUtil.getSessionFactory().openSession();
    }

    /**
     * Zwraca list uytkownikw, ktrych login, imi lub nazwisko zawiera podany cig znakw
     * @param text tekst wykorzystywany jako wzorzec do wyszukiwania w bazie
     * @return lista uytkownikw
     */
    public List GetUsersList(String text) {
        List queryResult = s.createCriteria(Users.class)
                .add(Restrictions.disjunction().add(Restrictions.like("login", text, MatchMode.ANYWHERE))
                        .add(Restrictions.like("name", text, MatchMode.ANYWHERE))
                        .add(Restrictions.like("surname", text, MatchMode.ANYWHERE)))
                .list();

        return queryResult;
    }

    /**
     * Zwraca losowego uzytkownika
     * @return obiekt klasy Users
     */
    public Users GetRandomUser() {
        List queryResult = s.createCriteria(Users.class).list();

        Random random = new Random();
        int randomIndex = Math.abs(random.nextInt()) % queryResult.size();

        return (Users) queryResult.get(randomIndex);
    }

    /**
     * Zapisuje wybranego do edycji uytkownika
     * @param newUser - wybrany uytkownik
     * @param textPane - pole tekstowe, w ktrym wywietlane jest imi, nazwisko i login wybranego uytkownika
     */
    public static void SetSelectedUser(Users newUser, JTextPane textPane) {
        selectedUser = newUser;
        SetText(textPane);
    }

    /**
     * Zwraca login uytkownika wybranego do edycji
     * @return login uytkownika
     */
    public static String GetSelectedUser() {
        return selectedUser != null ? selectedUser.getLogin() : null;
    }

    /**
     * Zapisuje wybranego do edycji uytkownika na podstawie podanego loginu
     * @param newUserString - login uytkownika
     * @param textPane - pole tekstowe, w ktrym wywietlane jest imi, nazwisko i login wybranego uytkownika
     */
    public void SetSelectedUserWithString(String newUserString, JTextPane textPane) {
        if (newUserString == null)
            return;
        String convertedString = newUserString
                .subSequence(newUserString.indexOf("(") + 1, newUserString.indexOf(")")).toString();
        List queryResult = s.createCriteria(Users.class)
                .add(Restrictions.like("login", convertedString, MatchMode.EXACT)).list();

        if (queryResult.size() > 0) {
            selectedUser = (Users) queryResult.get(0);
        }

        SetText(textPane);
    }

    /**
     * Ustawia tekst w polu tekstowym wywietlajcym wybranego uytkownika
     * @param textPane - pole tekstowe, w ktrym wywietlane jest imi, nazwisko i login wybranego uytkownika
     */
    private static void SetText(JTextPane textPane) {
        textPane.setText("Uytkownik: " + GetUserConvertedName(selectedUser));
    }

    /**
     * formatuje tekst zawierajcy imi, nazwisko i login uytkownika do wywietlenia
     * @param user - wybrany uytkownik
     * @return sformatowany tekst
     */
    public static String GetUserConvertedName(Users user) {
        return user.getName() + " " + user.getSurname() + " (" + user.getLogin() + ")";
    }

    /**
     * Zwarac wszystkie rekordy z tabeli Attraction w bazie danych
     * @return lista obiektw typu Attraction
     */
    public List GetSkiAttractions() {
        List queryResult = s.createCriteria(Attraction.class).add(Restrictions.like("type", "stok")).list();

        return queryResult;

    }

    /**
     * Zwraca aktualn dat
     * @return aktualna data
     */
    private Date GetDateNow() {
        DateFormat originalFormat = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
        Date date = null;

        try {
            date = originalFormat.parse("01-21-2013 00:00:00");
        } catch (ParseException ex) {
            Logger.getLogger(CashierController.class.getName()).log(Level.SEVERE, null, ex);
        }

        return date;
    }

    /**
     * Zwraca liczb osb korzystajcych w danej chwili z atrakcji
     * @param attraction atrakcja z ktrej zostanie odczytane natzenie
     * @return liczba osb korzystajcych w danej chwili z atrakcji
     */
    public int GetSkiAttractionTraffic(Attraction attraction) {
        int traffic = 0;

        for (Object terminalObject : attraction.getTerminals()) {
            Terminal terminal = (Terminal) terminalObject;

            List queryResult = s.createCriteria(Cardusage.class).add(Restrictions.eq("terminal", terminal)).list();

            for (Object result : queryResult) {
                Cardusage usage = (Cardusage) result;

                System.out.println("Date: " + usage.getUsedate() + "is after: " + GetDateNow() + " - "
                        + usage.getUsedate().after(GetDateNow()));

                if (usage.getUsedate().after(GetDateNow())) {
                    traffic++;
                }
            }

            //traffic += queryResult.size();
        }

        return traffic;
    }

    /**
     * Zwraca uzytkownika wybranego do edycji
     * @return uytkownik zaznaczony w trybie kasjera
     */
    public static Users GetSelectedUserData() {
        return selectedUser;
    }

}