Tenho um relatório feito no ireport 3.6 onde os dados são montados através de uma query dentro do ireport(em consulta relatórios).
Tenho a necessidade de montar uma cláusula dinamicamente por exemplo:
select * from servico S left join tiposervico TS on (S.id_tiposervico = TS.id_tipoServico)
inner join projeto p on (p.id_projeto = s.id_projeto)
where TS.bl_faturavel = true and s.id_servico in
(select distinct i.id_servico from dia d left join item i on(d.id_item = i.id_item)
where d.mes = $P{P_MES} and d.ano = $P{P_ANO}) $P{P_AREA} order by numero
Exemplo:
Caso o usuário tenho nível 1, o parâmetro $P{P_AREA} é uma cláusula, and id_area=1 , se for outro nível eu informo o parâmetro $P{P_AREA} em branco “”.
Na minha classe java que monta o relatório:
if(user.getIdGrupo().getIdGrupo().equals(Constant.GRUPO_NIVEL_USUARIO) || user.getIdGrupo().getIdGrupo().equals(Constant.GRUPO_NIVEL_GERENTE) || user.getIdGrupo().getIdGrupo().equals(Constant.GRUPO_NIVEL_LIDER_EQUIPE)){
parametros.put("P_AREA", " and p.id_area = " + user.getArea().getIdArea());
}else{
parametros.put("P_AREA", "");
}
Como eu poderia fazer isso funcionar?