Skip to content

AMP-31085: Update TruBudget Branch with latest develolp - #4454

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

AMP-31085: Update TruBudget Branch with latest develolp#4454
brianbrix wants to merge 119 commits into
developfrom
task/AMP-31085/Update-TruBudget-Branch-with-latest-develolp

Conversation

@brianbrix

Copy link
Copy Markdown
Contributor

No description provided.

@brianbrix
brianbrixforce-pushed the task/AMP-31085/Update-TruBudget-Branch-with-latest-develolp branch from c683f54 to 178b95fCompareJanuary 21, 2026 08:43
@brianbrix
brianbrixforce-pushed the task/AMP-31085/Update-TruBudget-Branch-with-latest-develolp branch from 4da52a1 to 5ea7004CompareJanuary 21, 2026 13:09
@brianbrix
brianbrixforce-pushed the task/AMP-31085/Update-TruBudget-Branch-with-latest-develolp branch from 742991e to 031202aCompareApril 24, 2026 04:06
…th-latest-develolp
# Conflicts:
#	amp/Dockerfile
CopilotAI review requested due to automatic review settings July 15, 2026 11:42

CopilotAI 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 TruBudget integration branch by bringing in a large set of changes spanning deployment (Docker/ECR), database schema/view updates, TruBudget user management, component funding/status/document enhancements, GIS boundary assets, and importer/access-control adjustments across the AMP codebase.

Changes:

  • Adds/updates TruBudget integration flows (user enablement, intents/permissions, login feedback toast, bulk import setting/job) plus supporting entities/mappings.
  • Extends components/component funding with statuses, reject reasons, and funding documents (UI + entities + DB views/patches).
  • Introduces Docker-based deployment assets (compose, entrypoint, backup) and CI workflows for building/pushing to ECR.

Reviewed changes

Copilot reviewed 147 out of 149 changed files in this pull request and generated 10 comments.

