Skip to content

Stop tracking Maven build outputs - #76

Open
pmanko wants to merge 124 commits into
masterfrom
codex/untrack-maven-build-outputs
Open

Stop tracking Maven build outputs#76
pmanko wants to merge 124 commits into
masterfrom
codex/untrack-maven-build-outputs

Conversation

@pmanko

@pmanko pmanko commented Aug 17, 2026

Copy link
Copy Markdown
Member

Summary

  • remove generated test-utilities/target artifacts from version control
  • ignore Maven target/ directories at any module depth

Why

Building analyzer plugins currently changes a tracked compiler input path, leaving every worktree dirty and breaking repeatable isolated stack startup.

Validation

  • mvn -q -f test-utilities/pom.xml package -DskipTests -Dmaven.test.skip=true
  • repository remains clean after the build

CalebSLane and others added 30 commits July 26, 2019 16:49
Various Clean up tasks and fixes
Bumps [spring-core](https://github.com/spring-projects/spring-framework) from 5.2.3.RELEASE to 5.3.14.
- [Release notes](https://github.com/spring-projects/spring-framework/releases)
- [Commits](spring-projects/spring-framework@v5.2.3.RELEASE...v5.3.14)

---
updated-dependencies:
- dependency-name: org.springframework:spring-core
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
…gframework-spring-core-5.3.14

Bump spring-core from 5.2.3.RELEASE to 5.3.14
dependabot Bot and others added 29 commits February 2, 2026 16:49
Bumps commons-fileupload:commons-fileupload from 1.4 to 1.6.0.

---
updated-dependencies:
- dependency-name: commons-fileupload:commons-fileupload
  dependency-version: 1.6.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps commons-fileupload:commons-fileupload from 1.4 to 1.6.0.

---
updated-dependencies:
- dependency-name: commons-fileupload:commons-fileupload
  dependency-version: 1.6.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps commons-fileupload:commons-fileupload from 1.4 to 1.6.0.

---
updated-dependencies:
- dependency-name: commons-fileupload:commons-fileupload
  dependency-version: 1.6.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps commons-fileupload:commons-fileupload from 1.4 to 1.6.0.

---
updated-dependencies:
- dependency-name: commons-fileupload:commons-fileupload
  dependency-version: 1.6.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Documentation updates and cleanup

* docs: consolidate and standardize analyzer documentation

- Merge analyzers/README.md content into root README.md
- Remove redundant analyzers/README.md (consolidated into root)
- Update INVENTORY.md metadata (6 → 36 READMEs)
- Create README template at analyzers/template/README.template.md
- Standardize analyzer READMEs with consistent sections:
  * Mindray: Add Protocol table, Build, Installation, Last Verified
  * HoribaPentra60: Change Deployment → Installation, add Last Verified
  * HoribaMicros60: Change Deployment → Installation, add Last Verified
- Ensure all READMEs follow standard structure:
  * Protocol table, Build, Installation, Notes, Last Verified

* feat(011): Add GenericHL7 architecture and update inventory to 36 plugins

- Add GenericHL7/ARCHITECTURE.md: Comprehensive architecture spec for M19
- Update INVENTORY.md: Add QuantStudio7Flex (PR #42), increase count to 36
- Document Generic-First approach for new analyzer integrations

Related: Feature 011 Architecture Remediation

* chore: apply formatting to GenericHL7 ARCHITECTURE.md

* feat(GenericHL7): add GenericHL7 analyzer plugin (M19)

- GenericHL7Analyzer: MSH-3 pattern matching, AnalyzerImporterPlugin
- GenericHL7LineInserter: OBX parsing, AnalyzerTestNameCache lookup
- JUnit4 unit tests for isTargetAnalyzer and OBX parsing
- README and pom.xml
* Fix NullPointerException and add TG_LOINC mapping in Mindray analyzer

Co-authored-by: pmanko <711826+pmanko@users.noreply.github.com>

* Address PR review comments: fix groupId, set testId to null, and rename test

Co-authored-by: pmanko <711826+pmanko@users.noreply.github.com>

* Update test comments to reflect testId is null instead of empty

Co-authored-by: pmanko <711826+pmanko@users.noreply.github.com>

* Improve test assertions to verify resultList is empty for unmatched results

Co-authored-by: pmanko <711826+pmanko@users.noreply.github.com>

* Remove testPersistImport test that requires database connection

Co-authored-by: pmanko <711826+pmanko@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: pmanko <711826+pmanko@users.noreply.github.com>
…tern

Changes:
- GenericHL7Analyzer.connect(): Use SpringContext.getBean(PluginAnalyzerService.class) instead of getInstance()
- GenericASTMAnalyzer.connect(): Same change for consistency
- ARCHITECTURE.md: Clarify single-path architecture (no separate legacy vs generic code paths)

Aligns with pattern used by SysmexXNL, SysmexXP, pocH-100i, GeneXpert adapter implementations.
Fixes test compatibility where getInstance() returns null but SpringContext.getBean() returns the mock.
…dency (#52)

* fix(build): Move integration tests to plugins, add test dependencies

Resolve circular dependency between main project and plugins by moving
GenericHL7IntegrationTest and GenericASTMIntegrationTest to their
respective plugin modules.

Changes:
- Add test-jar, testcontainers, spring-test, dbunit to dependencyManagement
- Update GenericHL7 and GenericASTM pom.xml with test dependencies
- Move integration tests from main project to plugin test directories
- Copy test-result.xml fixtures to plugin test resources
- Fix unit test requiring Spring context with @ignore annotation

The plugins now depend on built artifacts from the main project:
- openelisglobal-3.2.1.2-classes.jar (compile scope)
- openelisglobal-3.2.1.2-tests.jar (test scope)

This eliminates the circular dependency that required special build flags.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(ci): Use proper mvn install for OE artifacts, clean debug logging

Replace compile-only + manual JAR installation with mvn clean install
which properly produces -classes.jar (classifier) and -tests.jar artifacts.
The manual approach was missing -Dclassifier=classes, causing Maven to fail
resolving openelisglobal:jar:classes:3.2.1.2.

Also remove debug.log file writes from GenericHL7Analyzer (development
artifacts that shouldn't be in production code) and apply spotless
formatting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Ubuntu <ubuntu@ip-172-31-31-180.us-west-2.compute.internal>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…gin (#53)

Move analyzer-specific HL7 integration tests from the main project to
the GenericHL7 plugin module, where GenericHL7Analyzer is on the classpath.
Tests follow the established pattern from GenericHL7IntegrationTest:
mock PluginAnalyzerService, instantiate plugin, verify end-to-end flow.

Tests added:
- MindrayBC5380HL7Test (identifier_pattern: MINDRAY.*BC.?5380|BC5380)
- MindrayBS360EHL7Test (identifier_pattern: MINDRAY.*BS.?360E|BS360E)
- MindrayBC2000HL7Test (identifier_pattern: MINDRAY.*BC.?2000|BC2000)
- SysmexXNHL7Test (identifier_pattern: SYSMEX.*XN|XN-.*)
- AbstractMindrayHL7Test (shared setup/cleanup for Mindray tests)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
BS360E chemistry fixture has CREA/ALT/AST but mappings only had CBC codes.
Sysmex XN fixture has MCV/MCH/MCHC but mappings didn't include them.
Made test mappings overridable via getTestMappings() and added missing entries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: update bridge URL and fix CI to build against OE develop

- Update README GitHub link from astm-http-bridge to openelis-analyzer-bridge
- Revert OE_REF from deleted feat/011-analyzer-dashboard-fixtures to develop
  (isGenericPlugin() default method is now available on OE develop)
- Remove stale feat/011-horiba-pentra60-micros60 from CI branch triggers

* ci: pin OE_REF to feat/011-madagascar-analyzer-integration

Temporary pin until PR #2767 merges to develop, at which point
both workflows should be updated to OE_REF: develop.
* refactor(011): update generic plugins for 2-table model

AnalyzerConfiguration was merged into Analyzer (Phase 3 table merge).
Update GenericASTMAnalyzer and GenericHL7Analyzer:
- ThreadLocal<AnalyzerConfiguration> → ThreadLocal<Analyzer>
- AnalyzerConfigurationService → AnalyzerService
- config.getAnalyzer().getId() → analyzer.getId() (no indirection)

* ci: pin OE_REF to fix/011-sync-remediation for 2-table model

AnalyzerService.findByIdentifierPatternMatch() and the merged analyzer
table only exist on fix/011-sync-remediation (PR #2802). Pin CI to
compile against that branch until it merges into feat/011.

* fix(011): update GenericHL7 test for 2-table model

Replace AnalyzerConfigurationService/AnalyzerConfiguration references
with AnalyzerService/Analyzer in GenericHL7AnalyzerTest to match the
merged 2-table data model. Also updates README thread-safety docs.
…est fixes (#58)

* fix(docs): point analyzer-defaults links to projects/analyzer-defaults

Update GenericHL7 README and ARCHITECTURE links so they resolve after
analyzer-defaults was moved to projects/analyzer-defaults in the main repo.

* feat(011): add QC detection, value cleanup, and integration tests to GenericASTM

- Parse O.12 Action Code to detect QC samples (isControl=true when "Q")
- Strip trailing/leading ^ from R.4 values (GeneXpert qualitative format)
- Add 5 new integration tests: QC detection, patient sample, trailing caret,
  leading caret, normal value passthrough
- Fix test fixtures: add analyzer_type with is_generic_plugin=true, set
  analyzer_type_id on analyzer row (required for findGenericAnalyzersWithPatterns
  INNER JOIN), use correct column name iscontrol (not is_control)

* fix(ci): update OE_REF to develop (fix/011-sync-remediation was deleted)

The 2-table model and GenericASTM/GenericHL7 support are now on develop
since feat/011 merged (PR #2767). The old branch was deleted.

* Update analyzers/GenericHL7/ARCHITECTURE.md

* fix: address Copilot review comments on PR #58

- Replace ON CONFLICT DO UPDATE SET id with ON CONFLICT DO NOTHING +
  SELECT to avoid rewriting analyzer_type PK (breaks FK relationships)
- Use nextval('analyzer_type_seq') instead of hardcoded ID 9999
- Fix broken docs links in GenericHL7 README.md and ARCHITECTURE.md
  (projects/analyzer-defaults is in the parent repo, not plugins)
- Skip analyzer_type deletion in cleanup (may be shared/pre-seeded)
PluginLoader requires an XML descriptor inside each JAR to discover
the plugin class and call connect(). GenericASTM and GenericHL7 were
missing these descriptors, so they were never loaded from their JARs
despite being present in the plugins directory.
* Initial plan

* docs: clarify OpenELIS prerequisite and single-plugin build command

* docs: add analyzer-directory single-plugin build command via parent pom

* docs: address review comments — promote install-oe-jar.sh, fix build commands

- Rename "Prerequisite" → "Prerequisites" (grammar fix)
- Add `git checkout 3.2.1.2` for standalone path (version alignment)
- Promote `install-oe-jar.sh` as primary path for submodule users
- Switch `-pl ./analyzers/Name` → `-pl :ArtifactId` (unambiguous)
- Remove confusing "from inside analyzer dir" example
- Add inline comment explaining why both -DskipTests flags are needed
- Fix outdated GenericASTM branch note (now on develop)

* feat: lightweight 3-tier cascade in install-oe-jar.sh

Rewrite install-oe-jar.sh to try lightweight sources before Maven:
  1. GitHub release asset (gh release download — ~5s)
  2. Docker image extraction (itechuw/openelis-global-2 — ~6s)
  3. Local Maven build (minutes — last resort)

Also update README to document the cascade and remove manual build
commands in favor of the script.
…tions (#61)

* fix: remove phantom ANALYZER_ID dependency from all plugin implementations

Legacy plugins looked up a phantom Analyzer row by name at startup and stored
its ID as a static field, then stamped every AnalyzerResults with it. This
coupled the import pipeline to shell rows with no real device config.

Remove static ANALYZER_ID fields, getAnalyzerByName() lookups, and
setAnalyzerId(ANALYZER_ID) calls from all 30 Implementation files. The import
pipeline now injects the real device ID via contextAnalyzerId at persist time.

* fix: remove orphaned return statements from getAnalyzerService removal

The previous commit left `return analyzerService; }` fragments in 11
plugin files when removing the lazy getAnalyzerService() method, causing
compilation failures.
* Fix Generic Plugin to Load Results

* fix integration tests
…/Excel imports (#64)

* feat(014): Add GenericFile analyzer plugin for profile-driven CSV/TSV/Excel imports

- GenericFileAnalyzer: profile-driven FILE protocol plugin
- GenericFileLineInserter: tab-delimited line parsing with column mappings
- XML descriptor, unit tests
- Paired with OpenELIS-Global-2 PR #3036 (014 M1)

Made-with: Cursor

* QuantStudio7Flex: support Target Name column for XLS export compatibility

Made-with: Cursor

* fix: address Copilot review feedback on GenericFile plugin

- Tighten isTargetAnalyzer() to only match tab-delimited lines (not comma),
  preventing the generic plugin from stealing input from specific plugins
- Add required testCode validation in GenericFileLineInserter (null/blank
  testCode now skips the line with an error message instead of creating
  broken AnalyzerResults)
- Add missing timestamp format patterns: MM/dd/yyyy HH:mm and dd-MM-yyyy HH:mm
- Add tests: comma-only targeting returns false, missing testCode skips line,
  ISO and US date format timestamp parsing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Ubuntu <ubuntu@ip-172-31-31-180.us-west-2.compute.internal>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…eInserter

GenericFileLineInserter now checks configDefaults.hasHeader in the profile
config and skips lines[0] (the header prepended by ExcelAnalyzerReader).
Previously, header tokens like "Sample Name" were mapped as data rows.

Added 3 unit tests: header skip with hasHeader=true, backwards compat
without hasHeader, and end-to-end with DEFAULT_LINE_FIELD_ORDER.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(014): allow empty result when interpretation exists (qualitative assays)

FluoroCycler negative results have empty CP but valid Interpretation="Negative".
Previously, rows with blank result were silently dropped. Now the interpretation
is used as the effective result value when the numeric result is empty.

* fix: GenericASTMAnalyzer uses analyzer name, not type name

getAnalyzerLineInserter() was using analyzer.getAnalyzerType().getName()
("Generic ASTM") instead of analyzer.getName() ("Cepheid GeneXpert
(ASTM Mode)"). This caused results to be attributed to the wrong
analyzer in the AnalyzerResults staging page.
* plugin should find test mappings by analyzer Type name

* remove rendant file
* feat: add GenericASTM Q-record responder for bidirectional M3

Implement a dedicated GenericASTMResponder for ASTM query records and wire GenericASTMAnalyzer to use it, keeping line inserter responsibilities focused on result ingestion. Add responder coverage and align test fixtures with the localization schema used by current integration tests.

Made-with: Cursor

* fix: address GenericASTM responder review feedback

Remove dead code, avoid redundant accession lookups during Q-record resolution,
and add focused responder tests for caret-delimited accessions and multi-code joins.

PR: #63
Made-with: Cursor

* fix: address PR #63 review comments — java.time, LinkedHashSet, ASTM sanitization, exception text (#68)

- Replace SimpleDateFormat with java.time (ZonedDateTime, DateTimeFormatter)
- Add configurable response timezone via org.openelisglobal.plugins.genericastm.response-timezone (default UTC)
- Use LinkedHashSet for Q.3 candidate de-duplication (O(n) vs O(n²))
- Add sanitizeAstmField() for outbound ASTM fields to prevent delimiter injection
- Richer exception message in GenericASTMAnalyzer (matches log detail)
- Add unit test for delimiter sanitization in outbound response

Made-with: Cursor

---------

Co-authored-by: Ubuntu <ubuntu@ip-172-31-31-180.us-west-2.compute.internal>
Merges FILE transport ownership documentation for 014.
isTargetAnalyzer() was only passing MSH-3 to findByIdentifierPatternMatch,
so patterns like "MINDRAY.*BC.?5380" couldn't match when MSH-3 is just
"MINDRAY". Now extracts MSH-4 (sending facility) and passes both
identifiers: ["MINDRAY", "MINDRAY-BC-5380"]. The existing List<String>
overload scores by match length, so the combined identifier wins.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
#73)

* fix: GenericFile uses AnalyzerTestNameCache for test mapping (was hardcoded -1)

* fix(genericplugins): align mappings to analyzer instance IDs

Use analyzer instance IDs instead of analyzer-type IDs in GenericASTM responder lookup and in GenericASTM/GenericHL7 test fixtures so plugin compile gates match the OpenELIS analyzer_test_map model.

* test(genericplugins): keep integration fixtures on stable contract

Insert analyzer test mappings directly in plugin integration tests so the standalone plugin CI validates the same analyzer_id contract without depending on branch-specific OpenELIS helper APIs.
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.

4 participants