Skip to content

task/AMP-31085/Update-TruBudget-Branch-with-latest-develolp-draft - #4506

Open
brianbrix wants to merge 126 commits into
developfrom
task/AMP-31085/Update-TruBudget-Branch-with-latest-develolp-draft
Open

task/AMP-31085/Update-TruBudget-Branch-with-latest-develolp-draft#4506
brianbrix wants to merge 126 commits into
developfrom
task/AMP-31085/Update-TruBudget-Branch-with-latest-develolp-draft

Conversation

@brianbrix

Copy link
Copy Markdown
Contributor

No description provided.

…th-latest-develolp

# Conflicts:
#	amp/Dockerfile
Copilot AI review requested due to automatic review settings August 7, 2026 07:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the AMP 4.0 branch with a large set of changes primarily focused on TruBudget integration, component funding enhancements (statuses + documents), and operational/deployment updates (Docker + CI workflows). It also includes a handful of GIS robustness fixes, UI adjustments, and data-importer access controls.

Changes:

  • Add/extend TruBudget integration across persistence mappings, user management forms/actions, background status sync job, and UI affordances (closed notices / login toast).
  • Extend components/component-funding with status fields, reject reason, and component-funding document support (Wicket UI + Hibernate mappings + SQL views).
  • Update deployment/runtime tooling (Docker entrypoint patching, new ECR build workflow, deploy workflow updates) and assorted stability fixes (GIS loading fallback, Unicode import test, etc.).

Reviewed changes

