com.mec.DAO.Postgre.EstablecimientoPostgreDAO.java Source code

Java tutorial

Introduction

Here is the source code for com.mec.DAO.Postgre.EstablecimientoPostgreDAO.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.mec.DAO.Postgre;

import com.mec.Util.HibernateUtil;
import com.mec.Models.Padron.Domicilio;
import com.mec.Models.Padron.EstablecimientoPost;
import com.mec.Models.Padron.LocalidadTipo;
import com.mec.Models.Padron.Localizacion;
import com.mec.Models.Padron.OfertaLocal;
import com.mec.Models.Padron.OfertaTipo;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Hibernate;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author 36194445
 */
@Repository
@Transactional(readOnly = true, transactionManager = "managerPostgre")
public class EstablecimientoPostgreDAO extends HibernateUtil {

    //@Cacheable("establecimientos")
    public List<EstablecimientoPost> getAll() {
        Criteria cr = this.getSessionPostgre().createCriteria(EstablecimientoPost.class);
        cr.add(Restrictions.isNull("fechaBaja"));
        return lazyInit(cr.list());
    }

    public EstablecimientoPost getByCue(int Cue) {
        Criteria cr = this.getSessionPostgre().createCriteria(EstablecimientoPost.class);
        cr.add(Restrictions.eq("cue", String.valueOf(Cue)));
        EstablecimientoPost e = (EstablecimientoPost) cr.uniqueResult();
        init(e);
        return e;
    }

    public EstablecimientoPost getByCueAnexo(int Cue, int Anexo) {
        EstablecimientoPost e = getByCue(Cue);
        List<Localizacion> anexo = new ArrayList<>();
        for (Localizacion l : e.getLocalizacion()) {
            if (Integer.parseInt(l.getAnexo()) == Anexo) {
                anexo.add(l);
            }
        }
        e.setLocalizacion(anexo);
        init(e);
        return e;
    }

    /*@CacheEvict(allEntries = true, value = {"establecimientos"})
    @Scheduled(fixedRate = 600000)//10min en ms
    public void reportCacheEvict() {
    System.out.println("Flush establecimientos Cache " + new Date());
    }*/

    private List<EstablecimientoPost> lazyInit(List<EstablecimientoPost> establecimientos) {
        establecimientos.forEach((t) -> {
            init(t);
        });
        return establecimientos;
    }

    private void init(EstablecimientoPost t) {
        Hibernate.initialize(t.getCategoria());
        Hibernate.initialize(t.getDependencia());
        Hibernate.initialize(t.getEstado());
        Hibernate.initialize(t.getSector());
        List<Localizacion> loc = t.getLocalizacion();
        Hibernate.initialize(loc);
        if (loc != null) {
            loc.forEach((l) -> {
                Hibernate.initialize(l.getAmbito());
                List<Domicilio> dom = l.getDomicilios();
                if (dom != null) {
                    dom.forEach((d) -> {
                        LocalidadTipo localidad = d.getLocalidad();
                        Hibernate.initialize(localidad);
                        if (localidad != null) {
                            Hibernate.initialize(localidad.getDepartamento());
                        }
                    });
                }
                List<OfertaLocal> oferta = l.getOfertas();
                Hibernate.initialize(oferta);
                if (oferta != null) {
                    oferta.forEach((o) -> {
                        Hibernate.initialize(o.getJornada());
                        OfertaTipo ot = o.getOferta();
                        Hibernate.initialize(ot);
                        if (ot != null) {
                            Hibernate.initialize(ot.getModalidad());
                            Hibernate.initialize(ot.getBase());
                            //Hibernate.initialize(ot.getTitulos());
                        }
                    });
                }
            });
        }
    }
}