com.tim10.glavna_knjiga.dbutils.NaloziUtils.java Source code

Java tutorial

Introduction

Here is the source code for com.tim10.glavna_knjiga.dbutils.NaloziUtils.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 com.tim10.glavna_knjiga.dbutils;

import com.tim10.glavna_knjiga.hibernate.HibernateSessionManager;
import com.tim10.glavna_knjiga.mappings.Dokumenti;
import com.tim10.glavna_knjiga.mappings.Klijent;
import com.tim10.glavna_knjiga.mappings.KontniOkvir;
import com.tim10.glavna_knjiga.mappings.Nalozi;
import com.tim10.glavna_knjiga.mappings.StavkeNaloga;
import com.tim10.glavna_knjiga.session.UserData;
import java.util.ArrayList;
import java.util.Date;

import java.util.List;
import java.util.Set;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Omar
 */
public class NaloziUtils {

    private static NaloziUtils instance = null;

    private static Session session = HibernateSessionManager.getSessionFactory().openSession();

    private NaloziUtils() {
    }

    public static NaloziUtils getInstace() {
        if (instance == null) {
            instance = new NaloziUtils();
        }
        return instance;
    }

    public void spasiNalog(Nalozi nalog, boolean zatvoriNalog) {

        Transaction tran = session.beginTransaction();

        if (zatvoriNalog) {
            nalog.setStatus(2);
            nalog.setDatumKnjizenja(new Date());
        } else {
            nalog.setStatus(1);
        }

        session.save(nalog);

        tran.commit();

        session.clear();
    }

    public void spasiStavkeNaloga(List<StavkeNaloga> stavkeNaloga, Nalozi nalog) {

        Transaction tran = session.beginTransaction();

        if (nalog.getId() == 0) {
            Query query;
            List<Nalozi> nalozi = new ArrayList<Nalozi>();

            query = session.createQuery("select nalozi from Nalozi nalozi order by nalozi.id desc")
                    .setMaxResults(1);

            nalozi = query.list();

            if (nalozi.size() > 0) {
                Nalozi spaseniNalog = nalozi.get(0);

                for (StavkeNaloga stavka : stavkeNaloga) {
                    stavka.setNalozi(spaseniNalog);
                    session.save(stavka);

                    session.flush();
                    session.clear();
                }
            }
        } else {
            for (StavkeNaloga stavka : stavkeNaloga) {
                if (stavka.getId() == 0) {
                    session.save(stavka);

                    session.flush();
                    session.clear();
                } else {
                    session.update(stavka);

                    session.flush();
                    session.clear();
                }
            }
        }

        tran.commit();

        session.clear();
    }

    public void obrisiStavkeNaloga(List<StavkeNaloga> stavkeNaloga) {
        Transaction tran = session.beginTransaction();

        for (StavkeNaloga stavka : stavkeNaloga)
            session.delete(stavka);

        tran.commit();
    }

    public void izmijeniNalog(Nalozi nalog, boolean zatvoriNalog) {
        Transaction tran = session.beginTransaction();

        if (zatvoriNalog) {
            nalog.setStatus(2);
            nalog.setDatumKnjizenja(new Date());
        }

        session.update(nalog);
        tran.commit();

        session.clear();
    }

    public void obrisiNalog(Nalozi nalog) {
        Transaction tran = session.beginTransaction();

        for (StavkeNaloga stavka : nalog.getStavkeNalogas())
            session.delete(stavka);

        session.delete(nalog);
        tran.commit();
    }

    public List<Nalozi> getNalozi(String sifraNaloga, String nazivNaloga, int statusNaloga, boolean isInit) {

        Query query;
        List<Nalozi> nalozi = new ArrayList<Nalozi>();

        if (isInit) {
            query = session.createQuery("select nalozi from Nalozi nalozi where nalozi.preduzece.id = :praduzece");
            query.setParameter("praduzece", UserData.getPreduzece().getIdPreduzece());

            nalozi = query.list();
        } else {
            if (statusNaloga == 0) {
                query = session.createQuery(
                        "select nalozi from Nalozi nalozi where nalozi.preduzece.id = :preduzece AND nalozi.sifraNaloga LIKE :sifra AND nalozi.naziv LIKE :naziv");
            } else {
                query = session.createQuery(
                        "select nalozi from Nalozi nalozi where nalozi.preduzece.id = :preduzece AND nalozi.sifraNaloga LIKE :sifra AND nalozi.naziv LIKE :naziv AND nalozi.status= :status");
                query.setParameter("status", statusNaloga);
            }

            query.setParameter("preduzece", UserData.getPreduzece().getIdPreduzece());
            query.setParameter("sifra", (sifraNaloga.isEmpty()) ? "%%" : "%" + sifraNaloga + "%");
            query.setParameter("naziv", (nazivNaloga.isEmpty()) ? "%%" : "%" + nazivNaloga + "%");

            nalozi = query.list();
        }

        return nalozi;
    }

    public List<Dokumenti> getDokumenti() {

        Query query;
        List<Dokumenti> dokumenti = new ArrayList<Dokumenti>();

        query = session.createQuery("select dokumenti from Dokumenti dokumenti");

        dokumenti = query.list();

        return dokumenti;
    }

    public List<Klijent> getKlijenti() {

        Query query;
        List<Klijent> klijenti = new ArrayList<Klijent>();

        query = session.createQuery("select klijenti from Klijent klijenti");

        klijenti = query.list();

        return klijenti;
    }

    public List<KontniOkvir> getKontoIzOkvira(String sifraKonta) {

        List<KontniOkvir> result = new ArrayList<KontniOkvir>();
        Query query;

        query = session.createQuery("select konto from KontniOkvir konto where konto.brojKonta = :sifrakonta");
        query.setParameter("sifrakonta", sifraKonta);

        result = query.list();

        return result;
    }

    public boolean provjeriKontoUKontnomPlanu(int idKonta) {

        int idPreduzeca = UserData.getPreduzece().getIdPreduzece();
        SQLQuery query;

        query = session.createSQLQuery("select kpko.KontniOkvir_id from KontniPlan_has_KontniOkvir kpko "
                + "inner join KontniPlan kp on kpko.KontniPlan_IdKontniPlan = kp.idKOntniPlan "
                + "where kpko.KontniOkvir_id = :idKonta and kp.Preduzece_IdPreduzece = :idPreduzeca");
        query.setParameter("idKonta", idKonta);
        query.setParameter("idPreduzeca", idPreduzeca);

        List<KontniOkvir> result = new ArrayList<KontniOkvir>();

        result = query.list();

        if (result.size() > 0)
            return true;
        else
            return false;
    }

}