Uses View

The Uses View system representation shows the internal Java packages of the SWIM Water Model Distributor, among with the use of external Java libraries. For the rest of this document, both internal application packages and external libraries will be refered to as elements.

Primary Representation

Uses View Figure

Element Catalog

Internal Elements

resources
Defines application entry points and final response mechanisms for the webs service endpoints. This package uses the Jersey library which is included in the Dropwizard framework.

main
Contains the highest level of execution hierarchy. The classes contained in this package extract configuration options and register application services and system healthchecks.

db
Handles database connectivity and object document mapping between database and custom Morphia model classes. The current implementation interacts Mongo DB which is a NoSQL database manager.

model
Defines objects that directly map to a document on Mongo DB. This facilitates the process of creating, updating and querying documents on a Mongo collection.

api (target for rename)
Contains application handlers that specify the main workflow of execution.

health
Defines system health checks to monitor service and database availability during application runtime.

mapper
Parses incoming JSON inputs and populates morphia models for runtime data use and storage.

runner
Maps model parameters, executes, and processes model outputs generated from third party modeling software. The current implementation handles interaction with The General Algebraic Modeling System (GAMS).

External Elements

dropwizard
Dropwizard is a Java framework for developing ops-friendly, high performance, RESTful web services This framework leverages the creation of self-contained web services to facilitate application usability and deployment.

json-simple
JSON simple is Java library for JSON processing, used to read and write JSON data with full compliance with JSON specification (RFC4627).

morphia
Morphia is a Java library for direct document mapping with MongoDB.

mongo-java-driver
The MongoDB Driver provides both synchronous and asynchronous interaction with MongoDB.

gams-api
The GAMS Java API provides a Java programming interface to the General Algebraic Model System (GAMS).

References

Drowizard: http://www.dropwizard.io/
JSON simple: https://code.google.com/archive/p/json-simple/
Morphia: https://mongodb.github.io/morphia/
Mongo Driver: https://docs.mongodb.com/ecosystem/drivers/java/
GAMS API: https://www.gams.com/help/index.jsp?topic=%2Fgams.doc%2Fapis%2Fjava%2Findex.html