Moçada,
Estou fazendo uma aplicação onde o Modelo tem muitas coisas fixas e discretas, o que é um uso bom para do enum. Envolve consulta de dados de estações hidrológicas, meteorológicas e etc.
Daí comecei a usar enums (muitos), criei um com as estaçoes, um para o tipo das estações, um para grupos de estações que o usuário vai visualizar em conjunto e agora mais um para o modo de operação do programa (pode ser simulação ou previsão).
No modelo uso um facade que o controlador acessa, mas deixei os enums publicos tb, pq facilita muito no controlador para fazer comparaçoes, armazenar o estado, ifs, cases, verificação estática e tal.
Minha dúvida é se estou abusando dos enums. No início tava usando eles até para aramazenas os dados. Mas agora só pra coisa dinâmica.
Segue abaixo a listagem do que tem as info de postos:
public enum Postos {
MORSING_FLU("Morsing", "Q", 22324346, VAZAO_MODELO),
MORSING_PLU("Morsing pluviômetro", "P Morsing", 22324346, PRECIPITACAO),
MORSING_OBSERVADOR("Morsing Observador", "P Obs.", -1, PRECIPITACAO_OBSERVADOR),
PIRAI("Barra do Piraí", "P Piraí", 22274347, PRECIPITACAO),
SANTA_CECILIA("Santa Cecília", "P Sta Cec.", 22284351, PRECIPITACAO),
PASSA_TRES("Passa Três", "P Passa 3", 22414400, PRECIPITACAO),
BARRAGEM_SANTANA("Barragem Santana", "P Santana", 22314349, PRECIPITACAO),
FAZ_NOVA_ESPERANCA("Faz. Nova Esp.", "Q Faz.", 22394357, VAZAO_MODELO),
FAZ_NOVA_ESPERANCA_OBSERVADOR("Faz. Nova Esp. Observador", "P Obs.", -1, PRECIPITACAO_OBSERVADOR),
FAZ_NOVA_ESPERANCA_PLU("Faz. Nova Esp. pluviômetro", "P Faz.", 22394357, PRECIPITACAO),
TOCOS_PLU("Tocos pluviômetro", "P Tocos", 22444407, PRECIPITACAO),
TOCOS_BARRAGEM("Barragem de Tocos", "Q barragem", 22454407, VAZAO_MODELO),
TOCOS_VERTEDOURO("Tocos Vertedouro", "Q ver.", 22454407, VAZAO),
TOCOS_OBSERVADOR("Tocos Observador", "P Obs.", -1, PRECIPITACAO_OBSERVADOR),
LIDICE_FLU("Lídice linímetro", "Q Lídice", 22494411, VAZAO_MODELO),
LIDICE_PLU("Lídice pluviômetro", "P Lídice", 22504411, PRECIPITACAO),
LIDICE_OBSERVADOR("Lídice Observador", "P Obs.", -1, PRECIPITACAO_OBSERVADOR),
VARZEA("Vázea", "Q Várzea", 22464405, VAZAO),
ROSARIO("Rosário", "Q Rosário", 22474403, VAZAO),
RIO_DO_BRACO("Rio do Braço", "P r. braço", 22474411, PRECIPITACAO),
TOCOS_DESC_FUNDO("Tocos Desc. de Fundo", "Q fundo", 22444407, VAZAO);
public final String nome;
public final String nomeDisplay;
public final int codigo;
public final TipoPostos tipo;
Postos(String nome, String nomeDisplay, int codigo, TipoPostos tipo) {
this.nome = nome;
this.nomeDisplay = nomeDisplay;
this.codigo = codigo;
this.tipo = tipo;
}
public String toString() {
return this.nome;
}
public static Postos getFromCodVazao(int cod) {
for (Postos posto: Postos.values())
if ((posto.tipo.equals(VAZAO) ||
posto.tipo.equals(VAZAO_MODELO)) && posto.codigo==cod)
return posto;
throw new AssertionError("Pedindo Codigo de Vazao de estacao inexistente");
}
public static Postos getFromCodChuva(int cod) {
for (Postos posto: Postos.values())
if (posto.tipo.equals(PRECIPITACAO) && posto.codigo==cod)
return posto;
throw new AssertionError("Pedindo Codigo de Vazao de estacao inexistente");
}
}