import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
public class ConfigurationValidator {
private static final AtomicBoolean validationSuccess = new AtomicBoolean(true);
public static boolean validateConfiguration(Map<String, String> configuration) {
if (configuration == null) {
System.err.println("Error: Configuration is null.");
validationSuccess.set(false);
return false;
}
Set<String> seenValues = new HashSet<>();
List<String> duplicateKeys = new ArrayList<>();
for (Map.Entry<String, String> entry : configuration.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
if (value != null) { //Handle null values
if (!seenValues.add(value)) {
duplicateKeys.add(key);
}
}
}
if (!duplicateKeys.isEmpty()) {
System.err.println("Error: Duplicate configuration values found for keys: " + duplicateKeys);
validationSuccess.set(false);
return false;
}
System.out.println("Configuration validated successfully.");
return true;
}
public static boolean isValidationSuccessful() {
return validationSuccess.get();
}
public static void main(String[] args) {
// Example Usage
Map<String, String> config1 = new HashMap<>();
config1.put("setting1", "value1");
config1.put("setting2", "value2");
config1.put("setting3", "value1"); // Duplicate
config1.put("setting4", null); //Test null value
Map<String, String> config2 = new HashMap<>();
config2.put("setting1", "value1");
config2.put("setting2", "value2");
config2.put("setting3", "value3");
System.out.println("Validating config1...");
validateConfiguration(config1);
System.out.println("Validation successful: " + isValidationSuccessful());
System.out.println("Validating config2...");
validateConfiguration(config2);
System.out.println("Validation successful: " + isValidationSuccessful());
System.out.println("Validating null config...");
validateConfiguration(null);
System.out.println("Validation successful: " + isValidationSuccessful());
}
}
Add your comment