diff --git a/JAIG/JAIG.jar b/JAIG/JAIG.jar index 029437f..3827686 100644 Binary files a/JAIG/JAIG.jar and b/JAIG/JAIG.jar differ diff --git a/README.md b/README.md index d2e389b..d8f39a0 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,8 @@ JAIG is based on the OpenAI GPT models used for the code generation. [JAIG Main ideas](docs/JAIGideas.pdf) +[JAIG Integration with APIs](docs/JAIGIntegration.pdf) + ## JAIG main features - Generate a code in IntelliJ IDEA diff --git a/src/main/java/app/jtutor/jaig/InsertFolderProcessor.java b/src/main/java/app/jtutor/jaig/InsertFolderProcessor.java index 998443f..102947c 100644 --- a/src/main/java/app/jtutor/jaig/InsertFolderProcessor.java +++ b/src/main/java/app/jtutor/jaig/InsertFolderProcessor.java @@ -1,6 +1,9 @@ package app.jtutor.jaig; +import java.io.BufferedWriter; import java.io.File; +import java.io.FileWriter; +import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -38,6 +41,18 @@ public void insertFolder(String folder) { // Creating a new file in the new folder File newFile = new File(newFolderPath.toFile(), newName + ".txt"); if (newFile.createNewFile()) { + //Write a template content to the new file + String content = """ + /path(s)/to/your/inputFiles + + Please provide a request for your specific needs within your project. + + #directives (src, package, test, merge etc.) + """; + + BufferedWriter writer = new BufferedWriter(new FileWriter(newFile)); + writer.write(content); + System.out.println("New file created: " + newFile); } else { System.out.println("File already exists."); diff --git a/src/main/java/app/jtutor/jaig/JAIGUseCasesProcessor.java b/src/main/java/app/jtutor/jaig/JAIGUseCasesProcessor.java index 37ec47a..8917745 100644 --- a/src/main/java/app/jtutor/jaig/JAIGUseCasesProcessor.java +++ b/src/main/java/app/jtutor/jaig/JAIGUseCasesProcessor.java @@ -5,6 +5,7 @@ import java.io.BufferedWriter; import java.io.File; +import java.io.FileWriter; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -42,22 +43,60 @@ public void process(String inputFileOrFolder) { if (inputFileFile.isDirectory()) { // check that inputFileFile starts with 2 digits and _, like 01_ if (inputFileFile.getName().matches("\\d\\d_.*")) { - // insert new folder - InsertFolderProcessor.INSTANCE.insertFolder(inputFileOrFolder); - return; + // show menu + System.out.printf(""" + What do you want to do with the folder %s? + 1) Insert a new folder + 2) Create a prompt (.txt file) in the folder + 3) Create batch file with all prompts (.txt files) in the folder + 4) Cleanup the folder from all artifacts except prompts + + Enter nothing if you want to finish the program: + """, inputFileOrFolder); + + String answer = new Scanner(System.in).nextLine(); + + if (answer.equals("1")) { + // insert new folder + InsertFolderProcessor.INSTANCE.insertFolder(inputFileOrFolder); + return; + } else if (answer.equals("2")) { + createPromptFile(inputFileOrFolder); + return; + } else if (answer.equals("3")){ + if (processFolderCreateBatch(inputFileOrFolder)) return; + } else if (answer.equals("4")){ + FolderCleanup.cleanFolder(inputFileOrFolder); + return; + } + else if (answer.isEmpty()) { + System.out.println("Finishing the conversation..."); + return; + } } else { // show menu System.out.printf(""" - What do you want to do with the folder %s? - 1) Create batch file with all prompts (.txt files) in the folder - 2) Cleanup the folder from all artifacts except prompts - """, inputFileOrFolder); + What do you want to do with the folder %s? + 1) Create batch file with all prompts (.txt files) in the folder + 2) Create a prompt (.txt file) in the folder + 3) Cleanup the folder from all artifacts except prompts + + Enter nothing if you want to finish the program: + """, inputFileOrFolder); + String answer = new Scanner(System.in).nextLine(); + if (answer.equals("1")) { if (processFolderCreateBatch(inputFileOrFolder)) return; } else if (answer.equals("2")) { + createPromptFile(inputFileOrFolder); + return; + } else if (answer.equals("3")) { FolderCleanup.cleanFolder(inputFileOrFolder); return; + } else if (answer.isEmpty()) { + System.out.println("Finishing the conversation..."); + return; } } } @@ -321,6 +360,43 @@ static boolean processRollback(String rollbackFile, String srcFolder) { return false; } + private static void createPromptFile(String inputFileOrFolder) { + Path folderPath = Paths.get(inputFileOrFolder); + + // Reading the new file name from the console + Scanner scanner = new Scanner(System.in); + System.out.print("Enter the new prompt file name (part before .txt): "); + String newName = scanner.nextLine(); + scanner.close(); + + try { + // Creating a new file in the folder + File newFile = new File(folderPath.toFile(), newName + ".txt"); + if (newFile.createNewFile()) { + //Write template content to the new file + String content = """ + /path(s)/to/your/inputFiles + + Please provide a request for your specific needs within your project. + + #directives (src, package, test, merge etc.) + """; + + BufferedWriter writer = new BufferedWriter(new FileWriter(newFile)); + writer.write(content); + + System.out.println("New file created: " + newFile); + } else { + System.out.println("File already exists."); + } + + } catch (Exception e) { + System.out.println("An error occurred while creating the folder or file."); + e.printStackTrace(); + } + + } + private static void deleteFolder(String folder) { if (FileUtils.deleteQuietly(new File(folder))) { System.out.println("Deleted folder "+ folder +"."); diff --git a/src/main/java/app/jtutor/jaig/LifecyclePhasesProcessor.java b/src/main/java/app/jtutor/jaig/LifecyclePhasesProcessor.java index f7aa40c..08b6930 100644 --- a/src/main/java/app/jtutor/jaig/LifecyclePhasesProcessor.java +++ b/src/main/java/app/jtutor/jaig/LifecyclePhasesProcessor.java @@ -601,6 +601,8 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { final_targetFolder); try { if (!Files.exists(Path.of(srcFolderFilePath))) { + System.out.println("The path - "+srcFolderFilePath+" - "+"does not exist." + +" Creating the directory..."); Files.createDirectories(Path.of(srcFolderFilePath)); } Files.copy(file, Path.of(srcFolderFilePath), StandardCopyOption.REPLACE_EXISTING);