Show a summary per file
FileDescription
docker-compose.ymlAdds a minimal AMP stack with internal PostGIS DB and ECR-based AMP image deployment.
backup.shAdds DB + uploads backup script with retention pruning.
amp/src/test/java/org/digijava/module/aim/util/DynLocationManagerUtilTest.javaAdds tests for unicode-normalized location import and overwrite behavior.
amp/src/main/webapp/WEB-INF/moduleConfig/digi-common.xmlRegisters additional Hibernate-mapped classes (incl. TruBudget entities).
amp/src/main/webapp/WEB-INF/jsp/um/view/viewEditUser.jspAdds TruBudget user fields + client-side validation/toggling in edit-user UI.
amp/src/main/webapp/WEB-INF/jsp/um/view/addUser.jspAdds TruBudget user fields + client-side validation/toggling in add-user UI.
amp/src/main/webapp/WEB-INF/jsp/aim/view/viewGlobalSettings.jspAdds TruBudget section and renames page heading to “Global Settings”.
amp/src/main/webapp/WEB-INF/jsp/aim/view/myDesktop.jspAdds post-login TruBudget toast notification rendering.
amp/src/main/webapp/WEB-INF/jsp/aim/view/activitypreview/planningSection.jspRemoves several planning preview fields.
amp/src/main/webapp/WEB-INF/jsp/aim/view/activitypreview/componentsSection.jspShows component funding status and reject reason in preview section.
amp/src/main/webapp/gis/boundaries/CM/list.jsonAdds Cameroon boundary layer metadata list.
amp/src/main/resources/xmlpatches/general/views/v_ni_component_funding.xmlUpdates view to exclude “Rejected” component/funding statuses.
amp/src/main/resources/xmlpatches/general/views/v_components.xmlUpdates view to exclude “Rejected” components.
amp/src/main/resources/xmlpatches/4.0/AMP-31161-add-trubudget-username-column.xmlAdds TruBudget username column + unique index to dg_user.
amp/src/main/resources/xmlpatches/4.0/AMP-31085-add-trubudget-bulk-import-user-setting.xmlAdds global setting + view for TruBudget bulk-import user selection.
amp/src/main/resources/xmlpatches/4.0/AMP-31085-Add-Trubudget-Bulk-Import-Job-v1.xmlRegisters a Quartz job class for TruBudget bulk import.
amp/src/main/resources/xmlpatches/4.0/AMP-30754-Recreate-views-on-next-server-starters.xmlAdds patch to force view recreation on next restart.
amp/src/main/resources/org/digijava/module/trubudget/dbentity/TruBudgetActivity.hbm.xmlAdds Hibernate mapping for TruBudgetActivity.
amp/src/main/resources/org/digijava/module/trubudget/dbentity/AmpComponentTruSubProject.hbm.xmlAdds Hibernate mapping for component↔TruBudget subproject link table.
amp/src/main/resources/org/digijava/module/trubudget/dbentity/AmpComponentFundingTruWF.hbm.xmlAdds Hibernate mapping for component funding↔TruBudget workflow links.
amp/src/main/resources/org/digijava/module/aim/dbentity/AmpComponentFundingDocument.hbm.xmlAdds Hibernate mapping for component funding documents table.
amp/src/main/resources/org/digijava/module/aim/dbentity/AmpComponentFunding.hbm.xmlExtends component funding mapping with status, reject reason, UUID, and docs set.
amp/src/main/resources/org/digijava/module/aim/dbentity/AmpComponent.hbm.xmlExtends component mapping with component status.
amp/src/main/resources/org/digijava/kernel/user/User.hbm.xmlAdds TruBudget fields + intents m2m mapping to user.
amp/src/main/resources/org/digijava/kernel/user/TruBudgetntentGroup.hbm.xmlAdds Hibernate mapping for TruBudget intent groups.
amp/src/main/resources/org/digijava/kernel/entity/trubudget/TruBudgetIntent.hbm.xmlAdds Hibernate mapping for TruBudget intents + user m2m.
amp/src/main/resources/org/digijava/kernel/entity/trubudget/SubIntents.hbm.xmlAdds Hibernate mapping for TruBudget sub-intents.
amp/src/main/resources/org/dgfoundation/amp/onepager/components/fields/AmpComponentFundingNewResourceFieldPanel.htmlAdds Wicket markup for component funding document upload panel.
amp/src/main/resources/org/dgfoundation/amp/onepager/components/features/tables/AmpComponentsFundingFormTableFeature.htmlAdds status/reject reason + documents widgets to funding row UI.
amp/src/main/resources/org/dgfoundation/amp/onepager/components/features/tables/AmpComponentIdentificationFormTableFeature.htmlAdds component status field placeholder in component identification UI.
amp/src/main/resources/org/dgfoundation/amp/onepager/components/features/tables/AmpComponentFundingResourcesTableFeature.htmlAdds Wicket table markup for component funding documents list.
amp/src/main/resources/org/dgfoundation/amp/onepager/components/features/AmpActivityFormFeature.htmlAdds TruBudget close/already-closed panels to activity form markup.
amp/src/main/resources/hibernate.cfg.xmlRenames hbm2ddl property key to hibernate.hbm2ddl.auto.
amp/src/main/resources/applicationContext.xmlAdds Spring beans for WebClient and connector.
amp/src/main/java/org/digijava/module/um/model/TruUserData.javaAdds TruBudget user data model.
amp/src/main/java/org/digijava/module/um/model/TruRevokePermissionRequest.javaAdds TruBudget revoke-permission request model.
amp/src/main/java/org/digijava/module/um/model/TruRefreshTokenRequest.javaAdds TruBudget refresh-token request model.
amp/src/main/java/org/digijava/module/um/model/TruLoginResponse.javaAdds TruBudget login response model.
amp/src/main/java/org/digijava/module/um/model/TruLoginRequest.javaAdds TruBudget login request model.
amp/src/main/java/org/digijava/module/um/model/TruGrantPermissionRequest.javaAdds TruBudget grant-permission request model.
amp/src/main/java/org/digijava/module/um/form/ViewEditUserForm.javaAdds TruBudget fields/intents to edit-user Struts form.
amp/src/main/java/org/digijava/module/um/form/UserRegisterForm.javaAdds TruBudget fields/intents to user registration form.
amp/src/main/java/org/digijava/module/um/form/AddUserForm.javaAdds TruBudget fields/intents to add-user form and reset defaults.
amp/src/main/java/org/digijava/module/um/action/ViewEditUser.javaAdds TruBudget settings + intents population + validation during edit/save.
amp/src/main/java/org/digijava/module/um/action/UserRegister.javaEncrypts/stores TruBudget password + intents at registration time (UM).
amp/src/main/java/org/digijava/module/um/action/RegisterUser.javaAdds TruBudget username validation + encryption + intents handling.
amp/src/main/java/org/digijava/module/um/action/AddUser.javaLoads TruBudget settings/intents into add-user flow.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/WorkflowItemDetailsModel.javaAdds TruBudget workflow item details model.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/WorkflowItem.javaAdds TruBudget workflow item model.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/WFItemGrantRevokePermModel.javaAdds model for workflow-item permission grant/revoke.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/ValidateWFDocumentModel.javaAdds model for workflow document validation request.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/EditWFItemModel.javaAdds model for editing a workflow item.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/CreateWFResponseModel.javaAdds model for workflow item creation response.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/CloseWFItemModel.javaAdds model for closing/rejecting workflow items.
amp/src/main/java/org/digijava/module/trubudget/model/workflowitem/AssignWFItemModel.javaAdds model for assigning workflow items.
amp/src/main/java/org/digijava/module/trubudget/model/subproject/SubProjectGrantRevokePermModel.javaAdds model for subproject permission grant/revoke.
amp/src/main/java/org/digijava/module/trubudget/model/subproject/ReorderWorkFlowItemsModel.javaAdds model for reordering workflow items.
amp/src/main/java/org/digijava/module/trubudget/model/subproject/EditSubProjectModel.javaAdds model for editing a subproject.
amp/src/main/java/org/digijava/module/trubudget/model/subproject/EditSubProjectedBudgetModel.javaAdds model for editing projected subproject budgets.
amp/src/main/java/org/digijava/module/trubudget/model/subproject/CloseSubProjectModel.javaAdds model for closing a subproject.
amp/src/main/java/org/digijava/module/trubudget/model/subproject/AssignSubProjectModel.javaAdds model for assigning a subproject.
amp/src/main/java/org/digijava/module/trubudget/model/project/ProjectGrantRevokePermModel.javaAdds model for project permission grant/revoke.
amp/src/main/java/org/digijava/module/trubudget/model/project/EditProjectModel.javaAdds model for editing a project.
amp/src/main/java/org/digijava/module/trubudget/model/project/EditProjectedBudgetModel.javaAdds model for editing projected budgets.
amp/src/main/java/org/digijava/module/trubudget/model/project/CreateSubProjectModel.javaAdds model for creating TruBudget subprojects.
amp/src/main/java/org/digijava/module/trubudget/model/project/CreateProjectModel.javaAdds model for creating TruBudget projects.
amp/src/main/java/org/digijava/module/trubudget/model/project/CloseProjectModel.javaAdds model for closing a TruBudget project.
amp/src/main/java/org/digijava/module/trubudget/model/project/AssignProjectModel.javaAdds model for assigning a TruBudget project.
amp/src/main/java/org/digijava/module/trubudget/dbentity/TruBudgetActivity.javaAdds entity for AMP↔TruBudget activity linkage.
amp/src/main/java/org/digijava/module/trubudget/dbentity/AmpComponentTruSubProject.javaAdds entity for component↔TruBudget subproject linkage.
amp/src/main/java/org/digijava/module/trubudget/dbentity/AmpComponentFundingTruWF.javaAdds entity for component funding↔TruBudget workflow linkage.
amp/src/main/java/org/digijava/module/contentrepository/helper/NodeWrapper.javaTweaks resource node naming/versioning and year-of-publication date set logic.
amp/src/main/java/org/digijava/module/categorymanager/util/CategoryConstants.javaAdds constants and hard-coded values for component statuses and docs.
amp/src/main/java/org/digijava/module/aim/util/LocationUtil.javaComments out an explicit session flush in location save.
amp/src/main/java/org/digijava/module/aim/util/DynLocationManagerUtil.javaAdds unicode normalization + overwrite behavior adjustments in location import.
amp/src/main/java/org/digijava/module/aim/util/ActivityVersionUtil.javaRefactors collection initialization logic into a helper method.
amp/src/main/java/org/digijava/module/aim/startup/WebClientFactoryBean.javaAdds Spring FactoryBean producing a WebClient instance.
amp/src/main/java/org/digijava/module/aim/startup/AmpBackgroundActivitiesUtil.javaAdds newly created validator users to translator group as well.
amp/src/main/java/org/digijava/module/aim/helper/GlobalSettingsConstants.javaAdds constant for “TruBudget Bulk Import User” global setting name.
amp/src/main/java/org/digijava/module/aim/helper/FundingDetail.javaAdds fields for component funding status and reject reason.
amp/src/main/java/org/digijava/module/aim/form/DataImporterForm.javaAdds flags/fields for location replacement + recording org default.
amp/src/main/java/org/digijava/module/aim/dbentity/AmpComponentFundingDocument.javaAdds entity for component funding documents.
amp/src/main/java/org/digijava/module/aim/dbentity/AmpComponentFunding.javaAdds status, reject reason, UUID, and docs collection + getters.
amp/src/main/java/org/digijava/module/aim/dbentity/AmpComponent.javaAdds component status field + Interchangeable metadata.
amp/src/main/java/org/digijava/module/aim/auth/AmpPostLoginAction.javaAdds async TruBudget login attempt + toast messaging via session attributes.
amp/src/main/java/org/digijava/module/aim/annotations/interchange/ActivityFieldsConstants.javaAdds Interchange field labels for component status/funding status/docs.
amp/src/main/java/org/digijava/module/aim/action/ShowUserRegister.javaLoads TruBudget settings/intents into registration view.
amp/src/main/java/org/digijava/module/aim/action/RegisterUser.javaStores TruBudget password/intents during AIM registration flow.
amp/src/main/java/org/digijava/module/aim/action/Login.javaTriggers TruBudget login during legacy login flow.
amp/src/main/java/org/digijava/module/aim/action/EditActivity.javaAdds component funding status/reject reason into view model.
amp/src/main/java/org/digijava/module/aim/action/dataimporter/ViewImportProgress.javaRestricts importer progress access to admins/team heads/approvers.
amp/src/main/java/org/digijava/module/aim/action/dataimporter/util/ImporterConstants.javaAdds new constants for recording org and proposed/agreement dates, etc.
amp/src/main/java/org/digijava/module/aim/action/dataimporter/model/ImplementingAgency.javaAdds ImplementingAgency model with percentage and equality semantics.
amp/src/main/java/org/digijava/kernel/user/User.javaAdds TruBudget fields/intents to core User model.
amp/src/main/java/org/digijava/kernel/user/TruBudgetIntentGroup.javaAdds Java model for intent group (mapping currently commented).
amp/src/main/java/org/digijava/kernel/user/SqlStartupListener.javaAdds (commented) startup listener for schema initialization.
amp/src/main/java/org/digijava/kernel/entity/trubudget/TruBudgetIntent.javaAdds entity for TruBudget intent.
amp/src/main/java/org/digijava/kernel/entity/trubudget/SubIntents.javaAdds entity for TruBudget sub-intents.
amp/src/main/java/org/digijava/kernel/ampapi/endpoints/gis/services/LocationService.javaRemoves unused Work import.
amp/src/main/java/org/digijava/kernel/ampapi/endpoints/activity/ActivityImporter.javaAdjusts save context for data importer + initializes activity before clone/update.
amp/src/main/java/org/dgfoundation/amp/onepager/util/SaveContext.javaAdds closeProjectOnTruBudget flag and a dataImporter context builder.
amp/src/main/java/org/dgfoundation/amp/onepager/OnePagerUtil.javaAdds toggle helper for component-funding child panels.
amp/src/main/java/org/dgfoundation/amp/onepager/OnePagerConst.javaAdds metadata keys and JS template for component funding doc toggling.
amp/src/main/java/org/dgfoundation/amp/onepager/helper/TemporaryDocument.javaSets a default title value for temporary documents.
amp/src/main/java/org/dgfoundation/amp/onepager/helper/TemporaryComponentFundingDocument.javaAdds temporary document helper for component funding docs.
amp/src/main/java/org/dgfoundation/amp/onepager/components/upload/FileUploadBehavior.jsAdds extra client checks for empty files and missing title.
amp/src/main/java/org/dgfoundation/amp/onepager/components/upload/FileUploadBehavior.javaAdds translated message for “empty file” validation.
amp/src/main/java/org/dgfoundation/amp/onepager/components/fields/AmpCategoryFieldPanel.javaMinor cleanup in category field model getter.
amp/src/main/java/org/dgfoundation/amp/onepager/components/features/tables/AmpResourcesFormTableFeature.javaFixes NPE risk and modernizes iteration patterns.
amp/src/main/java/org/dgfoundation/amp/onepager/components/features/tables/AmpComponentIdentificationFormTableFeature.javaAdds component status select field to component identification feature.
amp/src/main/java/org/dgfoundation/amp/onepager/components/features/subsections/AmpComponentsFundingSubsectionFeature.javaSets default funding status + UUID for new component fundings.
amp/src/main/java/org/dgfoundation/amp/onepager/components/features/sections/AmpComponentsFormSectionFeature.javaSets default component status and modernizes generics usage.
amp/src/main/java/org/dgfoundation/amp/onepager/components/features/saveNavigationPanel.jsAdds TruBudget close/already-closed panel show/hide JS.
amp/src/main/java/org/dgfoundation/amp/menu/MenuItemsProcessor.javaAdds role-based gating for data importer menu items.
amp/src/main/java/org/dgfoundation/amp/menu/MenuConstants.javaAdds constants for data importer menu items.
amp/src/main/java/org/dgfoundation/amp/aitranslation/CachedMachineTranslationService.javaRefactors cached-translation queries to JPA Criteria API.
amp/pom.xmlAdds reactor-netty and spring-webflux dependencies.
amp/DockerfileAdds runtime JDBC arg wiring, improves Maven caching, adds entrypoint, installs psql client.
amp/docker/entrypoint.shPatches context/site config at container start and optionally updates footer in DB.
amp/.env.exampleAdds env template for AMP+TruBudget Docker deployment.
.github/workflows/deploy.ymlAdds deployment targets and frees runner disk space before builds.
.github/workflows/build-push-ecr.ymlAdds a workflow to build and push AMP image to ECR.

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

