A web application for tracking forest inventory. Using this to teach myself the Apache Causeway framework. It follows the Naked Objects philosophy, which involves exposing your classes, objects, or entities, directly to the user interface.
To use the app, you must have:
- JDK 21 or newer installed,
- Maven 3.6.0 or newer.
We suggest installing both, using SDKMAN for Linux, by running sdk maven install and sdk install java.
Run make help to get a bunch of useful commands.
To build the app, GNU Make is used. Linux usually comes with GNU Make installed. On Windows, you can use your git bash to run make commands. Otherwise, please read the Makefile for mvn commands that are useful.
- Run
make - Run
make run. - Browse to http://localhost:8080.
- Press
Generic UI (Wicket). - Login using:
- Either as a regular user:
username: marco
password: pass - or the superuser:
username: secman-admin
password: pass
- Either as a regular user:
To generate sample data, you can open up the "Prototyping menu" in the top-right, press "Run fixture script", press OK, and navigate the app to see.
- Track trees, to estimate how much yield a forest will provide.
- Manage Arborists, how many trees they added, etc.
- Also see use case docs
Use Cases for Apache Causeway can be found in the Causeway documentation.
- Conventions - Personal Causeway conventions
- Domain model - A rough entity diagram.
- Glossary - Explanation of Forestry terms.
- Test conventions - A rough testing plan.
- To do - A to do list, which is easier to maintain than GitHub issues, for most small work.
- Use cases - Rough use cases.
- Currently being worked on. See todo list for progress.
- In progress
This project contains two types of Maven subprojects:
- Modules - with
{groupId}.modules.{name}as the Java package format. - Other - with
{groupId}.{name}as the Java package format.
Modules encapsulate shared logic, features, and entities (for example, a forest-inventory module). They may depend only on other modules. Other subprojects can be customized to provide application specific behavior. They may depend on modules.
| Directory | Description |
|---|---|
| forest-inventory | Entities and features of forest inventory. |
| module-simple | Example module. Can be used as a template for new modules. |
| module-simple-tests | Example test module. |
| webapp | Adds web application features to modules. Currently, only for forest-inventory. |
| webapp-tests | For testing the webapp. Good for ensuring that modules are properly connected. |
The application has both unit tests and integration tests.
| Test type | Report | Phase | Skip using |
|---|---|---|---|
| Unit test | target/surefire-unittest-reports |
test |
-DskipUTs |
| Integ test | target/surefire-integtest-reports |
integration-test |
-DskipITs |