...
Besides component folders, every module has a domain package. Domain holds the code that communicates with backend service and provides data. It has one or more service files. Services files hold the functions that manipulate data objects (select, create, insert, update, delete). Besides service files, there are class files where classes for manipulating data objects are defined (with getters and setters).
...
gateway.http - Entry point to the project. Contains the definition of all controllers.
repository - Holds simple get repositories for every database table (Note: this package should be removed and will move to score-repo-api/score-repo modules.)
data - Consists of data transfer objects (DTOs) used for holding query results in a serializable friendly manner (Note: this package should be removed and will move to score-repo-api/score-repo modules.)
repo - Data Access Layer that holds objects and repositories that makes communication with the database easier (Note: this package should be removed and will move to score-repo-api/score-repo modules.)
cache - Package that holds caching logic.
redis - Package that holds Redis configuration.
common - Package that holds constant properties, enums, and utility functions.
export - Package that holds business logic for retrieving and unification of Score data for export.
populate.helper - Help functions for populating Score data from XSD files (currently This was used when OAGIS 10.6 was first imported into Score database. Currently, it is not used in the project).
...
The request processing workflow follows the workflow in the Spring Web MVC framework. Generally, ‘controller’ package contains all request handlers based on the @Controller annotation. The controller delivers the request to business logic handlers described in the ‘service’ package with the @Service annotation-based classes, and transfers business data to the database through queries defined in the ‘repository’ package.
Moving forward, the gateway.http package defines entry points to the project in forms of APIs (application programming interfaces). APIs are defined into module-based packages. Each module-based package contains:
...
This module contains interfaces and POJO classes that defines repository API. The content of this module is self-explanatory. In the future, we will move some components in ‘repo’ and ‘repository’ packages in the score-http module into this module.
...
This module contains CRUD repositories for each project module implemented using jOOQ database-mapping library. The content of this module is self-explanatory. In the future, we will move some components in ‘repo’ and ‘repository’ packages in the score-http module into this module.
...
This module contains business logic used for the defined Score processes. The content of this module is self-explanatory. In the future, we will move all components in ‘service’ packages in the score-http module into this module.