import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
public class DirectoryInitializer {
public static void initializeDirectories(String baseDir, Map<String, DirectoryConfig> overrides) throws IOException {
File baseDirectory = new File(baseDir);
if (!baseDirectory.exists()) {
baseDirectory.mkdirs();
}
for (Map.Entry<String, DirectoryConfig> entry : overrides.entrySet()) {
String directoryName = entry.getKey();
DirectoryConfig config = entry.getValue();
Path directoryPath = Paths.get(baseDirectory.getAbsolutePath(), directoryName);
if (!Files.exists(directoryPath)) {
Files.createDirectories(directoryPath); // Create directory and parent directories if needed
}
//Apply overrides
if(config != null) {
applyDirectoryConfig(directoryPath, config);
}
}
}
private static void applyDirectoryConfig(Path directoryPath, DirectoryConfig config) throws IOException {
if (config.files != null) {
for (File file : config.files) {
Path filePath = Paths.get(directoryPath.toString(), file.getName());
if (config.isFile) {
Files.write(filePath, config.fileContent.getBytes()); // Write content to file
} else {
Files.createFile(filePath); // Create empty file
}
}
}
}
public static class DirectoryConfig {
public File[] files;
public boolean isFile;
public String fileContent;
public DirectoryConfig() {}
public DirectoryConfig(File[] files, boolean isFile, String fileContent) {
this.files = files;
this.isFile = isFile;
this.fileContent = fileContent;
}
}
public static void main(String[] args) throws IOException {
String baseDirectory = "legacy_project";
//Example Usage:
Map<String, DirectoryConfig> overrides = new HashMap<>();
DirectoryConfig config1 = new DirectoryConfig(new File[] { new File("src/main/java/com/example/Main.java") }, true, "public class Main {\n public static void main(String[] args) {\n System.out.println(\"Hello, Legacy Project!\");\n }\n}");
overrides.put("src/main/java/com/example", config1);
DirectoryConfig config2 = new DirectoryConfig(new File[] { new File("resources/config.properties") }, false, "key1=value1\nkey2=value2");
overrides.put("resources", config2);
initializeDirectories(baseDirectory, overrides);
}
}
Add your comment