I need to dynamically choose an Enum with some properties based on a parameter that will provide the suffix of the Enum name to use. I tried this but the "getCodigoAsString()" method doesn't work.
An Enum sample:
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor @Getter
public enum Chaves_35 {
    MODELO_DISPOSITIVO(1234,"TEXT","IN","Modelo Dispositivo"),
    DISPOSITIVO_SUPORTA_MULTI_TAREFA(4423,"TEXT","IN","Dispositivo Suporta Multi Tarefa"),
    NOME_DISPOSITIVO(7845,"TEXT","IN","Nome Dispositivo"),
    IDIOMA_DISPOSITIVO(3288,"TEXT","IN","Idioma Dispositivo"),
    ;
    private int codigo;
    private String tipo;
    private String fluxo;
    private String descricao;
  
    public String getCodigoAsString() {
        return String.valueOf(codigo);
    }
    
}
The Class that make the choice:
 public class ChavesCanal { 
    public static Enum<?>[] BuscaChavesCanal(int idCanal) {
        Enum<?>[] resp = null;
        switch (idCanal) {
            case 6:
                resp = Chaves_6.values();
                break;
            case 8:
                resp = Chaves_8.values();
                break;
            case 10:
                resp = Chaves_10.values();
                break;
            case 17:
                resp = Chaves_17.values();
                break;
            case 21:
                resp = Chaves_21.values();
                break;
            case 22:
                resp = Chaves_22.values();
                break;
            case 27:
                resp = Chaves_27.values();
                break;
            case 28:
                resp = Chaves_28.values();
                break;
            case 35:
                resp = Chaves_35.values();
                break;
            case 37:
                resp = Chaves_37.values();
                break;
            default:
                break;
        }
        return resp;
    }
}
This is the method that I'm trying to use the "ChavesCanal()" Class:
public static boolean VerificaChavesCanais_JSON(int codigoCanal) {
        if(codigoCanal <= 0) return false;
        
        try {           
            for (Enum<?> chaveId : ChavesCanal.BuscaChavesCanal(codigoCanal)) {
                if(!payloadJSON.has(chaveId.getCodigoAsString())) {
                    System.out.println("  .... chave '" + chaveId.getCodigoAsString() + "' não encontrada!!!");
                }
            }
            return true;
        } catch (Exception e) {
            System.out.println("ERRO em VerificaChavesCanais_JSON(): " + e.getMessage());
            return false;
        }
    }
Thanks folks!!!
Aucun commentaire:
Enregistrer un commentaire