Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ravi-aratchige/multithreadfileprocessor
Multi-thread text file processor implemented in Java
https://github.com/ravi-aratchige/multithreadfileprocessor
java jdk swing swing-gui text-files threads
Last synced: 10 days ago
JSON representation
Multi-thread text file processor implemented in Java
- Host: GitHub
- URL: https://github.com/ravi-aratchige/multithreadfileprocessor
- Owner: ravi-aratchige
- Created: 2024-02-28T17:19:09.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-02-28T17:48:44.000Z (11 months ago)
- Last Synced: 2024-11-22T06:28:36.701Z (2 months ago)
- Topics: java, jdk, swing, swing-gui, text-files, threads
- Language: Java
- Homepage:
- Size: 168 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Multi-Thread File Processor
This is a Java implementation of a multi-threaded application that can process text (`.txt` or `.TXT`) files in a directory.
This is my submission for the Assignment titled Implement a Multi-threaded File Processor of the Software Modeling (SE3022) module.
## Setup
You must have the JDK (Java Development Kit) installed on your system. It is recommended to have JDK 21, the latest version as of the writing of this README.
NOTE: if you are a Linux user, make sure that you install Oracle's JDK (not the OpenJDK).
You must also have Maven installed on your system.
You can check your installation using the following commands.
```shell
# check Java version
java -version# check Maven version
mvn -version
```This project uses JetBrain IntelliJ IDEA 2023.2 (or a newer version) as the IDE.
To setup this project locally on your machine, follow these steps:
### 1. Clone Project
Clone this project to a desired location on your system:
```shell
git clone https://github.com/ravi-aratchige/MultiThreadFileProcessor.git
```### 2. Open Project in IDE
Open JetBrain IntelliJ IDEA and select `Open` from the menu:
Next, navigate to the project folder and open it.
### 3. Run Project
To run the application, select `Run` from the toolbar:
The text-based console menu will open up in the integrated terminal of your IDE:
### 4. Launch GUI
The GUI can be launched from the text-based console menu, or by separately running `FileProcessorGui.java`:
---
## Design Choices
The design of this project focused on simplicity, modularity, and user interaction. The use of a command-line interface (CLI) for the main menu allows users to interact with the application easily, providing clear options to choose from. The GUI was designed to be straightforward, with a clear purpose and a single button for user interaction.
Modularity was achieved by separating the GUI and file processing logic into separate classes, allowing for easier maintenance and future enhancements. Error handling was also considered, with the application providing informative messages to the user in case of invalid input or issues with file processing.
## Challenges Faced
1. Constructing a complete GUI in a limited timeframe, with minimal time to sketch the interface designs etc.
2. Ensuring that the threads are created, executed and finished appropriately and properly.
3. Streamlining communication between GUI logic and file processor logic using callback mechanisms and shared data.## Improvements and Additional Features
As mentioned in the assignment specification, I would like to implement the ability to select which criteria must be processed (as checkboxes on the GUI), which I was unable to implement in the limited timeframe.
Additionally, the ability to display results in the GUI (instead of the CLI as done currently) is also a feature I would like to implement in the future.
---
Made with :heart: by Ravindu Aratchige