package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import br.com.centralit.citcorpore.bean.GrupoDTO;
import br.com.centralit.citcorpore.bean.MenuDTO;
import br.com.centralit.citcorpore.bean.PerfilAcessoDTO;
import br.com.centralit.citcorpore.bean.PerfilAcessoGrupoDTO;
import br.com.centralit.citcorpore.bean.PerfilAcessoUsuarioDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.integracao.CrudDaoDefaultImpl;
import br.com.citframework.integracao.Field;
import br.com.citframework.integracao.Order;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilDatas;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class MenuDao extends CrudDaoDefaultImpl {
public MenuDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
@Override
public Collection find(IDto arg0) throws PersistenceException {
return null;
}
@Override
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("IDMENU", "idMenu", true, true, false, false));
listFields.add(new Field("IDMENUPAI", "idMenuPai", false, false, false, false));
listFields.add(new Field("NOME", "nome", false, false, false, false));
listFields.add(new Field("DATAINICIO", "dataInicio", false, false, false, false));
listFields.add(new Field("DATAFIM", "dataFim", false, false, false, false));
listFields.add(new Field("DESCRICAO", "descricao", false, false, false, false));
listFields.add(new Field("ORDEM", "ordem", false, false, false, false));
listFields.add(new Field("MENURAPIDO", "menuRapido", false, false, false, false));
listFields.add(new Field("LINK", "link", false, false, false, false));
listFields.add(new Field("IMAGEM", "imagem", false, false, false, false));
listFields.add(new Field("MOSTRAR", "mostrar", false, false, false, false));
return listFields;
}
public void updateNotNull(Collection<MenuDTO> menus) {
try {
for (MenuDTO menu : menus) {
if (menu.getIdMenu() != null) {
updateNotNull(menu);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void updateDataFim() throws PersistenceException {
Object[] parametro = new Object[] { UtilDatas.getDataAtual() };
String sql = "UPDATE " + getTableName() + " SET datafim = ?";
execUpdate(sql, parametro);
}
public void deleteAll() throws PersistenceException {
String sql = "delete from " + getTableName();
super.execUpdate(sql, null);
}
public void deleteMenu(Integer idMenu) throws PersistenceException {
String sql = "delete from " + getTableName() + " where idmenu = ?";
super.execUpdate(sql, new Object[] { idMenu });
}
@Override
public String getTableName() {
return "MENU";
}
@Override
public Collection list() throws PersistenceException {
List<Order> list = new ArrayList<>();
list.add(new Order("nome"));
return super.list(list);
}
@Override
public Class<MenuDTO> getBean() {
return MenuDTO.class;
}
public Collection<MenuDTO> listarMenusPorPerfil(UsuarioDTO usuario, Integer idMenuPai) throws PersistenceException {
return listaMenus(usuario, idMenuPai, false);
}
public Collection<MenuDTO> listarMenusPorPerfil(UsuarioDTO usuario, Integer idMenuPai, boolean menuRapido)
throws PersistenceException {
return listaMenus(usuario, idMenuPai, menuRapido);
}
/**
* Lista os menus por perfil de acesso Metodo reutiliz�vel
* Otimizado para utilizar comparador de igualdade.
* @author thyen.chang
* @since 23/01/2015 Opera��o Usain Bolt
*/
public Collection<MenuDTO> listaMenus(UsuarioDTO usuario, Integer idMenuPai, boolean menuRapido) throws PersistenceException {
if (usuario == null) {
return null;
}
List result = null;
StringBuilder sql = new StringBuilder();
List<Integer> parametros = new ArrayList<>();
sql.append("SELECT distinct m.idmenu, m.idmenupai, m.nome, m.datainicio, m.datafim, m.descricao, m.ordem, m.link, m.imagem, m.mostrar ");
sql.append("FROM perfilacessomenu a ");
sql.append("JOIN menu m ON m.idmenu = a.idmenu ");
sql.append("WHERE m.datafim IS NULL AND (a.pesquisa = 'S' OR a.grava = 'S' OR a.deleta = 'S') ");
if (menuRapido) {
sql.append(" AND (m.menuRapido = 'S' OR m.link = '')");
}
if (idMenuPai == null) {
if (!menuRapido) {
sql.append("AND m.idmenupai IS NULL ");
}
} else {
sql.append("AND m.idmenupai = ? ");
parametros.add(idMenuPai);
}
getPerfilAcessoUsuarioDAO().setTransactionControler(this.getTransactionControler());
getGrupoDAO().setTransactionControler(this.getTransactionControler());
getPerfilAcessoGrupoDAO().setTransactionControler(this.getTransactionControler());
PerfilAcessoUsuarioDTO perfilAcessoEspecifico = getPerfilAcessoUsuarioDAO().obterPerfilAcessoUsuario(usuario);
if (perfilAcessoEspecifico != null) {
sql.append("AND (a.idperfilacesso = ? ");
parametros.add(perfilAcessoEspecifico.getIdPerfilAcesso());
Collection<GrupoDTO> gruposDoEmpregado = getGrupoDAO().getGruposByIdEmpregado(usuario.getIdEmpregado());
if (gruposDoEmpregado != null && !gruposDoEmpregado.isEmpty()) {
for (GrupoDTO grupo : gruposDoEmpregado) {
PerfilAcessoGrupoDTO perfilAcessoGrupo = getPerfilAcessoGrupoDAO().obterPerfilAcessoGrupo(grupo);
if (perfilAcessoGrupo != null) {
sql.append("OR a.idperfilacesso = ? ");
parametros.add(perfilAcessoGrupo.getIdPerfilAcessoGrupo());
}
}
}
sql.append(")");
} else {
Collection<GrupoDTO> gruposDoEmpregado = getGrupoDAO().getGruposByIdEmpregado(usuario.getIdEmpregado());
if (gruposDoEmpregado != null && !gruposDoEmpregado.isEmpty()) {
boolean aux = true;
for (GrupoDTO grupo : gruposDoEmpregado) {
PerfilAcessoGrupoDTO perfilAcessoGrupo = getPerfilAcessoGrupoDAO().obterPerfilAcessoGrupo(grupo);
if (perfilAcessoGrupo != null) {
if (aux) {
sql.append("AND (a.idperfilacesso = ? ");
parametros.add(perfilAcessoGrupo.getIdPerfilAcessoGrupo());
aux = false;
} else {
sql.append("OR a.idperfilacesso = ? ");
parametros.add(perfilAcessoGrupo.getIdPerfilAcessoGrupo());
}
}
}
if (!aux) {
sql.append(")");
}
}
}
sql.append(" ORDER BY ordem, idmenupai");
Object[] paramsFinal = parametros.size() == 0 ? null : parametros.toArray();
List lista;
try {
lista = this.execSQL(sql.toString(), paramsFinal);
List<String> listRetorno = new ArrayList<>();
listRetorno.add("idMenu");
listRetorno.add("idMenuPai");
listRetorno.add("nome");
listRetorno.add("dataInicio");
listRetorno.add("dataFim");
listRetorno.add("descricao");
listRetorno.add("ordem");
listRetorno.add("link");
listRetorno.add("imagem");
listRetorno.add("mostrar");
result = engine.listConvertion(MenuDTO.class, lista, listRetorno);
} catch (PersistenceException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public Collection<MenuDTO> listaMenuByUsr(UsuarioDTO usuario) throws PersistenceException {
List result = null;
StringBuilder sql = new StringBuilder();
List<Integer> parametros = new ArrayList<>();
sql.append("SELECT distinct m.idmenu, m.idmenupai, m.nome, m.datainicio, m.datafim, m.descricao, m.ordem, m.link, m.imagem ");
sql.append("FROM perfilacessomenu a ");
sql.append("JOIN menu m ON m.idmenu = a.idmenu ");
sql.append("WHERE m.datafim IS NULL AND (a.pesquisa <> 'N' OR a.grava <> 'N' OR a.deleta <> 'N')");
if (usuario != null) {
getPerfilAcessoUsuarioDAO().setTransactionControler(this.getTransactionControler());
getGrupoDAO().setTransactionControler(this.getTransactionControler());
getPerfilAcessoGrupoDAO().setTransactionControler(this.getTransactionControler());
PerfilAcessoUsuarioDTO perfilAcessoEspecifico = getPerfilAcessoUsuarioDAO().obterPerfilAcessoUsuario(usuario);
if (perfilAcessoEspecifico != null) {
sql.append("AND (a.idperfilacesso = ? ");
parametros.add(perfilAcessoEspecifico.getIdPerfilAcesso());
Collection<GrupoDTO> gruposDoEmpregado = getGrupoDAO().getGruposByIdEmpregado(usuario.getIdEmpregado());
if (gruposDoEmpregado != null && !gruposDoEmpregado.isEmpty()) {
for (GrupoDTO grupo : gruposDoEmpregado) {
PerfilAcessoGrupoDTO perfilAcessoGrupo = getPerfilAcessoGrupoDAO().obterPerfilAcessoGrupo(grupo);
if (perfilAcessoGrupo != null) {
sql.append("OR a.idperfilacesso = ? ");
parametros.add(perfilAcessoGrupo.getIdPerfilAcessoGrupo());
}
}
}
sql.append(")");
} else {
Collection<GrupoDTO> gruposDoEmpregado = getGrupoDAO().getGruposByIdEmpregado(usuario.getIdEmpregado());
if (gruposDoEmpregado != null && !gruposDoEmpregado.isEmpty()) {
boolean aux = true;
for (GrupoDTO grupo : gruposDoEmpregado) {
PerfilAcessoGrupoDTO perfilAcessoGrupo = getPerfilAcessoGrupoDAO().obterPerfilAcessoGrupo(grupo);
if (perfilAcessoGrupo != null) {
if (aux) {
sql.append("AND (a.idperfilacesso = ? ");
parametros.add(perfilAcessoGrupo.getIdPerfilAcessoGrupo());
aux = false;
} else {
sql.append("OR a.idperfilacesso = ? ");
parametros.add(perfilAcessoGrupo.getIdPerfilAcessoGrupo());
}
}
}
if (!aux) {
sql.append(")");
}
}
}
}
sql.append("AND m.link IS NOT NULL");
sql.append(" ORDER BY ordem, idmenupai");
Object[] paramsFinal = parametros.size() == 0 ? null : parametros.toArray();
List lista;
try {
lista = this.execSQL(sql.toString(), paramsFinal);
List<String> listRetorno = new ArrayList<>();
listRetorno.add("idMenu");
listRetorno.add("idMenuPai");
listRetorno.add("nome");
listRetorno.add("dataInicio");
listRetorno.add("dataFim");
listRetorno.add("descricao");
listRetorno.add("ordem");
listRetorno.add("link");
listRetorno.add("imagem");
result = engine.listConvertion(MenuDTO.class, lista, listRetorno);
} catch (PersistenceException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public Integer getPerfilAcesso(UsuarioDTO usuario) throws PersistenceException {
Integer retorno = null;
StringBuilder sqlPerfilUsuario = new StringBuilder();
sqlPerfilUsuario.append("SELECT idperfil FROM perfilacessousuario WHERE idusuario = ? AND datafim IS NULL");
StringBuilder sqlPerfilGrupo = new StringBuilder();
sqlPerfilGrupo.append("SELECT idperfil FROM perfilacessogrupo WHERE idgrupo = ? AND datafim IS NULL");
Object[] params01 = new Object[] { usuario.getIdUsuario() };
Object[] params02 = new Object[] { usuario.getIdGrupo() };
List lista;
List<String> camposConversao = new ArrayList<>();
List<PerfilAcessoDTO> result;
try {
lista = this.execSQL(sqlPerfilUsuario.toString(), params01);
if (lista.isEmpty()) {
lista = this.execSQL(sqlPerfilGrupo.toString(), params02);
}
if (!lista.isEmpty()) {
camposConversao.add("idPerfilAcesso");
result = (List<PerfilAcessoDTO>) engine.listConvertion(PerfilAcessoDTO.class, lista,
camposConversao);
retorno = result.get(0).getIdPerfilAcesso();
}
} catch (PersistenceException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return retorno;
}
public Collection listarMenus() throws PersistenceException {
StringBuilder sql = new StringBuilder();
sql.append("SELECT distinct menu.idMenu,menu.idMenuPai,menu.nome,menu.mostrar FROM MENU menu INNER JOIN MENU menuFilho ON menu.idMenu = menuFilho.idMenu ");
sql.append("WHERE menu.idmenupai IS NULL and menu.datafim IS NULL and menuFilho.datafim is null");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), null);
List<String> listRetorno = new ArrayList<>();
listRetorno.add("idMenu");
listRetorno.add("idMenuPai");
listRetorno.add("nome");
listRetorno.add("mostrar");
return engine.listConvertion(getBean(), lista, listRetorno);
}
public Collection<MenuDTO> listaIdNomeMenus() throws PersistenceException {
StringBuilder sql = new StringBuilder();
sql.append("select m.idmenu, m.nome, p.idperfilacesso, p.pesquisa, p.grava, p.deleta from perfilacessomenu p inner join menu m on p.idmenu = m.idmenu ");
sql.append(" where p.datafim is null ");
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), null);
List<String> listRetorno = new ArrayList<>();
listRetorno.add("idMenu");
listRetorno.add("nome");
listRetorno.add("idPerfilAcesso");
listRetorno.add("pesquisa");
listRetorno.add("grava");
listRetorno.add("deleta");
List result = null;
if (lista != null && !lista.isEmpty()) {
result = engine.listConvertion(getBean(), lista, listRetorno);
}
return result;
}
public Collection<MenuDTO> listarMenusFilhoByIdMenuPai(Integer idMenuPai) throws PersistenceException {
List<Integer> parametro = new ArrayList<>();
StringBuilder sql = new StringBuilder();
sql.append("select idmenu, link from menu where idmenupai = ? ");
parametro.add(idMenuPai);
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<>();
listRetorno.add("idMenu");
listRetorno.add("link");
List result = null;
if (lista != null && !lista.isEmpty()) {
result = engine.listConvertion(getBean(), lista, listRetorno);
}
return result;
}
public Collection<MenuDTO> listarSubMenus(MenuDTO submenu) throws PersistenceException {
List<Integer> parametro = new ArrayList<>();
StringBuilder sql = new StringBuilder();
sql.append("SELECT idMenu, idMenuPai, nome FROM ");
sql.append(getTableName());
sql.append(" WHERE idmenupai = ? AND datafim IS NULL ");
parametro.add(submenu.getIdMenu());
List lista = new ArrayList<>();
lista = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<>();
listRetorno.add("idMenu");
listRetorno.add("idMenuPai");
listRetorno.add("nome");
return engine.listConvertion(getBean(), lista, listRetorno);
}
public Collection<MenuDTO> listarMenusPais() throws PersistenceException {
List<String> parametro = new ArrayList<>();
StringBuilder sql = new StringBuilder();
sql.append("SELECT idMenu, nome, descricao, ordem, link, imagem, datainicio, menurapido FROM ");
sql.append(getTableName());
sql.append(" WHERE idmenupai is null AND dataFim IS NULL ");
List lista = new ArrayList<>();
lista = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<>();
listRetorno.add("idMenu");
listRetorno.add("nome");
listRetorno.add("descricao");
listRetorno.add("ordem");
listRetorno.add("link");
listRetorno.add("imagem");
listRetorno.add("dataInicio");
listRetorno.add("menuRapido");
return engine.listConvertion(getBean(), lista, listRetorno);
}
public Collection<MenuDTO> listarMenusFilhos(Integer idMenuPai) throws PersistenceException {
List<Integer> parametro = new ArrayList<>();
StringBuilder sql = new StringBuilder();
sql.append("SELECT idMenu, idMenuPai, nome, descricao, ordem, link, imagem, datainicio, menurapido FROM ");
sql.append(getTableName());
sql.append(" WHERE idmenupai = ? AND dataFim IS NULL ");
parametro.add(idMenuPai);
List lista = new ArrayList<>();
lista = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<>();
listRetorno.add("idMenu");
listRetorno.add("idMenuPai");
listRetorno.add("nome");
listRetorno.add("descricao");
listRetorno.add("ordem");
listRetorno.add("link");
listRetorno.add("imagem");
listRetorno.add("dataInicio");
listRetorno.add("menuRapido");
return engine.listConvertion(getBean(), lista, listRetorno);
}
public Collection<MenuDTO> listarMenuPai(Integer idMenuFilho) throws PersistenceException {
List<Integer> parametro = new ArrayList<>();
StringBuilder sql = new StringBuilder();
sql.append("SELECT idMenu, idMenuPai FROM " + getTableName() + " WHERE idmenu = ? AND dataFim IS NULL ");
parametro.add(idMenuFilho);
List lista = new ArrayList<>();
lista = this.execSQL(sql.toString(), parametro.toArray());
List<String> listRetorno = new ArrayList<>();
listRetorno.add("idMenu");
listRetorno.add("idMenuPai");
List result = null;
if (lista != null && !lista.isEmpty()) {
result = engine.listConvertion(getBean(), lista, listRetorno);
}
return result;
}
/**
* M�todo para verificar se caso exista um menu com o mesmo nome
*
* @author rodrigo.oliveira
* @param menuDTO
* @return Se caso exista menu com o mesmo nome retorna true
*/
public boolean verificaSeExisteMenu(MenuDTO menuDTO) throws PersistenceException {
List parametro = new ArrayList<>();
List list = new ArrayList<>();
String sql = "SELECT idmenu FROM " + getTableName() + " WHERE nome = ? AND dataFim IS NULL ";
parametro.add(menuDTO.getNome());
if (menuDTO.getIdMenu() != null) {
sql += " AND idmenu <> ? ";
parametro.add(menuDTO.getIdMenu());
}
list = this.execSQL(sql, parametro.toArray());
if (list != null && !list.isEmpty()) {
return true;
}
return false;
}
public boolean verificaSeExisteMenuPorLink(MenuDTO menuDTO) throws PersistenceException {
List parametro = new ArrayList<>();
List list = new ArrayList<>();
String sql = "SELECT idmenu FROM " + getTableName() + " WHERE nome = ? AND dataFim IS NULL ";
parametro.add(menuDTO.getNome());
if (menuDTO.getIdMenu() != null) {
sql += " AND idmenu <> ? ";
parametro.add(menuDTO.getIdMenu());
}
list = this.execSQL(sql, parametro.toArray());
if (list != null && !list.isEmpty()) {
return true;
}
return false;
}
public Integer buscarIdMenu(String link) throws PersistenceException {
List<String> ordenacao = new ArrayList<>();
StringBuilder sql = new StringBuilder();
sql.append("SELECT idmenu FROM menu where link = ? and dataFim is null");
List lista = this.execSQL(sql.toString(), new Object[] { link });
ordenacao.add("idMenu");
if (lista != null && !lista.isEmpty()) {
Collection<MenuDTO> result = engine.listConvertion(getBean(), lista, ordenacao);
for (MenuDTO menu : result) {
return menu.getIdMenu();
}
}
return null;
}
public void alterarMenuPorNome(MenuDTO menuDTO) throws PersistenceException {
List<Object> parametro = new ArrayList<>();
String sql = "UPDATE " + getTableName() + " SET idMenuPai = ?, link = ? WHERE nome = ? AND dataFim IS NULL ";
parametro.add(menuDTO.getIdMenuPai());
parametro.add(menuDTO.getLink());
parametro.add(menuDTO.getNome());
if (menuDTO.getIdMenu() != null) {
sql += " AND idmenu <> ? ";
parametro.add(menuDTO.getIdMenu());
}
this.execUpdate(sql, parametro.toArray());
}
private GrupoDao grupoDAO;
private PerfilAcessoGrupoDao perfilAcessoGrupoDAO;
private PerfilAcessoUsuarioDAO perfilAcessoUsuarioDAO;
private GrupoDao getGrupoDAO() {
if (grupoDAO == null) {
grupoDAO = new GrupoDao();
}
return grupoDAO;
}
private PerfilAcessoGrupoDao getPerfilAcessoGrupoDAO() {
if (perfilAcessoGrupoDAO == null) {
perfilAcessoGrupoDAO = new PerfilAcessoGrupoDao();
}
return perfilAcessoGrupoDAO;
}
private PerfilAcessoUsuarioDAO getPerfilAcessoUsuarioDAO() {
if (perfilAcessoUsuarioDAO == null) {
perfilAcessoUsuarioDAO = new PerfilAcessoUsuarioDAO();
}
return perfilAcessoUsuarioDAO;
}
/**
* M�todo para retornar um mapa com todos os menus que o usu�rio pode acessar
* Mapa<idMenuPai, List<MenusFilhos>
* @author thyen.chang
* @since 26/01/2015 - OPERA��O USAIN BOLT
* @param usuario
* @return
* @throws PersistenceException
*/
public Map<Integer, List<MenuDTO> > listaMenuPorUsuario(UsuarioDTO usuario) throws PersistenceException{
if(usuario == null || usuario.getIdUsuario() == null){
return null;
}
List result = null;
StringBuilder sql = new StringBuilder();
List<Integer> parametros = new ArrayList<>();
sql.append("SELECT distinct m.idmenu, m.idmenupai, m.nome, m.datainicio, m.datafim, m.descricao, m.ordem, m.link, m.imagem, m.mostrar ");
sql.append("FROM perfilacessomenu a ");
sql.append("JOIN menu m ON m.idmenu = a.idmenu ");
sql.append("WHERE m.datafim IS NULL AND (a.pesquisa = 'S' OR a.grava = 'S' OR a.deleta = 'S') ");
sql.append("AND m.idmenupai IS NOT NULL ");
getPerfilAcessoUsuarioDAO().setTransactionControler(this.getTransactionControler());
getGrupoDAO().setTransactionControler(this.getTransactionControler());
getPerfilAcessoGrupoDAO().setTransactionControler(this.getTransactionControler());
PerfilAcessoUsuarioDTO perfilAcessoEspecifico = getPerfilAcessoUsuarioDAO().obterPerfilAcessoUsuario(usuario);
if (perfilAcessoEspecifico != null) {
sql.append("AND (a.idperfilacesso = ? ");
parametros.add(perfilAcessoEspecifico.getIdPerfilAcesso());
Collection<GrupoDTO> gruposDoEmpregado = getGrupoDAO().getGruposByIdEmpregado(usuario.getIdEmpregado());
if (gruposDoEmpregado != null && !gruposDoEmpregado.isEmpty()) {
for (GrupoDTO grupo : gruposDoEmpregado) {
PerfilAcessoGrupoDTO perfilAcessoGrupo = getPerfilAcessoGrupoDAO().obterPerfilAcessoGrupo(grupo);
if (perfilAcessoGrupo != null) {
sql.append("OR a.idperfilacesso = ? ");
parametros.add(perfilAcessoGrupo.getIdPerfilAcessoGrupo());
}
}
}
sql.append(")");
} else {
Collection<GrupoDTO> gruposDoEmpregado = getGrupoDAO().getGruposByIdEmpregado(usuario.getIdEmpregado());
if (gruposDoEmpregado != null && !gruposDoEmpregado.isEmpty()) {
boolean aux = true;
for (GrupoDTO grupo : gruposDoEmpregado) {
PerfilAcessoGrupoDTO perfilAcessoGrupo = getPerfilAcessoGrupoDAO().obterPerfilAcessoGrupo(grupo);
if (perfilAcessoGrupo != null) {
if (aux) {
sql.append("AND (a.idperfilacesso = ? ");
parametros.add(perfilAcessoGrupo.getIdPerfilAcessoGrupo());
aux = false;
} else {
sql.append("OR a.idperfilacesso = ? ");
parametros.add(perfilAcessoGrupo.getIdPerfilAcessoGrupo());
}
}
}
if (!aux) {
sql.append(")");
}
}
}
sql.append(" ORDER BY idmenupai DESC, ordem");
Object[] paramsFinal = parametros.size() == 0 ? null : parametros.toArray();
List lista;
try {
lista = this.execSQL(sql.toString(), paramsFinal);
List<String> listRetorno = new ArrayList<>();
listRetorno.add("idMenu");
listRetorno.add("idMenuPai");
listRetorno.add("nome");
listRetorno.add("dataInicio");
listRetorno.add("dataFim");
listRetorno.add("descricao");
listRetorno.add("ordem");
listRetorno.add("link");
listRetorno.add("imagem");
listRetorno.add("mostrar");
result = engine.listConvertion(MenuDTO.class, lista, listRetorno);
} catch (PersistenceException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return convertListToMap(result);
}
/**
* M�todo para converter uma lista com menus para um Mapa<idMenuPai, List<MenusFilhos> >
* @author thyen.chang
* @since 26/01/2015 - OPERA��O USAIN BOLT
* @param listaMenus
* @return
*/
private Map<Integer, List<MenuDTO> > convertListToMap(List<MenuDTO> listaMenus){
HashMap<Integer, List<MenuDTO> > mapa = new HashMap<Integer, List<MenuDTO> >();
for(MenuDTO menuAux : listaMenus){
List<MenuDTO> listaMapa = mapa.get(menuAux.getIdMenuPai());
if(listaMapa == null || listaMapa.isEmpty()){
listaMapa = new ArrayList<MenuDTO>();
listaMapa.add(menuAux);
} else {
listaMapa.add(menuAux);
}
mapa.put(menuAux.getIdMenuPai(), listaMapa);
}
return mapa;
}
}