如何将自定义/默认值设置为来自数据库的值? 我需要为数据库中的值匹配/设置以下颜色代码值。
**Values from DB** **Default value**
At Risk - Red
On Track - Green
Needs Attention - Yellow
请让我知道如何调整下面的代码以获得预期的o / p。
String colorStatus = userObj.setStatus();
userCodeValue.setStatus(colorStatus);
/*String yellowColor = "yellow";
if(colorStatus.equalsIgnoreCase("Need Attention")){
vlcValue.setStatus(yellowColor);
}*/
答案 0 :(得分:1)
您可以使用枚举使映射静态化。第一个元素是获取默认颜色的接口:
public interface ColorMapper {
Color defaultValue();
}
颜色枚举:
public enum Color {
RED, GREEN, YELLOW
}
以及原始值和默认值之间的静态映射:
public enum Status implements ColorMapper {
AT_RISK("At Risk") {
@Override
public Color defaultValue() {
return Color.RED;
}
},
ON_TRACK("On Track") {
@Override
public Color defaultValue() {
return Color.GREEN;
}
},
NEEDS_ATTENTION("Needs Attention") {
@Override
public Color defaultValue() {
return Color.YELLOW;
}
};
private String code;
Status(String code) {
this.code = code;
}
public String getCode() {
return code;
}
}
此映射是静态的,随时都非常清晰。
另一种选择是创建一个Map<String,String>
,在其中保留数据库值和默认值之间的映射:
@Service
public class MyService{
private static final Map<String,String> defaultMappingValues;
public MyService(){
defaultMappingValues.put("At Risk", "RED");
defaultMappingValues.put("On Track", "Green");
defaultMappingValues.put("Needs Attention","Yellow");
}
}
,当您需要At Risk
的默认值时,您将致电
defaultMappingValues.get("At Risk");
答案 1 :(得分:0)
// color code functionality to be included
String colorStatus = vlcObj.getColorStatus();
vlcValue.setColortStatus(colorStatus);
String yellowColor = "yellow";
String greenColor = "green";
String redColor = "red";
if(colorStatus.equalsIgnoreCase("NeedsAttention")){
vlcValue.setColortStatus(yellowColor);
}
if(colorStatus.equalsIgnoreCase("AtRisk")){
vlcValue.setColortStatus(redColor);
}
if(colorStatus.equalsIgnoreCase("None")){
vlcValue.setColortStatus(greenColor);
}if(colorStatus.equalsIgnoreCase("OnTrack")){
vlcValue.setColortStatus(greenColor);
}