Reputation: 1
I need to get the enum itself first by using RegoDocumentType.getByValue(createOrderRequest.getIdDocument().getIdType())
Then check for null value, if it is not null, it will return the enum value. Else, it will return the createOrderRequest.getIdDocument().getIdType()
as default.
So how do I refactor the code to only use one if statement to cater for both NRIC/11B and FIN smag value to rego value using RegoDocumentType enum?
Here's my enum:
public enum RegoDocumentType {
NRIC_11B("NRIC/11B", IdentityType.NRIC.toValue()),
FIN("Employment Pass", IdentityType.EM_PASS.toValue()),
;
private static final Map<String, RegoDocumentType> BY_SMAG_VALUE = new HashMap<>();
static {
for (RegoDocumentType identityType : values()) {
BY_SMAG_VALUE.put(identityType.getSmagValue().toLowerCase(), identityType);
}
}
private final String smagValue;
private final String regoValue;
RegoDocumentType(String smagValue, String regoValue) {
this.smagValue = smagValue;
this.regoValue = regoValue;
}
public String getSmagValue() {
return smagValue;
}
public String getRegoValue() {
return regoValue;
}
public static RegoDocumentType getBySmagValue(String smagValue)
{ return BY_SMAG_VALUE.get(smagValue.toLowerCase()); }
}
Upvotes: -1
Views: 583
Reputation: 232
createOrderRequest.getIdDocument().getIdType()
seems to be a String in you case. You cannot return a string from getBySmagValue
. Consider returning null or throwing an exception instead:
public static RegoDocumentType getBySmagValue(String smagValue) {
if (smagValue == null) reutrn null;
return BY_SMAG_VALUE.get(smagValue.toLowerCase());
}
or
public static RegoDocumentType getBySmagValue(String smagValue) {
if (smagValue == null) throw new IllegalStateException();
return BY_SMAG_VALUE.get(smagValue.toLowerCase());
}
Upvotes: 0
Reputation: 1
String something = "";
if(something == null || something.isEmpty()) {
// return A
} else {
// return B
}
or
String something = "";
return something == null || something.isEmpty() ? [value A] : [value B];
Upvotes: 0