Il mio metodo preferito è quello di creare un parametro con le sostituzioni del forma di una HashMap, quando hai un grande gruppo di sottostazioni o se possono cambiare.
È possibile passare le sostituzioni in fase di esecuzione o impostare un valore predefinito. Il vantaggio è che è possibile aggiornare la mappa senza ricompilare il report.
Per esempio, se si dovesse avere un parametro denominato "risk_types" (usando la lingua di default, come Groovy) quando si imposta il valore del parametro predefinito a qualcosa come
[1: "HIGH RISK", 2: "LOW RISK"]
Nel codice, si sarebbe avere la vostra espressione di campo di testo come (dove risk_type è il campo di ricerca dal database):
$P{risk_types}.get($F{risk_type})
per gli elementi mancanti nella mappa, si otterrebbe un valore nullo, estendo l'espressione campo di testo per essere:
$P{risk_types}.get($F{risk_type}) ?: "UNDEFINED"
Ho fatto anche questo poche volte, ed è ok per un massimo di tre condizioni ... ma chi decodificherà se scrivete 5 o più condizioni? – davorp
grazie, anche io l'ho fatto .. ma come ha detto @davorp .. 3 è max. – cherit
Questa risposta produce sicuramente un odore di codice. @Sean ha ragione: fai qualsiasi logica nel tuo bean, passando il risultato al report. – inanutshellus