1. import java.io.File;
  2. import java.io.IOException;
  3. import java.nio.file.Files;
  4. import java.nio.file.Path;
  5. import java.nio.file.Paths;
  6. import java.util.HashMap;
  7. import java.util.Map;
  8. public class DirectoryInitializer {
  9. public static void initializeDirectories(String baseDir, Map<String, DirectoryConfig> overrides) throws IOException {
  10. File baseDirectory = new File(baseDir);
  11. if (!baseDirectory.exists()) {
  12. baseDirectory.mkdirs();
  13. }
  14. for (Map.Entry<String, DirectoryConfig> entry : overrides.entrySet()) {
  15. String directoryName = entry.getKey();
  16. DirectoryConfig config = entry.getValue();
  17. Path directoryPath = Paths.get(baseDirectory.getAbsolutePath(), directoryName);
  18. if (!Files.exists(directoryPath)) {
  19. Files.createDirectories(directoryPath); // Create directory and parent directories if needed
  20. }
  21. //Apply overrides
  22. if(config != null) {
  23. applyDirectoryConfig(directoryPath, config);
  24. }
  25. }
  26. }
  27. private static void applyDirectoryConfig(Path directoryPath, DirectoryConfig config) throws IOException {
  28. if (config.files != null) {
  29. for (File file : config.files) {
  30. Path filePath = Paths.get(directoryPath.toString(), file.getName());
  31. if (config.isFile) {
  32. Files.write(filePath, config.fileContent.getBytes()); // Write content to file
  33. } else {
  34. Files.createFile(filePath); // Create empty file
  35. }
  36. }
  37. }
  38. }
  39. public static class DirectoryConfig {
  40. public File[] files;
  41. public boolean isFile;
  42. public String fileContent;
  43. public DirectoryConfig() {}
  44. public DirectoryConfig(File[] files, boolean isFile, String fileContent) {
  45. this.files = files;
  46. this.isFile = isFile;
  47. this.fileContent = fileContent;
  48. }
  49. }
  50. public static void main(String[] args) throws IOException {
  51. String baseDirectory = "legacy_project";
  52. //Example Usage:
  53. Map<String, DirectoryConfig> overrides = new HashMap<>();
  54. 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}");
  55. overrides.put("src/main/java/com/example", config1);
  56. DirectoryConfig config2 = new DirectoryConfig(new File[] { new File("resources/config.properties") }, false, "key1=value1\nkey2=value2");
  57. overrides.put("resources", config2);
  58. initializeDirectories(baseDirectory, overrides);
  59. }
  60. }

Add your comment