org.cms.dao.VestDao.java Source code

Java tutorial

Introduction

Here is the source code for org.cms.dao.VestDao.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 org.cms.dao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.cms.domen.Kategorija;
import org.cms.domen.Statistika;
import org.cms.domen.Vest;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Projections;
import org.hibernate.type.LongType;
import org.hibernate.type.StringType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

@Repository
public class VestDao {

    @Autowired
    private SessionFactory sessionFactory;

    public VestDao(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    @Transactional
    public List<Vest> vratiSveVesti() {
        Session session = this.sessionFactory.getCurrentSession();
        List<Vest> vesti = session.createQuery("from Vest order by datum desc, vestID desc").list();
        return vesti;
    }

    @Transactional
    public List<Vest> vratiObjavljeneVesti() {
        Session session = this.sessionFactory.getCurrentSession();
        List<Vest> vesti = session.createQuery("from Vest where objavljena=1 order by datum desc, vestID desc")
                .list();
        return vesti;
    }

    @Transactional
    public List<Vest> vratiObjavljeneVesti(int kategorijaID) {
        Session session = this.sessionFactory.getCurrentSession();
        List<Vest> vesti = session.createQuery(
                "from Vest where objavljena=1 and kategorija=" + kategorijaID + " order by datum desc, vestID desc")
                .list();
        return vesti;
    }

    @Transactional
    public Statistika[] vratiParametreZaStatistiku() {
        Session session = this.sessionFactory.getCurrentSession();
        String upit = "SELECT kategorija.naziv as naziv,COUNT(vest.kategorija) AS brojClanaka FROM vest "
                + "LEFT JOIN kategorija ON vest.kategorija=kategorija.kategorijaID GROUP BY kategorija";
        List<Object[]> redovi = session.createSQLQuery(upit).addScalar("naziv", StringType.INSTANCE)
                .addScalar("brojClanaka", LongType.INSTANCE).list();
        Statistika[] statistike = new Statistika[redovi.size()];
        for (int i = 0; i < redovi.size(); i++) {
            Statistika s = new Statistika((String) redovi.get(i)[0], (Long) redovi.get(i)[1]);
            statistike[i] = s;
        }
        //        for (Statistika s : lista) {
        //            System.out.println(s.getNazivKategorije() +" :"+s.getBrojVestiPoKategoriji());
        //        }
        return statistike;
    }

    @Transactional
    public List<Vest> vratiSveVestiRootKategorije(Kategorija kat) {
        Session session = this.sessionFactory.getCurrentSession();
        List<Vest> vesti = session.createQuery(
                "from Vest v join Kategorija k on v.kategorija=k.kategorijaID where (v.kategorija=(select kategorijaID from Kategorija where )) order by datum desc, vestID desc")
                .list();
        return vesti;
    }

    @Transactional
    public Vest prikaziVest(int id) {
        Session session = this.sessionFactory.getCurrentSession();
        Vest vest = (Vest) session.load(Vest.class, id);
        return vest;
    }

    @Transactional
    public void sacuvajVest(Vest vest) {
        sessionFactory.getCurrentSession().save(vest);
    }

    @Transactional
    public void izmeniVest(Vest vest) {
        sessionFactory.getCurrentSession().update(vest);
    }

    @Transactional
    public int vratiID() {
        Session session = this.sessionFactory.getCurrentSession();
        Criteria criteria = session.createCriteria(Vest.class).setProjection(Projections.max("vestID"));
        int id = 0;
        try {
            return (int) criteria.uniqueResult();
        } catch (Exception e) {
            return id;
        }
    }

    @Transactional
    public List<Vest> vratiObjavljeneVestiInverzanSort() {
        Session session = this.sessionFactory.getCurrentSession();
        List<Vest> vesti = session.createQuery("from Vest where objavljena=1 order by datum asc, vestID desc")
                .list();
        return vesti;
    }

}