import java.io.File;
import java.util.HashMap;
import java.util.Map;
public class ResourceLoader {
private final Map<String, String> resources = new HashMap<>();
/**
* Loads resources from directories based on optional flags.
*
* @param baseDir The base directory to start searching from.
* @param flags Optional flags to enable/disable specific resource directories.
*/
public void loadResources(String baseDir, String flags) {
File dir = new File(baseDir);
if (!dir.exists() || !dir.isDirectory()) {
System.err.println("Error: Base directory does not exist or is not a directory: " + baseDir);
return; //Or throw exception if appropriate
}
File[] files = dir.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
String dirName = file.getName();
boolean include = true;
// Check if the flag disables the directory
if (flags != null && flags.contains("-" + dirName)) {
include = false;
}
if (include) {
loadResourcesFromDirectory(file);
}
}
}
}
}
private void loadResourcesFromDirectory(File directory) {
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile() && file.getName().endsWith(".properties")) { //Or other resource types
String resourceName = file.getName().substring(0, file.getName().lastIndexOf(".")); //Remove extension
try {
loadProperties(file, resourceName);
} catch (Exception e) {
System.err.println("Error loading resource: " + resourceName + " - " + e.getMessage());
}
}
}
}
}
private void loadProperties(File file, String resourceName) {
//Load properties from the file
try {
Map<String, String> properties = loadPropertiesFile(file);
resources.put(resourceName, properties.toString());
} catch (Exception e) {
System.err.println("Error loading properties file: " + file.getName() + " - " + e.getMessage());
}
}
private Map<String, String> loadPropertiesFile(File file) throws Exception {
//Placeholder for loading the properties file.
//Replace this with your actual properties loading logic.
//For example using org.apache.commons.lang3.SystemUtils
//This is just a dummy implementation
Map<String, String> properties = new HashMap<>();
properties.put("key1", "value1");
properties.put("key2", "value2");
return properties;
}
/**
* Returns the loaded resources.
*
* @return A map of resource names to their content.
*/
public Map<String, String> getResources() {
return resources;
}
public static void main(String[] args) {
ResourceLoader loader = new ResourceLoader();
// Example usage:
// Assuming you have directories 'default', 'optional1', 'optional2'
// and properties files in each directory.
// You can specify flags like "-optional1 -optional2" to enable specific directories.
loader.loadResources("resources", "-optional1"); //Load resources from "resources" directory, excluding "optional1"
Map<String, String> loadedResources = loader.getResources();
System.out.println(loadedResources);
}
}
Add your comment