Skip to content

Modularization and Modernization#590

Draft
c-schuler wants to merge 13 commits intomasterfrom
modularization-and-modernization
Draft

Modularization and Modernization#590
c-schuler wants to merge 13 commits intomasterfrom
modularization-and-modernization

Conversation

@c-schuler
Copy link
Contributor

Modularization and Modernization

Description

This PR modernizes the cqf-tooling project infrastructure across four major areas: Java version upgrade, Maven multi-module decomposition, CLI modernization, and operation pattern migration. The monolithic tooling module is decomposed into 8 focused modules with proper dependency layering, and all 23 legacy operations are migrated to the new annotation-based ExecutableOperation pattern.

  • Github Issue:
  • I've read the contribution guidelines
  • Code compiles without errors
  • Tests are created / updated
  • Documentation is created / updated

By creating this PR you acknowledge that your contribution will be licensed under Apache 2.0

- Updated maven.compiler.release from 11 to 17
- Updated maven-javadoc-plugin source from 11 to 17
- Removed tooling-ui from module list
- Deleted tooling-ui/ directory entirely
Created a new tooling-core module containing shared infrastructure files extracted from the monolithic tooling module. Package structure is preserved (org.opencds.cqf.tooling.*) so no import changes needed anywhere.

Files intentionally kept in tooling (too many external deps for core): IOUtils, ResourceUtils, BundleUtils, HttpClientUtils, FhirVersionEnumConverter, ResourceAndTypeConverter
Replaced the hand-rolled CLI (OperationFactory switch statement and custom arg parsing) with a picocli-based subcommand hierarchy. All ~40 operations are mapped to a clean command tree.

Created tooling-cli/CLI_USAGE.md with documentation for all operations organized by command group, including argument tables and usage examples in the new picocli syntax. It covers all ~40 operations with their parameters, aliases, and defaults. Significantly more structured than the old comment block in Main.java.
The monolithic IOUtils had circular dependencies on LibraryProcessor, CqlProcessor, and CqlTranslatorException, preventing it from moving to tooling-core and blocking all domain module extraction.
Created tooling-terminology/pom.xml with dependencies on tooling-core, HAPI FHIR (base, dstu3, r4, r5, client), Apache POI, cql-to-elm, commons-compress, slf4j
Plugins activated:
  - Spotless (v2.39.0) — Palantir Java Format applied to all 406 Java files
  - Checkstyle (v3.6.0) — naming convention checks enforced
  - Animal Sniffer (v1.23) — Android API 34 compatibility verified
  - EditorConfig — created .editorconfig matching clinical-reasoning
Still got a lot to do, but getting closer. Old operation package deleted.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments