br.com.hslife.orcamento.service.OpcaoSistemaService.java Source code

Java tutorial

Introduction

Here is the source code for br.com.hslife.orcamento.service.OpcaoSistemaService.java

Source

/***
      
 Copyright (c) 2012 - 2020 Hrcules S. S. Jos
    
Este arquivo  parte do programa Oramento Domstico.
    
    
Oramento Domstico  um software livre; voc pode redistribui-lo e/ou 
    
modific-lo dentro dos termos da Licena Pblica Geral Menor GNU como 
    
publicada pela Fundao do Software Livre (FSF); na verso 2.1 da 
    
Licena.
    
    
Este programa  distribudo na esperana que possa ser til, 
    
mas SEM NENHUMA GARANTIA; sem uma garantia implcita de ADEQUAO a 
    
qualquer MERCADO ou APLICAO EM PARTICULAR. Veja a Licena Pblica 
    
Geral Menor GNU em portugus para maiores detalhes.
    
    
Voc deve ter recebido uma cpia da Licena Pblica Geral Menor GNU sob o 
    
nome de "LICENSE.TXT" junto com este programa, se no, acesse o site do
    
projeto no endereco https://github.com/herculeshssj/orcamento ou escreva 
    
para a Fundao do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, 
    
Boston, MA  02110-1301, USA.
    
    
Para mais informaes sobre o programa Oramento Domstico e seu autor entre  
    
em contato pelo e-mail herculeshssj@outlook.com, ou ainda escreva para 
    
Hrcules S. S. Jos, Av. Ministro Lafaeyte de Andrade, 1683 - Bl. 3 Apt 404, 
    
Marco II - Nova Iguau, RJ, Brasil.
      
***/

package br.com.hslife.orcamento.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import br.com.hslife.orcamento.entity.OpcaoSistema;
import br.com.hslife.orcamento.entity.Usuario;
import br.com.hslife.orcamento.enumeration.TipoOpcaoSistema;
import br.com.hslife.orcamento.exception.ApplicationException;
import br.com.hslife.orcamento.facade.IOpcaoSistema;
import br.com.hslife.orcamento.repository.OpcaoSistemaRepository;
import br.com.hslife.orcamento.util.EntityPersistenceUtil;

@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { ApplicationException.class })
public class OpcaoSistemaService implements IOpcaoSistema {

    @Autowired
    public SessionFactory sessionFactory;

    @Autowired
    private OpcaoSistemaRepository repository;

    public OpcaoSistemaRepository getRepository() {
        this.repository.setSessionFactory(this.sessionFactory);
        return repository;
    }

    public void salvarOpcoesGlobal(Map<String, Object> opcoesSistema) {
        // TODO implementar
    }

    //   public void excluirOpcoesUsuario(Usuario usuario) {
    //   // Exclui as opes do sistema do usurio
    //   for (OpcaoSistema opcao : opcaoSistemaRepository.findByUsuario(usuario)) {
    //      opcaoSistemaRepository.delete(opcao);
    //   }
    //}

    public void salvarOpcoesGlobalAdmin(Map<String, Object> opcoesSistema) {
        OpcaoSistema opcao = new OpcaoSistema();
        for (String chave : opcoesSistema.keySet()) {
            opcao = getRepository().findOpcaoGlobalAdminByChave(chave);
            validarValorOpcaoSistema(opcao, opcoesSistema.get(opcao.getChave()));
            if (opcoesSistema.get(chave) instanceof String) {
                opcao.setTipoValor("STRING");
                opcao.setValor((String) opcoesSistema.get(chave));
            }
            if (opcoesSistema.get(chave) instanceof Boolean) {
                opcao.setTipoValor("BOOLEAN");
                opcao.setValor(Boolean.toString((Boolean) opcoesSistema.get(chave)));
            }
            if (opcoesSistema.get(chave) instanceof Integer) {
                opcao.setTipoValor("INTEGER");
                opcao.setValor(Integer.toString((Integer) opcoesSistema.get(chave)));
            }
            //opcao.setValor((String)opcoesSistema.get(chave)); -- Mudana decorrente de usar o JSF 2.2.10 e PrimeFaces 5.2
            getRepository().update(opcao);
        }
    }

