import java.util.HashMap;
import java.util.Map;
public class DiagnosticParams {
public static Map<String, String> getDiagnosticParams(Map<String, String> rawParams) {
Map<String, String> diagnosticParams = new HashMap<>();
// Default values with fallback logic
diagnosticParams.put("level", rawParams.getOrDefault("level", "info")); // Default to "info"
diagnosticParams.put("timestampFormat", rawParams.getOrDefault("timestampFormat", "yyyy-MM-dd HH:mm:ss")); // Default timestamp format
diagnosticParams.put("logFile", rawParams.getOrDefault("logFile", "default.log")); //default log file
//Optional parameter
if(rawParams.containsKey("includeStacktrace")){
diagnosticParams.put("includeStacktrace", rawParams.get("includeStacktrace") .toLowerCase()); //case insensitive
}
//Handle potentially missing or invalid parameters gracefully
String severity = rawParams.getOrDefault("severity", "debug");
if ("error".equalsIgnoreCase(severity)) {
//Perform error handling if the severity is error
System.err.println("Error detected. Review logs immediately.");
}
//Example of handling numeric parameters with default
try {
int maxAttempts = Integer.parseInt(rawParams.getOrDefault("maxAttempts", "5"));
if (maxAttempts <= 0) {
System.err.println("Invalid maxAttempts value. Using default of 5.");
maxAttempts = 5;
}
diagnosticParams.put("maxAttempts", String.valueOf(maxAttempts));
} catch (NumberFormatException e) {
System.err.println("Invalid maxAttempts format. Using default of 5.");
diagnosticParams.put("maxAttempts", "5");
}
return diagnosticParams;
}
public static void main(String[] args) {
//Example Usage
Map<String, String> params1 = new HashMap<>();
params1.put("level", "warning");
params1.put("timestampFormat","MM/dd/yyyy");
Map<String, String> params2 = new HashMap<>();
params2.put("logFile", "custom.log");
params2.put("includeStacktrace", "true");
Map<String, String> params3 = new HashMap<>(); //Minimal params
Map<String,String> params4 = new HashMap<>(); //Invalid number format
System.out.println("Params 1: " + getDiagnosticParams(params1));
System.out.println("Params 2: " + getDiagnosticParams(params2));
System.out.println("Params 3: " + getDiagnosticParams(params3));
System.out.println("Params 4: " + getDiagnosticParams(params4));
}
}
Add your comment