Repository navigation
Java code
The data as defined in the Data page.
We use JPA with EclipseLink implementation to persist data in a PostgreSQL relational database.
Each JPA entity has a DAO a with CRUD operations.
An EntityListener is defined in orm.xml. It checks the permissions before doing any operation on the database. It registers changes so that we can broadcast them. It set tracking data so that we know who and when data is created, updated, erased.
persistence.xml configures the persistence behaviour.
Downloaded file persistence is managed with JackRabbit Oak in a Mongo database.
Collaborative multi-user writing tool, see YJS.
Controller called by REST API, such as data management and fine-tuned operations.
see Exceptions.drawio.
Permission conditions are defined to check each access and change, see Permission conditions.drawio and Permission conditions of each ColabEntity.
The authentication has a limit of failed attempts.
The EntityListener registers changes to be broadcasted.
Clients subscribe to channels to be aware of changes.
The following settings can be set
- per file maximum size
- per project file storage quota
- whether the "create an account" button should be displayed
- the number of days an entity can stay in the bin before it is set as destroyed
- the number of days an entity set as destroyed is kept before real deletion
- the timestamp of the last terms of use
Designed to see who is online, working on the same project. It was hidden once. To debug and restore.
Obsolete attempt to write a collaborative multi-user writing tool.
We use SLF4J with logback implementation.
logback.xml configures the logs.
The logger levels can be changed via the logger admin page in the GUI.
We use Liquibase to upgrade the PostgreSQL database structure, see the Liquibase page.
db.changelog.xml configures liquibase.