    public void salvarOpcoesUser(Map<String, Object> opcoesSistema, Usuario usuario) {
        OpcaoSistema opcao;
        for (String chave : opcoesSistema.keySet()) {
            opcao = getRepository().findOpcaoUserByChave(chave, usuario);
            if (opcao != null) {
                validarValorOpcaoSistema(opcao, opcoesSistema.get(opcao.getChave()));
                //opcao.setValor((String)opcoesSistema.get(chave)); -- Mudana decorrente de usar o JSF 2.2.10 e PrimeFaces 5.2
                if (opcoesSistema.get(chave) instanceof String) {
                    opcao.setTipoValor("STRING");
                    opcao.setValor((String) opcoesSistema.get(chave));
                }
                if (opcoesSistema.get(chave) instanceof Boolean) {
                    opcao.setTipoValor("BOOLEAN");
                    opcao.setValor(Boolean.toString((Boolean) opcoesSistema.get(chave)));
                }
                if (opcoesSistema.get(chave) instanceof Integer) {
                    opcao.setTipoValor("INTEGER");
                    opcao.setValor(Integer.toString((Integer) opcoesSistema.get(chave)));
                }
                getRepository().update(opcao);
            } else {
                opcao = new OpcaoSistema();
                opcao.setCasoDeUso("");
                opcao.setChave(chave);
                opcao.setTipoOpcaoSistema(TipoOpcaoSistema.USER);
                opcao.setUsuario(usuario);
                if (opcoesSistema.get(chave) instanceof String) {
                    opcao.setTipoValor("STRING");
                    opcao.setValor((String) opcoesSistema.get(chave));
                }
                if (opcoesSistema.get(chave) instanceof Boolean) {
                    opcao.setTipoValor("BOOLEAN");
                    opcao.setValor(Boolean.toString((Boolean) opcoesSistema.get(chave)));
                }
                if (opcoesSistema.get(chave) instanceof Integer) {
                    opcao.setTipoValor("INTEGER");
                    opcao.setValor(Integer.toString((Integer) opcoesSistema.get(chave)));
                }
                getRepository().save(opcao);
            }
        }
    }

    private void validarValorOpcaoSistema(OpcaoSistema opcao, Object valor) {
        if (opcao.isRequired()) {
            EntityPersistenceUtil.validaCampoNulo(opcao.getChave(), valor);
        }
    }

    public List<OpcaoSistema> buscarOpcoesGlobalAdmin() {
        return getRepository().findOpcoesGlobalAdmin();
    }

    public Map<String, Object> buscarMapOpcoesGlobalAdmin() {
        List<OpcaoSistema> opcoesSistema = getRepository().findOpcoesGlobalAdmin();
        Map<String, Object> parametros = new HashMap<String, Object>();

        for (OpcaoSistema opcao : opcoesSistema) {
            if (opcao.getTipoValor().equals("STRING")) {
                parametros.put(opcao.getChave(), opcao.getValor());
            }
            if (opcao.getTipoValor().equals("BOOLEAN")) {
                parametros.put(opcao.getChave(), Boolean.valueOf(opcao.getValor()));
            }
            if (opcao.getTipoValor().equals("INTEGER")) {
                parametros.put(opcao.getChave(), Integer.valueOf(opcao.getValor()));
            }
        }

        return parametros;
    }

    public Map<String, Object> buscarMapOpcoesUser(Usuario usuario) {
        List<OpcaoSistema> opcoesSistema = getRepository().findOpcoesUser(usuario);
        Map<String, Object> parametros = new HashMap<String, Object>();

        for (OpcaoSistema opcao : opcoesSistema) {
            if (opcao.getTipoValor().equals("STRING")) {
                parametros.put(opcao.getChave(), opcao.getValor());
            }
            if (opcao.getTipoValor().equals("BOOLEAN")) {
                parametros.put(opcao.getChave(), Boolean.valueOf(opcao.getValor()));
            }
            if (opcao.getTipoValor().equals("INTEGER")) {
                parametros.put(opcao.getChave(), Integer.valueOf(opcao.getValor()));
            }
        }

        return parametros;
    }

    public Map<String, Object> buscarOpcoesGlobalAdminPorCDU(String cdu) {
        List<OpcaoSistema> opcoesSistema = getRepository().findOpcoesGlobalAdminByCDU(cdu);
        Map<String, Object> parametros = new HashMap<String, Object>();

        for (OpcaoSistema opcao : opcoesSistema) {
            if (opcao.getTipoValor().equals("STRING")) {
                parametros.put(opcao.getChave(), opcao.getValor());
            }
            if (opcao.getTipoValor().equals("BOOLEAN")) {
                parametros.put(opcao.getChave(), Boolean.valueOf(opcao.getValor()));
            }
            if (opcao.getTipoValor().equals("INTEGER")) {
                parametros.put(opcao.getChave(), Integer.valueOf(opcao.getValor()));
            }
        }

        return parametros;
    }

    @Override
    public OpcaoSistema buscarOpcaoUsuarioPorChave(String chave, Usuario usuario) {
        return getRepository().findOpcaoUserByChave(chave, usuario);
    }

    @Override
    public List<OpcaoSistema> buscarOpcoesUserPorCasoUso(String casoDeUso, Usuario usuario) {
        return getRepository().findOpcoesUserByCasoUso(casoDeUso, usuario);
    }
}