ActivityNexus is an advanced, standalone Java console application designed to manage complex category hierarchies, geographic areas, and structured exchange proposals. Developed as a comprehensive Software Engineering academic project, it solves the problem of modeling, comparing, and coordinating complex configurations between users with different roles.
A significant portion of the development (Phase B) was dedicated to code refactoring and software quality, focusing heavily on decoupling components via Dependency Injection and implementing rigorous black-box functional testing.
This project was built strictly adhering to object-oriented design principles and modern software engineering practices:
- Strict MVC Architecture: Clear separation of concerns between domain logic (Model), user interaction (View), and application flow (Controller).
- Design Patterns (GoF & GRASP): * Factory Method & Singleton: For robust multi-role user creation and management.
- State Pattern: To handle the lifecycle of proposals (Pending, Approved, Rejected).
- Observer Pattern: Implemented for internal state notifications.
- Controller as a Facade: Centralizing system operations.
- Test-Driven Refactoring: The codebase utilizes Dependency Injection to ensure high testability. Testing includes functional black-box test cases focusing on equivalence classes and boundary values via JUnit 5.
- Advanced Data Modeling: Implements N-ary trees (via the Scalified Tree library) to model category hierarchies and calculate intra/inter-hierarchy conversion factors dynamically.
- Standalone Persistence: Entire application state is maintained via Java Serialization (
.serfiles), requiring no external RDBMS setup to run.
- Multi-Role User Management: Distinct capabilities for
Configurators(Admins) andFruitori(Standard Users). - Hierarchy & Territory Modeling: Create geographic areas and define deep category hierarchies with specific characteristic fields and value domains.
- Conversion Engine: Automated calculations for intra-hierarchy and inter-hierarchy conversion factors.
- Proposal Lifecycle: Users can create exchange proposals that go through a formal approval workflow.
- Closed Exchange Sets: Advanced validation logic to manage and balance closed sets of exchanges between users.
- Interactive CLI: Fully functional, menu-driven console interface.
- Language: Java (11+)
- Architecture: MVC (Model-View-Controller)
- Testing: JUnit 5
- Build System: Gradle (for tree library) & Custom Bash/Batch Scripts
- External Libraries: Scalified Tree (v0.2.5) for N-ary tree data structures.
The application is designed to be easily executable as a standalone JAR.
- Java JRE/JDK 11 or higher.
- Download the latest
ActivityNexusV4.jarfrom the repository. - Run the application from your terminal:
(Note: On the first run, the application will automatically create a data/ directory to handle persistence and ask you to register the first Configurator user).
java -jar ActivityNexusV4.jar
To compile the project and generate the executable JAR yourself:
-
Clone the repository:
git clone https://github.com/SickCiQuattro/ActivityNexus.git
-
Build the Scalified Tree dependency via Gradle:
cd tree ./gradlew build -x test cd ..
-
Compile the main Java project and create the JAR (Linux/macOS):
cd Versione1 # Use the provided build script ./build.sh
The project includes a comprehensive suite of black-box tests. To run the JUnit 5 test suite, compile the test classes against the JUnit platform and execute them via your preferred IDE or command line.