Skip to content

Latest commit

 

History

History
186 lines (122 loc) · 12.5 KB

Component-descriptions.md

File metadata and controls

186 lines (122 loc) · 12.5 KB

Reference: Component Descriptions

This page describes the software components of the Croiseur project.

Decomposition

Here are the software components of Croiseur:

Name Description
croiseur Application core library
croiseur-cli Command-line frontend to croiseur
croiseur-clue-openai-plugin A clue provider backed by OpenAI Web API
croiseur-common Common types used as building blocks by all other modules
croiseur-dictionary-common Collection of utility classes useful for implementing dictionary providers
croiseur-dictionary-hunspell-codec Library which allows to read Hunspell dictionaries and generate all word forms from them
croiseur-dictionary-hunspell-plugin Dictionary provider of local word lists written as Hunspell dictionaries
croiseur-dictionary-txt-plugin Dictionary provider of local word lists written as text files
croiseur-dictionary-xml-codec Library which allows to read and write dictionaries in a custom XML format
croiseur-dictionary-xml-plugin Dictionary provider of local word lists written in XML
croiseur-gui Desktop application, frontend to croiseur
croiseur-gui-controller Controller submodule of croiseur-gui (calls croiseur service upon croiseur-gui-view events)
croiseur-gui-presenter Presenter submodule of croiseur-gui (presents croiseur outputs by updating croiseur-gui-view-model)
croiseur-gui-view View submodule of croiseur-gui (widgets of croiseur-gui)
croiseur-gui-view-model View-model submodule of croiseur-gui (a model representing the state of the views, observed and displayed by croiseur-gui-view)
croiseur-puzzle-codec-xd Library which allows to read/write puzzles in the xd format
croiseur-puzzle-codec-xd-plugin Puzzle codec provider adapting croiseur-puzzle-codec-xd
croiseur-puzzle-repository-filesystem-plugin Puzzle repository implementation which stores puzzles as files on disk
croiseur-puzzle-repository-memory-plugin Puzzle repository implementation whose storage is purely in memory - only used for tests
croiseur-solver-ginsberg Crossword solver library based on Matt Ginsberg's papers
croiseur-solver-ginsberg-plugin Solver provider adapting croiseur-solver-ginsberg
croiseur-solver-paulgb Crossword solver library based on paulgb's Crossword Composer
croiseur-solver-paulgb-plugin Solver provider adapting croiseur-solver-paulgb
croiseur-solver-sat Crossword solver library based on a generic SAT solver
croiseur-solver-sat-plugin Solver provider adapting croiseur-solver-sat
croiseur-solver-szunami Crossword solver library based on szunami's xwords-rs
croiseur-solver-szunami-plugin Solver provider adapting croiseur-solver-szunami
croiseur-spi-clue Interface definition for clue providers
croiseur-spi-dictionary Interface definition for dictionary providers
croiseur-spi-presenter Interface definition for presenters
croiseur-spi-puzzle-codec Interface definition for puzzle codecs
croiseur-spi-puzzle-repository Interface definition for puzzle repositories
croiseur-spi-solver Interface definition for solvers

In addition to these components, the following external components are used:

Name Description
java The Java platform
javafx Framework for creating graphical user interface
info.picocli Framework for creating command-line user interface
com.azure.ai.openai OpenAI Web API Client
org.ow2.sat4j.{core,pb} Boolean reasoning library

Dependencies

The following conventions apply to all diagrams:

  • Components are referenced via their simplified Java module names, which is their component names with the - separator replaced by .. The module's re.belv. prefix is omitted for brevity.
  • Dependencies to java.logging are omitted (pervasive across the project).
  • Direct dependencies are omitted when already provided by transitivity (i.e. if A -> B, A -> C and B -> C, then only A -> B and B -> C are represented).
  • Nodes representing modules which are external to the project are filled with gray.

Overview

This diagram represents the main module dependencies, with the following omissions:

Overview

Clue SPI Implementations

Clue SPI Implementation

Dictionary SPI Implementations

Dictionary SPI Implementations

Puzzle Codec SPI Implementations

Puzzle Codec SPI Implementations

Puzzle Repository SPI Implementations

Puzzle Repository SPI Implementations

Solver SPI Implementations

Solver SPI Implementations

GUI Detailed Dependencies

Note: Some dependencies of javafx.* are omitted for clarity.

GUI Detailed Dependencies

Interfaces

Refer to the generated Javadoc.