How pariharashish/dgh works
Purpose and runtime
This is a Maven-based Java/Spring backend for managing oil-and-gas domain data: basins, contract areas, facilities, wells, tanks, devices, operators, tariffs, users, access control, alerts, change requests, audits, and reports. The application entry point is src/main/java/com/logicladder/dgh/DghApplication.java; environment-specific Spring properties are under src/main/resources/application.properties and src/main/resources/application-*.properties.
HTTP API boundary
REST controllers are the inbound boundary, organized by domain and reporting:
• src/main/java/com/logicladder/dgh/controller/WellController.java
• src/main/java/com/logicladder/dgh/controller/DeviceController.java
• src/main/java/com/logicladder/dgh/controller/reports/GlobalReportsController.java
Requests pass through request/response logging and centralized exception handling at src/main/java/com/logicladder/dgh/components/RequestResponseLoggingInterceptor.java and src/main/java/com/logicladder/dgh/configuration/GlobalExceptionHandler.java. DTOs form the API contract boundary before persistence/domain mapping, e.g. src/main/java/com/logicladder/dgh/dto/WellDto.java.
Authentication and authorization
JWT authentication is exposed through src/main/java/com/logicladder/dgh/security/controller/AuthenticationRestController.java. Token extraction, validation, and Spring Security integration are centered on:
• src/main/java/com/logicladder/dgh/security/JwtAuthorizationTokenFilter.java
• src/main/java/com/logicladder/dgh/security/JwtTokenUtil.java
• src/main/java/com/logicladder/dgh/security/config/WebSecurityConfig.java
Authorization appears to be role/page-group based, persisted through src/main/java/com/logicladder/dgh/entity/app/AccessRolePageGroup.java and accessed through src/main/java/com/logicladder/dgh/security/repository/IAccessRolePageGroupRepository.java.
Core business and persistence layers
Controllers delegate to interface-driven services and implementations, which operate on JPA entities and repositories/DAOs. Representative flow is controller → service → repository/DAO → relational persistence:
• src/main/java/com/logicladder/dgh/service/impl/WellServiceImpl.java
• src/main/java/com/logicladder/dgh/security/repository/IWellRepository.java
• src/main/java/com/logicladder/dgh/entity/app/Well.java
The repository contains both Spring Data-style repositories and custom generic DAO implementations, with transaction setup in src/main/java/com/logicladder/dgh/configuration/JpaTransactionConfig.java. Dozer mappings support DTO/entity conversion via src/main/java/com/logicladder/dgh/configuration/DozerConfig.java.
Logic Ladder integration and asynchronous workflows
A distinct integration layer synchronizes or orchestrates domain actions with an external “Logic Ladder” service. It has domain-specific interfaces/implementations for wells, devices, facilities, contract areas, alerts, and change requests:
• src/main/java/com/logicladder/dgh/logic/ladder/service/impl/WellLogicLadderServiceImpl.java
• src/main/java/com/logicladder/dgh/logic/ladder/service/impl/DeviceLogicLadderServiceImpl.java
• src/main/java/com/logicladder/dgh/logic/ladder/service/impl/AsyncLogicLadderServiceImpl.java
External request/response schemas are isolated under src/main/java/com/logicladder/dgh/thirdparty/request/dto/ and src/main/java/com/logicladder/dgh/thirdparty/response/dto/. RestTemplate configuration at src/main/java/com/logicladder/dgh/configuration/RestTemplateConfig.java is the likely outbound HTTP client boundary.
Audit, notifications, and reporting
Hibernate insert/update listeners provide a cross-cutting audit/event capture path:
• src/main/java/com/logicladder/dgh/hibernate/events/HibernateInsertUpdateEventListener.java
• src/main/java/com/logicladder/dgh/entity/app/AuditLog.java
• src/main/java/com/logicladder/dgh/entity/app/EventLog.java
User/operator lifecycle actions generate templated email notifications through src/main/java/com/logicladder/dgh/service/impl/MailServiceImpl.java and FreeMarker templates in src/main/resources/templates/. SMS capability is represented by src/main/java/com/logicladder/dgh/util/CallSmscApi.java.
Reporting includes API-configurable boards/endpoints and Jasper report generation:
• src/main/java/com/logicladder/dgh/controller/reports/config/BoardConfigServiceImpl.java
• src/main/java/com/logicladder/dgh/controller/reports/jasper/AbstractReportGenerator.java
• src/main/resources/templates/DGHReportTemplate.jrxml
Main entry points: IWellRepository.java Repositories & DAOs · WellController.java Domain REST controllers · WellServiceImpl.java Domain services · WebSecurityConfig.java Spring Security
Components 24
HTTP API
- Domain REST controllers · Domain APIs for wells, devices, and related oil-and-gas data.
src/main/java/com/logicladder/dgh/controller/WellController.java - Reports API
src/main/java/com/logicladder/dgh/controller/reports/GlobalReportsController.java - Request logging
src/main/java/com/logicladder/dgh/components/RequestResponseLoggingInterceptor.java - Exception handling
src/main/java/com/logicladder/dgh/configuration/GlobalExceptionHandler.java - API DTOs
src/main/java/com/logicladder/dgh/dto/WellDto.java
Security
- Authentication API
src/main/java/com/logicladder/dgh/security/controller/AuthenticationRestController.java - JWT authorization filter
src/main/java/com/logicladder/dgh/security/JwtAuthorizationTokenFilter.java - Spring Security
src/main/java/com/logicladder/dgh/security/config/WebSecurityConfig.java - Role/page access
src/main/java/com/logicladder/dgh/security/repository/IAccessRolePageGroupRepository.java
Core domain
- Domain services · Interface-driven business operations and orchestration.
src/main/java/com/logicladder/dgh/service/impl/WellServiceImpl.java - DTO/entity mapping
src/main/java/com/logicladder/dgh/configuration/DozerConfig.java - Repositories & DAOs · Spring Data repositories and custom generic DAOs.
src/main/java/com/logicladder/dgh/security/repository/IWellRepository.java - JPA domain entities
src/main/java/com/logicladder/dgh/entity/app/Well.java - Relational database
Logic Ladder integration
- Logic Ladder services · Domain synchronization for wells, devices, facilities, and related workflows.
src/main/java/com/logicladder/dgh/logic/ladder/service/impl/WellLogicLadderServiceImpl.java - Async integration
src/main/java/com/logicladder/dgh/logic/ladder/service/impl/AsyncLogicLadderServiceImpl.java - External DTO contracts
- Outbound HTTP client
src/main/java/com/logicladder/dgh/configuration/RestTemplateConfig.java - Logic Ladder platform
Audit, notifications & reports
- Hibernate audit listener · Captures insert and update events.
src/main/java/com/logicladder/dgh/hibernate/events/HibernateInsertUpdateEventListener.java - Audit & event logs
src/main/java/com/logicladder/dgh/entity/app/AuditLog.java - Email notifications · Uses FreeMarker templates for lifecycle notifications.
src/main/java/com/logicladder/dgh/service/impl/MailServiceImpl.java - Jasper reporting
src/main/java/com/logicladder/dgh/controller/reports/jasper/AbstractReportGenerator.java
Other components
- Spring application
src/main/java/com/logicladder/dgh/DghApplication.java
Connections 23
- Spring application → Spring Security: boots
- Spring Security → JWT authorization filter: installs
- Authentication API → JWT authorization filter: issues/validates tokens
- Domain REST controllers → Request logging: intercepted by
- Domain REST controllers → Exception handling: errors handled by
- Domain REST controllers → API DTOs: accepts/returns
- Domain REST controllers → Domain services: delegates to
- API DTOs → DTO/entity mapping: mapped through
- DTO/entity mapping → JPA domain entities: converts
- Domain services → Repositories & DAOs: persists via
- Repositories & DAOs → JPA domain entities: manages
- Repositories & DAOs → Relational database: reads/writes
- Spring Security → Role/page access: authorizes via
- Domain services → Logic Ladder services: orchestrates
- Logic Ladder services → Async integration: queues async work
- Logic Ladder services → External DTO contracts: uses
- External DTO contracts → Outbound HTTP client: sent through
- Outbound HTTP client → Logic Ladder platform: HTTP
- Repositories & DAOs → Hibernate audit listener: entity changes trigger
- Hibernate audit listener → Audit & event logs: records
- Domain services → Email notifications: sends lifecycle notices
- Reports API → Jasper reporting: generates reports
- Jasper reporting → Repositories & DAOs: queries data