Skip to content

SickCiQuattro/ActivityNexus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

197 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ActivityNexus

Java Gradle Testing Architecture Console

About the Project

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.

Architecture & Engineering Highlights

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 (.ser files), requiring no external RDBMS setup to run.

Key Features

  • Multi-Role User Management: Distinct capabilities for Configurators (Admins) and Fruitori (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.

Tech Stack

  • 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.

Getting Started

The application is designed to be easily executable as a standalone JAR.

Prerequisites

  • Java JRE/JDK 11 or higher.

Quick Run (Using Pre-built JAR)

  1. Download the latest ActivityNexusV4.jar from the repository.
  2. Run the application from your terminal:
    java -jar ActivityNexusV4.jar
    (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).

Building from Source

To compile the project and generate the executable JAR yourself:

  1. Clone the repository:

    git clone https://github.com/SickCiQuattro/ActivityNexus.git
  2. Build the Scalified Tree dependency via Gradle:

    cd tree
    ./gradlew build -x test
    cd ..
  3. Compile the main Java project and create the JAR (Linux/macOS):

    cd Versione1
    # Use the provided build script
    ./build.sh

Testing

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.

About

A standalone Java 11 application for configuring complex category hierarchies and managing multi-role user exchange networks.

Topics

Resources

Stars

Watchers

Forks

Contributors