Comment on lines +83 to +85
criteriaQuery.select(root).where(builder.equal(root.get("sourceLanguage"), srcLang),builder.equal(root.get("targetLanguage"), destLang),
builder.equal(root.get("text"), batchContents));

Comment on lines +182 to +183
Collection<TruBudgetIntent> intents = getTruBudgetIntents();
logger.info("Intents: "+intents);
if (intents != null) {
truBudgetIntents = getTruBudgetIntentsByName(intents);
}
logger.info("Intents: " + truBudgetIntents);
if (intents != null) {
truBudgetIntents = getTruBudgetIntentsByName(intents);
}
logger.info("Intents: " + truBudgetIntents);
if (intents != null) {
truBudgetIntents = getTruBudgetIntentsByName(intents);
}
logger.info("Intents: " + truBudgetIntents);
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
variables.put("uploadFailedMsg", TranslatorUtil.getTranslatedText("Upload failed! Please try again."));
variables.put("uploadStartedMsg", TranslatorUtil.getTranslatedText("Upload started, please wait..."));
variables.put("uploadFailedTooBigMsg", TranslatorUtil.getTranslatedText("The file size limit is {size} MB. This file exceeds the limit.").replace("{size}", maxFileSizeGS));
variables.put("uploadFailedTooSmallMsg", TranslatorUtil.getTranslatedText("This file is empty.Please upload a non-empty file."));
Comment on lines +35 to +40
} else if (data.title === '') {
alert("Document Title must be present.");
$('#uploadLabel').text("${uploadNoFileLabel}");
$(this).find('[role=fileUploadedMsg]').html('');
$(this).find('[role=fileUploadedMsg]').hide();
}
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 + '\'' +
'}';
}
@brianbrix
brianbrixforce-pushed the task/AMP-31085/Update-TruBudget-Branch-with-latest-develolp branch from df52651 to 1b2a5ffCompareAugust 3, 2026 18:12
Sign up for freeto 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.

3 participants

@brianbrix@jdeanquin-dg