Skip to content

Releases: PavlidisLab/Gemma

1.27.0

01 Oct 20:08
Compare
Choose a tag to compare

The RESTful API version has been bumped to 2.4.0.

Change set

  • add updatePublication CLI
  • improved API for filtering value objects
  • experimental API for integrating Hibernate Criteria in the VO filtering and ACL
  • apply ACL rules to result sets by checking the associated EE
  • use a test JAR for gemma-core to avoid packaging all the testing dependencies
  • transition to UTF-8 for the database and Web frontend
  • use MySQL 8.0.26
  • fix batch information badge for uninformative FASTQ headers
  • use jax-rs built-in mechanism of listeners for logging API-related exceptions
  • improve the Arg<T> API
  • fix comparison with strings in the filtering and add tests to make sure that all the features work as expected
  • retrieve the RESTful API version from openapi-configuration.yaml
  • fix retrieving datasets by NCBI taxon identifier

Highlights

UTF-8 transition

The database has been completely transitioned to UTF-8 using the utf8mb4 MySQL character set. We also fixed the HTML frontend to be using Unicode as well. This allows curators and users to use a broader set of characters in Gemma such as Emojis.

Paginated output for the RESTful API

Datasets that can be retrieved with offset/limit are now consistently paginated with a format inspired by Spring Data paging.

data: []
offset: 0
limit: 20
sort:
  orderBy: id
  direction: ASC
totalElements: 120

This works out by introducing two new interfaces: Slice<T> and PaginatedResponseData<T>. The slice can be used in DAO and service layer to provide additional information about the underlying result set such as its offset, limit, sorting and total elements.

It is used for filtering VOs with an improved interface:

public Slice<T> loadValueObjectsPreFilter(List<ObjectFilter[]> filters, Sort sort, int offset, int limit);

Improved Arg

Remove subclasses of FilterArg, everything is handled in a generic manner now.

Introduce OffsetArg and LimitArg to produce better error messages when invalid values are used. It also provides the ability to cap the limit argument, so that users don't end-up querying an unreasonable amount of data all at once.

Defer responsibility of creating the ObjectFilter to the DAO/service layers, more specifically the FilteringDao interface.

Appassembler CLI

Maven Appassembler has been part of the build for a few weeks already to package gemma-core as a CLI tool, and it is now stable enough to replace the current CLI.

This new tool drastically simplifies the build, and make it easier for curators to set up. There's no need for exporting any variable beyond $PATH.

This release fixes the logging by removing a conflicting log4j.properties file from baseCode and allowing one to override the logging settings under gemma-cli/etc/log4j.properties

Swagger UI is almost ready!

This release resolves an issue with an incorrect server path. There is only one issue remaining before we can use this in production #174.