feat: ESPI 4.0 Schema Compliance - Phase 6: MeterReading#72
Merged
Conversation
Phase 6 of ESPI 4.0 schema compliance focuses on MeterReading, which
per the specification has NO child elements - only Atom link relationships.
Changes:
- MeterReadingDto: Already compliant, updated documentation
- Has NO child elements per espi.xsd specification
- Relationships to ReadingType and IntervalBlock via Atom links only
- Removed unused imports (OffsetDateTime, List, LinkDto)
- Added ESPI 4.0 specification documentation
- MeterReadingMapper: Simplified for empty DTO
- Removed BaseMapperUtils dependency (not needed)
- Removed IntervalBlockMapper and ReadingTypeMapper dependencies
- Removed updateEntity method (read-only operations only)
- Added toEntity mappings for all audit/relationship fields
- MeterReadingRepository: Optimized for indexed queries only
- Kept: findAllIds, findAllIdsByUsagePointId (indexed on usage_point_id)
- Removed: deleteById override, findByRelatedHref, findAllRelated,
findAllIdsByXpath2, findIdByXpath (non-indexed complex queries)
- Removed @Modifying, @transactional imports
- MeterReadingRepositoryTest: Removed obsolete tests
- Removed tests for non-indexed queries (relatedHref, xpath)
- Updated empty results test
- All 23 tests passing
Related Issues:
- Part of Issue #28 (ESPI 4.0 Schema Compliance)
All 541 openespi-common tests passing.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase 6 of the ESPI 4.0 schema compliance project updates MeterReading entity, DTO, mapper, repository, and tests. Per ESPI 4.0 specification, MeterReading has NO child elements - relationships to ReadingType and IntervalBlock are expressed via Atom links only.
Changes Made
MeterReadingDto
OffsetDateTime,List<>,LinkDtoMeterReadingMapper
BaseMapperUtils(not needed)IntervalBlockMapper(relationships via Atom links)ReadingTypeMapper(relationships via Atom links)updateEntitymethod (read-only operations only)toEntitywith explicit mappings for all audit/relationship fieldsMeterReadingRepository
findAllIds()- returns all meter reading IDsfindAllIdsByUsagePointId()- indexed on usage_point_iddeleteById()override - redundant with inherited methodfindByRelatedHref()- non-indexed query on relatedLinksfindAllRelated()- complex query without indexesfindAllIdsByXpath2()- complex join without indexfindIdByXpath()- complex join without indexMeterReadingRepositoryTest
shouldFindMeterReadingsByRelatedHrefshouldFindAllRelatedEntitiesshouldFindAllMeterReadingIdsByXpath2shouldFindMeterReadingIdByXpathshouldHandleEmptyResultsGracefullytestESPI 4.0 Specification Note
Per the espi.xsd schema, MeterReading is defined as:
Note that MeterReading extends IdentifiedObject with NO additional child elements. Relationships to IntervalBlock and ReadingType are expressed via Atom
<link>elements in the entry, not as embedded XML elements.Validation
Related Issues
Testing Instructions
🤖 Generated with Claude Code