-
Notifications
You must be signed in to change notification settings - Fork 0
feat: Add Console Input/Output Mode #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Greptile Overview
Greptile Summary
This PR adds a console input/output mode to the Atbash cipher demo application, transforming it from a file-based command-line utility into an interactive menu-driven application. The changes introduce string-based encryption and decryption methods (encryptString and decryptString) in both the Encryption and Decryption classes, allowing users to process text directly without file I/O operations. The Main class has been completely refactored from handling hardcoded file paths to providing a persistent menu system where users can choose between file operations, testing, or direct string processing.
The console mode feature enables users to type text directly and immediately see both the encrypted and decrypted results, making the cipher utility more accessible for quick testing and demonstration purposes. This change modernizes the application by supporting both traditional file-based workflows and new interactive console-based operations, removing the dependency on specific file system configurations that existed in the original implementation.
Important Files Changed
Changed Files
| Filename | Score | Overview |
|---|---|---|
| AtbashCipher/cipher2/cipher2/demo/src/main/java/com/example/Encryption.java | 2/5 | Removed file-based encryption method and added string-based encryption, creating breaking changes |
| AtbashCipher/cipher2/cipher2/demo/src/main/java/com/example/Decryption.java | 2/5 | Removed file-based decryption method and replaced with string-based decryption functionality |
| AtbashCipher/cipher2/cipher2/demo/src/main/java/com/example/Main.java | 2/5 | Refactored from single-use CLI to menu-driven application with console mode, but has resource leaks |
Confidence score: 2/5
- This PR introduces breaking changes by removing existing functionality and has multiple technical issues that could cause problems
- Score reflects removal of file-based methods without replacement, resource leaks with unclosed Scanner objects, misleading comments about non-existent methods, and potential runtime exceptions from missing method dependencies
- Pay close attention to all three files - Main.java needs Scanner resource management fixes, while Encryption.java and Decryption.java need their file-based methods restored or proper documentation updates
Sequence Diagram
sequenceDiagram
participant User
participant Main
participant Scanner
participant Encryption
participant Decryption
participant Mapping
User->>Main: "Run application"
Main->>Main: "runMenu()"
Main->>User: "Display menu options"
User->>Scanner: "Enter '4' (Console Mode)"
Scanner->>Main: "choice = '4'"
Main->>Main: "handleConsoleMode(scanner)"
Main->>User: "Enter string to process:"
User->>Scanner: "Input message string"
Scanner->>Main: "input string"
Main->>Main: "Validate input (not null/empty)"
Main->>Encryption: "encryptString(input)"
Encryption->>Mapping: "applyAtbashCipher(message)"
Mapping->>Encryption: "encrypted string"
Encryption->>Main: "encrypted string"
Main->>Decryption: "decryptString(encrypted)"
Decryption->>Mapping: "applyAtbashCipher(message)"
Mapping->>Decryption: "decrypted string"
Decryption->>Main: "decrypted string"
Main->>User: "Display Original, Encrypted, Decrypted"
3 files reviewed, 7 comments
| fileHandle.writeFile(encryptedData, FillB); | ||
| // it is calld Savefill from handler use for reuslt to fillb | ||
|
|
||
| // Assume existing file-based methods like encryptFile() are here |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
logic: Comment claims file-based methods should exist but they were completely removed from this class
Prompt To Fix With AI
This is a comment left during a code review.
Path: AtbashCipher/cipher2/cipher2/demo/src/main/java/com/example/Encryption.java
Line: 6:6
Comment:
**logic:** Comment claims file-based methods should exist but they were completely removed from this class
How can I resolve this? If you propose a fix, please make it concise.| @@ -1,20 +1,19 @@ | |||
| package com.example; | |||
|
|
|||
| import java.io.IOException; | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: IOException import is no longer needed since file operations were removed
Prompt To Fix With AI
This is a comment left during a code review.
Path: AtbashCipher/cipher2/cipher2/demo/src/main/java/com/example/Encryption.java
Line: 3:3
Comment:
**style:** IOException import is no longer needed since file operations were removed
How can I resolve this? If you propose a fix, please make it concise.| * @return The Atbash-encoded string. | ||
| */ | ||
| public static String encryptString(String message) { | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: Extra blank line should be removed for consistent formatting
Prompt To Fix With AI
This is a comment left during a code review.
Path: AtbashCipher/cipher2/cipher2/demo/src/main/java/com/example/Encryption.java
Line: 16:16
Comment:
**style:** Extra blank line should be removed for consistent formatting
How can I resolve this? If you propose a fix, please make it concise.| fileHandle.writeFile(decryptedData, FillB); | ||
| // Save the decrypted data to FillB | ||
|
|
||
| // Assume existing file-based methods like decryptFile() are here |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
logic: Comment claims file-based methods exist but they're missing from implementation. Either add the methods or remove misleading comment.
Prompt To Fix With AI
This is a comment left during a code review.
Path: AtbashCipher/cipher2/cipher2/demo/src/main/java/com/example/Decryption.java
Line: 7:7
Comment:
**logic:** Comment claims file-based methods exist but they're missing from implementation. Either add the methods or remove misleading comment.
How can I resolve this? If you propose a fix, please make it concise.| public static String decryptString(String message) { | ||
|
|
||
| return Mapping.applyAtbashCipher(message); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
logic: Removing the original DecryptonFill() method is a breaking change. Consider keeping both file-based and string-based methods for backward compatibility.
Prompt To Fix With AI
This is a comment left during a code review.
Path: AtbashCipher/cipher2/cipher2/demo/src/main/java/com/example/Decryption.java
Line: 16:19
Comment:
**logic:** Removing the original `DecryptonFill()` method is a breaking change. Consider keeping both file-based and string-based methods for backward compatibility.
How can I resolve this? If you propose a fix, please make it concise.| @@ -1,85 +1,76 @@ | |||
| package com.example; | |||
|
|
|||
| import java.util.Scanner; | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
syntax: Missing package declaration - should be package com.example;
Prompt To Fix With AI
This is a comment left during a code review.
Path: AtbashCipher/cipher2/cipher2/demo/src/main/java/com/example/Main.java
Line: 1:1
Comment:
**syntax:** Missing package declaration - should be `package com.example;`
How can I resolve this? If you propose a fix, please make it concise.| Scanner scanner = new Scanner(System.in); | ||
| String choice = scanner.nextLine().trim(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
logic: Scanner resource leak - creating new Scanner in each loop iteration without closing. Move Scanner creation outside the loop.
Prompt To Fix With AI
This is a comment left during a code review.
Path: AtbashCipher/cipher2/cipher2/demo/src/main/java/com/example/Main.java
Line: 23:24
Comment:
**logic:** Scanner resource leak - creating new Scanner in each loop iteration without closing. Move Scanner creation outside the loop.
How can I resolve this? If you propose a fix, please make it concise.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Greptile Overview
Greptile Summary
This pull request implements a console-based input/output mode for the Atbash cipher application, transforming it from a purely file-based utility to one that supports direct string processing. The main changes involve refactoring the Encryption.java and Decryption.java classes to add string-based methods (encryptString() and decryptString()), and updating Main.java to include a new "Console Mode" option in the user interface.
The console mode allows users to encrypt or decrypt text directly without needing to work with files, making the utility more accessible for quick operations. The menu system was also modernized from a single-character input system to a numbered menu for better usability. This change aligns with modern CLI tool design patterns where users can choose between file-based batch operations and interactive console input based on their needs.
Changed Files
| Filename | Score | Overview |
|---|---|---|
| AtbashCipher/cipher2/cipher2/demo/src/main/java/com/example/Encryption.java | 3/5 | Added string-based encryption method while removing file-based functionality |
| AtbashCipher/cipher2/cipher2/demo/src/main/java/com/example/Decryption.java | 3/5 | Added string-based decryption method while removing file-based functionality |
| AtbashCipher/cipher2/cipher2/demo/src/main/java/com/example/Main.java | 2/5 | Added console mode with numbered menu system but has syntax and resource management issues |
Confidence score: 3/5
- This PR requires attention before merging due to breaking changes and incomplete implementation
- Score reflects the removal of existing file-based functionality without proper replacement, missing package declarations, resource leaks, and misleading comments that don't match the actual implementation
- Pay close attention to Main.java for syntax issues and all files for the incomplete transition from file-based to dual-mode functionality
Sequence Diagram
sequenceDiagram
participant User
participant Main
participant Scanner
participant Encryption
participant Decryption
participant Mapping
User->>Main: "Run application"
Main->>Scanner: "new Scanner(System.in)"
Main->>User: "Display menu with Console Mode option"
User->>Main: "Select option 4 (Console Mode)"
Main->>Main: "handleConsoleMode(scanner)"
Main->>User: "Enter string to process:"
User->>Scanner: "Input string"
Scanner->>Main: "Return input string"
Main->>Main: "Validate input (not null/empty)"
Main->>Encryption: "encryptString(input)"
Encryption->>Mapping: "applyAtbashCipher(message)"
Mapping-->>Encryption: "Return encrypted string"
Encryption-->>Main: "Return encrypted string"
Main->>Decryption: "decryptString(encrypted)"
Decryption->>Mapping: "applyAtbashCipher(message)"
Mapping-->>Decryption: "Return decrypted string"
Decryption-->>Main: "Return decrypted string"
Main->>User: "Display Original, Encrypted, Decrypted strings"
3 files reviewed, no comments
No description provided.