Development documentation Log in to Edit

Drosera - development documentation

Building application

Application uses build system Maven, which simplifies the application build substantially.

  • If not present on your computer, install Maven.
  • Download modified Flatworm binary (integer parsing of empty string was changed from 0 to null).
  • Install Flatworm artefact with following command:
    mvn install:install-file -Dfile=flatworm-2.1-SNAPSHOT.jar -DgroupId=com.blackbear.flatworm -DartifactId=flatworm -Dversion=2.1-SNAPSHOT -Dpackaging=jar
  • Run mvn install to create the artefact

Afterwards the WAR archive should be created in target directory.

Application internals

The server is written in Java EE and has JSF web based interface.

Deployment diagram

To server are connecting through REST API another applications which currently are:

  • Filiformis SI reading module
  • Module for receipt printing

REST API description

TODO

Development environment

Hudson

For the application has been established Hudson continuous integration server, where integration tests are running after every build. Several reports can be also found there.

Data domains

The application operates on domain model represented by following diagram:

Domain model

The entities represented by this domain model can be found in org.drosera.server.model package.

The Competitor and Category entities are both divided into two separate entities, one representing competition entry and the second representing stage entry (CompetitorRun and CategoryRun).

Associations CompetitorRun-CardReading and Punch-Control are not explicitly represented in entities but are rather made by querying the persistence layer. The reason for this is, that mandatory that read card has to have any competitor or control represented among the entities.

Processes

Results

All results are counted on demand and stored in cache rather than stored in persistence storage. When change occurred, the result is refreshed or removed from cache.

Results

All classess representing result for singular competitor are implementing some descendant of ResultInterface, which has two children interfaces - StageResultInterface for stage results and CompetitionResultInterface for competition results. Those interfaces are implemented by rules-specific classes i.e. IOFStageResult and IOFCompetitionResult.

Results storage classes

Results positions and results for competitors are counted in result managers. ResultsManagerInterface defines interface for all results managers, which is implemented by AbstractCommonResultsManager which includes all algorithms which are not specific for certain rules system - for which this class must be extended like in IOFResultsManager.

Class IOFBestSplitsManager (implementing IOFBestSplitsInterface) is used to store best splits and punch→controlSequence relations.

Results manager classes


Related

Wiki: Home

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.