Galera, boa tarde!
Gostaria de uma ajuda de vocës, é o seguinte:
Estou desenvolvendo uma tela, onde o usuário irá selecionar um determinado relatório (JList), irá preenhcer os filtros (caso queira) e posteriormente irá clicar em executar.
Comecei a desenvolver e estou incomodado com tantos IF’s e Switchs que estou utilizando, acredito que haja uma melhor forma para fazer isso…
Eu cheguei a ler o tópico http://www.guj.com.br/java/55885-como-nao-utilizar-if-ou-switch porém não consegui trazer para o contexto da minha tela (devo ser burro mesmo…rs)
Gostaria que quando a tela fosse aberta o JLIST fosse preenchido com os possíveis relatórios no sistema (isso não vem de nenhuma base) é colocada manualmente, veja abaixo:
this.listaRelatorios.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
DefaultListModel modeloListaRelatorios = new DefaultListModel();
modeloListaRelatorios.addElement(DadosTiposRelatorios.RELATORIO_A.getLabel());
modeloListaRelatorios.addElement(DadosTiposRelatorios.RELATORIO_B.getLabel());
modeloListaRelatorios.addElement(DadosTiposRelatorios.RELATORIO_C.getLabel());
modeloListaRelatorios.addElement(DadosTiposRelatorios.RELATORIO_D1.getLabel());
this.listaRelatorios.setModel(modeloListaRelatorios);
O JList é preenchido com base no enumerado abaixo:
public enum DadosTiposRelatorios {
RELATORIO_A("Relatorio A", 1),
RELATORIO_B("Relatorio B", 2),
RELATORIO_C("Relatorio C", 3);
final private String label;
final private int codigo;
private DadosTiposRelatorios(String label, int codigo) {
this.label = label;
this.codigo = codigo;
}
public String getLabel() {
return label;
}
public int getCodigo() {
return codigo;
}
public static DadosTiposRelatorios getRelatorio(int codigo) {
switch (codigo) {
case 0:
return RELATORIO_A;
case 1:
return RELATORIO_B;
case 2:
return RELATORIO_C;
}
return null;
}
}
Queria saber qual a melhor prática para desenvolver essa tela, eu sinceramente não gosto de IF’s e Switchs gigantescos (nessa minha tela, terão mais de 20 relatórios).
Existe alguma forma de estruturação de código que com base no relatório selecionado o mesmo executará o método de exibição do mesmo (lembrando que os relatórios são em Jasperreports)…
alguém pode me dar uma luz???