Copilot reviewed 167 out of 171 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
amp/TEMPLATE/ampTemplate/site-config.xml Update AMP version/release date metadata.
amp/TEMPLATE/ampTemplate/gisModule/dev/app/js/amp/sidebar/layers/views/statistical-data-view.js Render subsections even if indicators fail to load.
amp/TEMPLATE/ampTemplate/gisModule/dev/app/js/amp/map/views/main-view.js Guard default-gis-country against null and normalize case.
amp/TEMPLATE/ampTemplate/gisModule/dev/app/js/amp/data/collections/indicator-collection.js Reject indicator deferred on fetch failures (warn + reject).
amp/src/test/java/org/digijava/module/aim/util/DynLocationManagerUtilTest.java Add tests for Unicode-normalization parent matching + overwrite behavior.
amp/src/main/webapp/WEB-INF/moduleConfig/digi-common.xml Register new Hibernate-mapped TruBudget/component entities.
amp/src/main/webapp/WEB-INF/jsp/aim/view/viewGlobalSettings.jsp Add “trubudget” settings section; rename title to “Global Settings”.
amp/src/main/webapp/WEB-INF/jsp/aim/view/organisationManager.jsp Add bulk-select + “Delete Selected” UI for admins.
amp/src/main/webapp/WEB-INF/jsp/aim/view/myDesktop.jsp Show TruBudget login toast from session-scoped message.
amp/src/main/webapp/WEB-INF/jsp/aim/view/activitypreview/planningSection.jsp Remove several planning preview lines (RFE/evaluation dates).
amp/src/main/webapp/WEB-INF/jsp/aim/view/activitypreview/componentsSection.jsp Show component funding status + reject reason in preview.
amp/src/main/webapp/gis/boundaries/CM/list.json Add Cameroon boundaries metadata list.
amp/src/main/resources/xmlpatches/general/views/v_ni_component_funding.xml Update view to include statuses and exclude rejected items.
amp/src/main/resources/xmlpatches/general/views/v_components.xml Exclude rejected components in view.
amp/src/main/resources/xmlpatches/4.0/Update-Import-Tables-v4.xml Fix malformed closing tag.
amp/src/main/resources/xmlpatches/4.0/AMP-FOOTER-TEXT-Add-Footer-Text-Setting.xml Add “Footer Text” global setting patch.
amp/src/main/resources/xmlpatches/4.0/AMP-31165-Add-Trubudget-Status-Sync-Job.xml Add Quartz job class row for TruBudget status sync.
amp/src/main/resources/xmlpatches/4.0/AMP-31161-add-trubudget-username-column.xml Add tru_budget_user_name column + unique index.
amp/src/main/resources/xmlpatches/4.0/AMP-31085-add-trubudget-bulk-import-user-setting.xml Add global setting + view for TruBudget bulk import user selection.
amp/src/main/resources/xmlpatches/4.0/AMP-31085-Add-Trubudget-Bulk-Import-Job-v1.xml Add Quartz job class row for TruBudget bulk import job.
amp/src/main/resources/xmlpatches/4.0/AMP-30754-Recreate-views-on-next-server-starters.xml Add patch to flag view recreation on restart.
amp/src/main/resources/org/digijava/module/trubudget/dbentity/TruBudgetActivity.hbm.xml New Hibernate mapping for TruBudget activity link table.
amp/src/main/resources/org/digijava/module/trubudget/dbentity/AmpComponentTruSubProject.hbm.xml New Hibernate mapping for component↔subproject link table.
amp/src/main/resources/org/digijava/module/trubudget/dbentity/AmpComponentFundingTruWF.hbm.xml New Hibernate mapping for component funding↔workflow item link table.
amp/src/main/resources/org/digijava/module/aim/dbentity/AmpComponentFundingDocument.hbm.xml New Hibernate mapping for component-funding documents.
amp/src/main/resources/org/digijava/module/aim/dbentity/AmpComponentFunding.hbm.xml Add new columns/relations (status, reject reason, docs).
amp/src/main/resources/org/digijava/module/aim/dbentity/AmpComponent.hbm.xml Add stable id + component status mapping.
amp/src/main/resources/org/digijava/module/aim/dbentity/AmpActivityVersion.hbm.xml Clarify cascade semantics for categories set.
amp/src/main/resources/org/digijava/kernel/user/User.hbm.xml Add TruBudget fields + intents many-to-many mapping.
amp/src/main/resources/org/digijava/kernel/user/TruBudgetntentGroup.hbm.xml New mapping for TruBudget intent group.
amp/src/main/resources/org/digijava/kernel/entity/trubudget/TruBudgetIntent.hbm.xml New mapping for TruBudget intent entity.
amp/src/main/resources/org/digijava/kernel/entity/trubudget/SubIntents.hbm.xml New mapping for TruBudget sub-intents entity.
amp/src/main/resources/org/dgfoundation/amp/onepager/components/fields/AmpComponentFundingNewResourceFieldPanel.html New Wicket markup for component funding document upload.
amp/src/main/resources/org/dgfoundation/amp/onepager/components/fields/AmpComponentField.html Add TruBudget “closed” notice placeholder.
amp/src/main/resources/org/dgfoundation/amp/onepager/components/features/tables/AmpComponentsFundingFormTableFeature.html Add status/reject reason + documents panels to component funding UI.
amp/src/main/resources/org/dgfoundation/amp/onepager/components/features/tables/AmpComponentIdentificationFormTableFeature.html Add component status field to component identification UI.
amp/src/main/resources/org/dgfoundation/amp/onepager/components/features/tables/AmpComponentFundingResourcesTableFeature.html New Wicket markup for listing component funding documents.
amp/src/main/resources/org/dgfoundation/amp/onepager/components/features/AmpActivityFormFeature.html Add TruBudget confirmation/info modals + closed notice placeholder.
amp/src/main/resources/java/resources/application.properties Add bulk-delete org manager messages.
amp/src/main/resources/hibernate.cfg.xml Rename schema auto-update property key.
amp/src/main/resources/applicationContext.xml Register WebClient + Reactor connector beans.
amp/src/main/java/org/digijava/module/um/model/TruUserData.java New TruBudget user DTO (contains password field).
amp/src/main/java/org/digijava/module/um/model/TruRevokePermissionRequest.java New DTO for revoke permission request.
amp/src/main/java/org/digijava/module/um/model/TruRefreshTokenRequest.java New DTO for refresh token request.
amp/src/main/java/org/digijava/module/um/model/TruLoginResponse.java New DTO for login response (contains token fields).
amp/src/main/java/org/digijava/module/um/model/TruLoginRequest.java New DTO for login request.
amp/src/main/java/org/digijava/module/um/model/TruGrantPermissionRequest.java New DTO for grant permission request.
amp/src/main/java/org/digijava/module/um/form/ViewEditUserForm.java Add TruBudget fields/intents to edit-user form.
amp/src/main/java/org/digijava/module/um/form/UserRegisterForm.java Add TruBudget fields/intents to registration form.
amp/src/main/java/org/digijava/module/um/form/AddUserForm.java Add TruBudget fields/intents to add-user form.
amp/src/main/java/org/digijava/module/um/action/UserRegister.java Populate TruBudget data during user registration.
amp/src/main/java/org/digijava/module/um/action/RegisterUser.java Validate/set TruBudget username/password/intents on register flow.
amp/src/main/java/org/digijava/module/um/action/AddUser.java Populate TruBudget settings/intents on add-user UI init.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/WFItemGrantRevokePermModel.java New workflow-item permission DTO.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/ValidateWFDocumentModel.java New DTO for workflow document validation.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/EditWFItemModel.java New DTO for workflow item edits.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/CreateWFResponseModel.java New DTO for workflow create response.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/CloseWFItemModel.java New DTO for workflow item close/reject.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/AssignWFItemModel.java New DTO for workflow item assignment.
amp/src/main/java/org/digijava/module/trubudget/model/subproject/SubProjectViewDetailsModel.java New DTO for subproject details view.
amp/src/main/java/org/digijava/module/trubudget/model/subproject/SubProjectGrantRevokePermModel.java New DTO for subproject permissions.
amp/src/main/java/org/digijava/module/trubudget/model/subproject/ReorderWorkFlowItemsModel.java New DTO for workflow reorder.
amp/src/main/java/org/digijava/module/trubudget/model/subproject/EditSubProjectModel.java New DTO for subproject edits.
amp/src/main/java/org/digijava/module/trubudget/model/subproject/EditSubProjectedBudgetModel.java New DTO for subproject projected budget edits.
amp/src/main/java/org/digijava/module/trubudget/model/subproject/CloseSubProjectModel.java New DTO for subproject close.
amp/src/main/java/org/digijava/module/trubudget/model/subproject/AssignSubProjectModel.java New DTO for subproject assignment.
amp/src/main/java/org/digijava/module/trubudget/model/project/ProjectViewDetailsModel.java New DTO for project details view.
amp/src/main/java/org/digijava/module/trubudget/model/project/ProjectGrantRevokePermModel.java New DTO for project permissions.
amp/src/main/java/org/digijava/module/trubudget/model/project/EditProjectModel.java New DTO for project edits.
amp/src/main/java/org/digijava/module/trubudget/model/project/EditProjectedBudgetModel.java New DTO for project projected budget edits.
amp/src/main/java/org/digijava/module/trubudget/model/project/CreateSubProjectModel.java New DTO for creating subprojects.
amp/src/main/java/org/digijava/module/trubudget/model/project/CreateProjectModel.java New DTO for creating projects.
amp/src/main/java/org/digijava/module/trubudget/model/project/CloseProjectModel.java New DTO for project close.
amp/src/main/java/org/digijava/module/trubudget/model/project/AssignProjectModel.java New DTO for project assignment.
amp/src/main/java/org/digijava/module/trubudget/jobs/TruBudgetStatusSyncJob.java New scheduled job to sync closed status from TruBudget into AMP DB.
amp/src/main/java/org/digijava/module/trubudget/dbentity/TruBudgetActivity.java New JPA entity for TruBudget activity link table.
amp/src/main/java/org/digijava/module/trubudget/dbentity/AmpComponentTruSubProject.java New JPA entity for component↔subproject link table.
amp/src/main/java/org/digijava/module/trubudget/dbentity/AmpComponentFundingTruWF.java New JPA entity for component funding↔workflow item link table.
amp/src/main/java/org/digijava/module/contentrepository/helper/NodeWrapper.java Handle missing/empty titles; minor cleanup.
amp/src/main/java/org/digijava/module/categorymanager/util/CategoryConstants.java Add component statuses/funding statuses + document category keys/values.
amp/src/main/java/org/digijava/module/aim/util/LocationUtil.java Comment out flush call (left as comment).
amp/src/main/java/org/digijava/module/aim/util/ActivityVersionUtil.java Refactor initialization of collection getters via helper.
amp/src/main/java/org/digijava/module/aim/startup/WebClientFactoryBean.java Add FactoryBean to create WebClient.
amp/src/main/java/org/digijava/module/aim/startup/QuartzStartupListener.java Auto-schedule TruBudget status sync job when enabled.
amp/src/main/java/org/digijava/module/aim/startup/AmpBackgroundActivitiesUtil.java Add validator users to translators group as well.
amp/src/main/java/org/digijava/module/aim/helper/GlobalSettingsConstants.java Add Footer Text + TruBudget Bulk Import User keys.
amp/src/main/java/org/digijava/module/aim/helper/FundingDetail.java Add component funding status + reject reason to helper.
amp/src/main/java/org/digijava/module/aim/form/OrgManagerForm.java Add selectedOrgIds binding for bulk org delete.
amp/src/main/java/org/digijava/module/aim/form/DataImporterForm.java Add location replacement + recording org defaults.
amp/src/main/java/org/digijava/module/aim/dbentity/AmpComponentFundingDocument.java New JPA entity for component-funding documents.
amp/src/main/java/org/digijava/module/aim/dbentity/AmpComponentFunding.java Add status, reject reason, stable id, and docs collection (plus formatter).
amp/src/main/java/org/digijava/module/aim/dbentity/AmpComponent.java Add stable id + component status.
amp/src/main/java/org/digijava/module/aim/auth/AmpPostLoginAction.java Trigger TruBudget login in background and set toast message.
amp/src/main/java/org/digijava/module/aim/annotations/interchange/ActivityFieldsConstants.java Add constants for component/component funding status/docs.
amp/src/main/java/org/digijava/module/aim/action/ShowUserRegister.java Populate TruBudget enablement flag + intents on registration screen.
amp/src/main/java/org/digijava/module/aim/action/RegisterUser.java Populate TruBudget data during registration flow.
amp/src/main/java/org/digijava/module/aim/action/OrganisationManager.java Implement bulk delete with constraint checks + messages.
amp/src/main/java/org/digijava/module/aim/action/Login.java Trigger TruBudget login during login flow.
amp/src/main/java/org/digijava/module/aim/action/EditActivity.java Include component funding status + reject reason when building funding detail.
amp/src/main/java/org/digijava/module/aim/action/dataimporter/ViewImportProgress.java Add access control (admin/team head/approver) before showing progress.
amp/src/main/java/org/digijava/module/aim/action/dataimporter/util/ImporterConstants.java Add new importer constants (recording org/internal id/proposed dates).
amp/src/main/java/org/digijava/module/aim/action/dataimporter/model/ImplementingAgency.java New model class with equality on organization.
amp/src/main/java/org/digijava/kernel/user/User.java Add TruBudget fields + intents set to kernel User model.
amp/src/main/java/org/digijava/kernel/user/TruBudgetIntentGroup.java New POJO for intent group (annotations commented out).
amp/src/main/java/org/digijava/kernel/user/SqlStartupListener.java New (commented) startup listener for schema initialization.
amp/src/main/java/org/digijava/kernel/entity/trubudget/TruBudgetIntent.java New JPA entity for TruBudget intent.
amp/src/main/java/org/digijava/kernel/entity/trubudget/SubIntents.java New JPA entity for TruBudget sub-intents.
amp/src/main/java/org/digijava/kernel/ampapi/postgis/util/QueryUtil.java Fix private indicator query join condition.
amp/src/main/java/org/digijava/kernel/ampapi/endpoints/security/SecurityService.java Allow footer text override via global setting.
amp/src/main/java/org/digijava/kernel/ampapi/endpoints/security/dto/LayoutInformation.java Add footerOverride field.
amp/src/main/java/org/digijava/kernel/ampapi/endpoints/gis/services/LocationService.java Remove unused import.
amp/src/main/java/org/digijava/kernel/ampapi/endpoints/activity/ActivityImporter.java Adjust SaveContext for data importer; initialize activity before clone.
amp/src/main/java/org/dgfoundation/amp/onepager/util/SaveContext.java Add closeProjectOnTruBudget flag and dataImporter context helper.
amp/src/main/java/org/dgfoundation/amp/onepager/OnePagerUtil.java Add JS toggle helper for component funding children.
amp/src/main/java/org/dgfoundation/amp/onepager/OnePagerConst.java Add metadata keys + toggle JS for component-funding resources.
amp/src/main/java/org/dgfoundation/amp/onepager/helper/TemporaryDocument.java Default title string set.
amp/src/main/java/org/dgfoundation/amp/onepager/helper/TemporaryComponentFundingDocument.java New temp doc type for component funding documents.
amp/src/main/java/org/dgfoundation/amp/onepager/components/upload/FileUploadBehavior.js Add empty-file and title checks during upload initiation.
amp/src/main/java/org/dgfoundation/amp/onepager/components/upload/FileUploadBehavior.java Add translated message for empty-file upload rejection.
amp/src/main/java/org/dgfoundation/amp/onepager/components/fields/AmpComponentField.java Disable component editing if TruBudget subproject is closed.
amp/src/main/java/org/dgfoundation/amp/onepager/components/fields/AmpCategoryFieldPanel.java Minor refactor (return directly).
amp/src/main/java/org/dgfoundation/amp/onepager/components/features/tables/AmpResourcesFormTableFeature.java Null-safety and iteration refactor for resources list.
amp/src/main/java/org/dgfoundation/amp/onepager/components/features/tables/AmpComponentIdentificationFormTableFeature.java Add component status select field to form table.
amp/src/main/java/org/dgfoundation/amp/onepager/components/features/subsections/AmpComponentsFundingSubsectionFeature.java Default new component funding status + generate stable UUID.
amp/src/main/java/org/dgfoundation/amp/onepager/components/features/sections/AmpComponentsFormSectionFeature.java Default new component status; generic cleanup.
amp/src/main/java/org/dgfoundation/amp/onepager/components/features/saveNavigationPanel.js Add TruBudget close/closed modals JS handlers.
amp/src/main/java/org/dgfoundation/amp/menu/MenuItemsProcessor.java Restrict data-importer menu visibility to authorized users.
amp/src/main/java/org/dgfoundation/amp/menu/MenuConstants.java Add menu constants for data importer items.
amp/src/main/java/org/dgfoundation/amp/aitranslation/CachedMachineTranslationService.java Migrate criteria usage (but currently broken predicate).
amp/pom.xml Set version to 4.0; add reactor-netty + spring-webflux deps.
amp/Dockerfile Add runtime JDBC args; use entrypoint patching; add psql client.
amp/docker/entrypoint.sh New entrypoint to patch JDBC/build label and optionally patch footer text in DB.
amp/.env.example New example env file for AMP+TruBudget docker deployment.
.gitmodules Add deploy submodule.
.github/workflows/deploy.yml Add new deploy targets + free disk step.
.github/workflows/build-push-ecr.yml Add workflow to build+push AMP image to ECR.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +79 to +85
Session session = PersistenceManager.getRequestDBSession();
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<MachineTranslation> criteriaQuery = builder.createQuery(MachineTranslation.class);
Root<MachineTranslation> root = criteriaQuery.from(MachineTranslation.class);
criteriaQuery.select(root).where(builder.equal(root.get("sourceLanguage"), srcLang),builder.equal(root.get("targetLanguage"), destLang),
builder.equal(root.get("text"), batchContents));

<property name="jdbc.use_streams_for_binary">true</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.hbm2ddl.auto">update</property>
Comment on lines +109 to +117
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", displayName='" + displayName + '\'' +
", organization='" + organization + '\'' +
", password='" + password + '\'' +
'}';
}
Comment on lines +143 to +154
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", displayName='" + displayName + '\'' +
", organization='" + organization + '\'' +
", allowedIntents=" + allowedIntents +
", groups=" + groups +
", token='" + token + '\'' +
", refreshToken='" + refreshToken + '\'' +
'}';
}
Comment on lines +290 to +292
public String getComponentFundingStatusFormatted() {
return componentFundingStatus.getValue().toLowerCase();
}
Comment thread amp/docker/entrypoint.sh
Comment on lines +60 to +65
psql -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d "${DB_NAME}" <<SQL
UPDATE dg_message
SET message_utf8 = '${AMP_FOOTER_TEXT}',
orig_message = '${AMP_FOOTER_TEXT}'
WHERE message_key = 'Developed in partnership with OECD, UNDP, WB, Government of Ethiopia and DG';
SQL
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.

2 participants