From 7a8e1b9e47f7c9c756e08e24f901dac051040068 Mon Sep 17 00:00:00 2001 From: Benaissa BENARBIA <ben.benarbia@gmail.com> Date: Tue, 22 Jun 2021 15:48:20 +0200 Subject: [PATCH] [VAS] Item 8188 Ajout de configuration pour pouvoir effectuer des routages entre archives search et ingest (#318) * handle ingest routing to archives * remove mocked services for POC * add refererential settings Co-authored-by: bbenarbia <benaissa.benarbia@gmail.com> --- .../vitamui/commons/api/CommonConstants.java | 6 +++ .../templates/ui-ingest/application.yml.j2 | 8 ++++ .../templates/ui-portal/application.yml.j2 | 6 ++- .../ui-archive-search-application-dev.yml | 3 +- .../ui-archive-search-application-recette.yml | 3 +- .../vitamui/ui/commons/property/BaseUrl.java | 6 +++ .../commons/service/ApplicationService.java | 43 +++++++++++++------ .../src/app/modules/startup.service.ts | 36 ++++++++++------ ui/ui-frontend/package-lock.json | 2 +- .../ingest-preview.component.html | 4 +- .../ingest-preview.component.ts | 2 +- .../main/config/ui-ingest-application-dev.yml | 3 +- .../main/config/ui-portal-application-dev.yml | 3 ++ 13 files changed, 92 insertions(+), 33 deletions(-) diff --git a/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/CommonConstants.java b/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/CommonConstants.java index 1afb37b18..0c41fb043 100644 --- a/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/CommonConstants.java +++ b/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/CommonConstants.java @@ -193,6 +193,12 @@ public class CommonConstants { public static final String PORTAL_URL = "PORTAL_URL"; + public static final String ARCHIVES_SEARCH_URL = "ARCHIVES_SEARCH_URL"; + + public static final String INGEST_URL = "INGEST_URL"; + + public static final String REFERENTIAL_URL = "REFERENTIAL_URL"; + public static final String CAS_LOGIN_URL = "CAS_URL"; public static final String CAS_LOGOUT_URL = "CAS_LOGOUT_URL"; diff --git a/deployment/roles/vitamui/templates/ui-ingest/application.yml.j2 b/deployment/roles/vitamui/templates/ui-ingest/application.yml.j2 index 7a78b378a..f734e82d3 100644 --- a/deployment/roles/vitamui/templates/ui-ingest/application.yml.j2 +++ b/deployment/roles/vitamui/templates/ui-ingest/application.yml.j2 @@ -108,6 +108,14 @@ ui-ingest: {% else %} ingest: "{{ url_prefix }}/ingest" {% endif %} + +{% if vitamui.archive_search.base_url is defined %} + archives-search: "{{ vitamui.archive_search.base_url }}" +{% else %} + archives-search: "{{ url_prefix }}/archive-search" +{% endif %} + + portal-categories: {% for id, category in vitamui_defaults.portal_categories.items() %} {{ id }}: diff --git a/deployment/roles/vitamui/templates/ui-portal/application.yml.j2 b/deployment/roles/vitamui/templates/ui-portal/application.yml.j2 index 9fe48f17c..9862200b5 100644 --- a/deployment/roles/vitamui/templates/ui-portal/application.yml.j2 +++ b/deployment/roles/vitamui/templates/ui-portal/application.yml.j2 @@ -92,7 +92,8 @@ ui-portal: portal: "{{ url_prefix }}" # TODO OMA : revoir avec les redirections du RP admin-identity: "{{ url_prefix }}/identity-admin" # TODO OMA : revoir avec les redirections du RP identity: "{{ url_prefix }}/identity" # TODO OMA : revoir avec les redirections du RP - + archives-search: "{{ url_prefix }}/archives-search" # TODO OMA : revoir avec les redirections du RP + referential: "{{ url_prefix }}/referential" # TODO OMA : revoir avec les redirections du RP ui: url: "{{ url_prefix }}" redirect-url: ${ui.url}/${ui-prefix} @@ -101,6 +102,9 @@ ui: portal: "{{ vitamui.portal.base_url}}" admin-identity: "{{ vitamui.identity_admin.base_url }}" identity: "{{ vitamui.identity.base_url }}" + ingest: "{{ vitamui.ingest.base_url }}" + archives-search: "{{ vitamui.archive_search.base_url }}" + referential: "{{ vitamui.referential.base_url }}" ui: url: "{{ vitamui.portal.base_url }}" diff --git a/ui/ui-archive-search/src/main/config/ui-archive-search-application-dev.yml b/ui/ui-archive-search/src/main/config/ui-archive-search-application-dev.yml index 44067daff..3efd2757f 100644 --- a/ui/ui-archive-search/src/main/config/ui-archive-search-application-dev.yml +++ b/ui/ui-archive-search/src/main/config/ui-archive-search-application-dev.yml @@ -70,7 +70,8 @@ ui-archive-search: hostname-verification: false base-url: portal: "https://dev.vitamui.com:4200" - + archives-search: "https://dev.vitamui.com:4209/archive-search" + ingest: "https://dev.vitamui.com:4208/ingest" portal-categories: ingest_and_consultation: diff --git a/ui/ui-archive-search/src/main/config/ui-archive-search-application-recette.yml b/ui/ui-archive-search/src/main/config/ui-archive-search-application-recette.yml index b28fdf97f..a3ae35935 100644 --- a/ui/ui-archive-search/src/main/config/ui-archive-search-application-recette.yml +++ b/ui/ui-archive-search/src/main/config/ui-archive-search-application-recette.yml @@ -43,7 +43,8 @@ ui-archive-search: hostname-verification: false base-url: portal: "https://dev.vitamui.com" - + archives-search: "https://dev.vitamui.com:4209/archive-search" + ingest: "https://dev.vitamui.com:4208/ingest" portal-categories: ingest_and_consultation: diff --git a/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/property/BaseUrl.java b/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/property/BaseUrl.java index a31831351..e31b54354 100644 --- a/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/property/BaseUrl.java +++ b/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/property/BaseUrl.java @@ -47,6 +47,12 @@ public class BaseUrl { private String adminIdentity; + private String archivesSearch; + + private String ingest; + + private String referential; + private String identity; } diff --git a/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/service/ApplicationService.java b/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/service/ApplicationService.java index bd1483305..ba9790716 100644 --- a/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/service/ApplicationService.java +++ b/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/service/ApplicationService.java @@ -39,7 +39,11 @@ package fr.gouv.vitamui.ui.commons.service; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import fr.gouv.vitamui.commons.api.CommonConstants; -import fr.gouv.vitamui.commons.api.domain.*; +import fr.gouv.vitamui.commons.api.domain.ApplicationDto; +import fr.gouv.vitamui.commons.api.domain.Criterion; +import fr.gouv.vitamui.commons.api.domain.CriterionOperator; +import fr.gouv.vitamui.commons.api.domain.QueryDto; +import fr.gouv.vitamui.commons.api.domain.QueryOperator; import fr.gouv.vitamui.commons.api.enums.AttachmentType; import fr.gouv.vitamui.commons.api.logger.VitamUILogger; import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory; @@ -63,7 +67,11 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.*; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -111,8 +119,9 @@ public class ApplicationService extends AbstractCrudService<ApplicationDto> { private Map<String, List<String>> listEnableExternalIdentifiers; - public ApplicationService(final UIProperties properties, final CasLogoutUrl casLogoutUrl, final IamExternalRestClientFactory factory, - final BuildProperties buildProperties) { + public ApplicationService(final UIProperties properties, final CasLogoutUrl casLogoutUrl, + final IamExternalRestClientFactory factory, + final BuildProperties buildProperties) { this.properties = properties; this.casLogoutUrl = casLogoutUrl; this.buildProperties = buildProperties; @@ -140,7 +149,7 @@ public class ApplicationService extends AbstractCrudService<ApplicationDto> { } private Map<String, List<String>> getListEnableExternalIdentifiers() { - if(listEnableExternalIdentifiers == null) { + if (listEnableExternalIdentifiers == null) { listEnableExternalIdentifiers = autoConfigurationVitam.getTenants(); } return listEnableExternalIdentifiers; @@ -151,12 +160,13 @@ public class ApplicationService extends AbstractCrudService<ApplicationDto> { final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); final Map<String, List<String>> externalIdentifiers = getListEnableExternalIdentifiers(); - LOGGER.info("Reading list of external identifiers {}", externalIdentifiers == null ? "null" : externalIdentifiers.toString()); + LOGGER.info("Reading list of external identifiers {}", + externalIdentifiers == null ? "null" : externalIdentifiers.toString()); - if(externalIdentifiers != null) { - if(listEnableExternalIdentifiers.containsKey(tenantId)) { + if (externalIdentifiers != null) { + if (listEnableExternalIdentifiers.containsKey(tenantId)) { final List<String> enabledApplications = listEnableExternalIdentifiers.get(tenantId); - return(enabledApplications.contains(identifier)); + return (enabledApplications.contains(identifier)); } } @@ -170,18 +180,23 @@ public class ApplicationService extends AbstractCrudService<ApplicationDto> { public Map<String, Object> getConf() { final Map<String, Object> configurationData = new HashMap<>(); configurationData.put(CommonConstants.PORTAL_URL, properties.getBaseUrl().getPortal()); + configurationData.put(CommonConstants.ARCHIVES_SEARCH_URL, properties.getBaseUrl().getArchivesSearch()); + configurationData.put(CommonConstants.INGEST_URL, properties.getBaseUrl().getIngest()); + configurationData.put(CommonConstants.REFERENTIAL_URL, properties.getBaseUrl().getReferential()); configurationData.put(CommonConstants.CAS_LOGIN_URL, getCasLoginUrl()); configurationData.put(CommonConstants.CAS_LOGOUT_URL, casLogoutUrl.getValue()); configurationData.put(CommonConstants.UI_URL, uiUrl); - configurationData.put(CommonConstants.LOGOUT_REDIRECT_UI_URL, casLogoutUrl.getValueWithRedirection(uiRedirectUrl)); + configurationData + .put(CommonConstants.LOGOUT_REDIRECT_UI_URL, casLogoutUrl.getValueWithRedirection(uiRedirectUrl)); configurationData.put(CommonConstants.THEME_COLORS, properties.getThemeColors()); configurationData.put(CommonConstants.PORTAL_TITLE, properties.getPortalTitle()); configurationData.put(CommonConstants.PORTAL_MESSAGE, properties.getPortalMessage()); configurationData.put(CommonConstants.CUSTOMER, properties.getCustomer()); String versionRelease = properties.getVersionRelease(); if (StringUtils.isEmpty(versionRelease)) { - versionRelease = Stream.of(buildProperties.get(VERSION_RELEASE_KEY).split("\\" + DELIMITER)).limit(2).map(Object::toString) - .collect(Collectors.joining(DELIMITER)); + versionRelease = Stream.of(buildProperties.get(VERSION_RELEASE_KEY).split("\\" + DELIMITER)).limit(2) + .map(Object::toString) + .collect(Collectors.joining(DELIMITER)); } if (StringUtils.isNotEmpty(versionRelease)) { @@ -207,7 +222,9 @@ public class ApplicationService extends AbstractCrudService<ApplicationDto> { public String getBase64File(final String fileName, final String basePath) { if (StringUtils.isBlank(fileName) || StringUtils.isBlank(basePath)) { - LOGGER.warn(String.format("Logo information missing : cannot load logo with name \"%s\" in path \"%s\"", fileName, basePath)); + LOGGER.warn(String + .format("Logo information missing : cannot load logo with name \"%s\" in path \"%s\"", fileName, + basePath)); return null; } diff --git a/ui/ui-frontend-common/src/app/modules/startup.service.ts b/ui/ui-frontend-common/src/app/modules/startup.service.ts index d3c823758..ffa2eec71 100644 --- a/ui/ui-frontend-common/src/app/modules/startup.service.ts +++ b/ui/ui-frontend-common/src/app/modules/startup.service.ts @@ -37,26 +37,24 @@ import { Inject, Injectable } from '@angular/core'; import { Observable, Subject } from 'rxjs'; import { tap } from 'rxjs/operators'; -import { ApplicationService } from './application.service'; - import { ApplicationApiService } from './api/application-api.service'; import { SecurityApiService } from './api/security-api.service'; import { ApplicationId } from './application-id.enum'; +import { ApplicationService } from './application.service'; import { AuthService } from './auth.service'; import { WINDOW_LOCATION } from './injection-tokens'; import { Logger } from './logger/logger'; -import { AppConfiguration, AttachmentType, AuthUser, Color } from './models'; -import {ThemeService} from './theme.service'; +import { AppConfiguration, AttachmentType, AuthUser } from './models'; +import { ThemeService } from './theme.service'; const WARNING_DURATION = 2000; const CUSTOMER_TECHNICAL_REFERENT_KEY = 'technical-referent-email'; const CUSTOMER_WEBSITE_URL_KEY = 'website-url'; @Injectable({ - providedIn: 'root' + providedIn: 'root', }) export class StartupService { - private configurationData: AppConfiguration; userRefresh = new Subject<any>(); @@ -65,7 +63,6 @@ export class StartupService { private CURRENT_TENANT_IDENTIFIER: string; - constructor( private logger: Logger, private authService: AuthService, @@ -74,12 +71,14 @@ export class StartupService { private themeService: ThemeService, private applicationService: ApplicationService, @Inject(WINDOW_LOCATION) private location: any - ) { } + ) {} load(): Promise<any> { this.configurationData = null; - return this.applicationApi.getConfiguration().toPromise() + return this.applicationApi + .getConfiguration() + .toPromise() .then((data: any) => { this.configurationData = data; this.authService.loginUrl = this.configurationData.CAS_URL; @@ -95,7 +94,6 @@ export class StartupService { this.configurationData.LOGO = data[AttachmentType.Portal]; }) .then(() => { - let customerColorMap = null; if (this.authService.user.basicCustomer.graphicIdentity.hasCustomGraphicIdentity) { @@ -217,6 +215,21 @@ export class StartupService { return null; } + getArchivesSearchUrl(): string { + if (this.configurationLoaded()) { + return this.configurationData.ARCHIVES_SEARCH_URL; + } + + return null; + } + + getReferentialUrl(): string { + if (this.configurationLoaded()) { + return this.configurationData.REFERENTIAL_SEARCH_URL; + } + + return null; + } getConfigStringValue(key: string): string { if (this.configurationLoaded() && this.configurationData.hasOwnProperty(key)) { return this.configurationData[key]; @@ -234,7 +247,7 @@ export class StartupService { * @param url URL to be redirected to. */ redirect(url?: string) { - setTimeout(() => this.location.href = url ? url : this.getPortalUrl(), WARNING_DURATION); + setTimeout(() => (this.location.href = url ? url : this.getPortalUrl()), WARNING_DURATION); } getPlatformName(): string { @@ -264,5 +277,4 @@ export class StartupService { return customer[CUSTOMER_WEBSITE_URL_KEY]; } } - } diff --git a/ui/ui-frontend/package-lock.json b/ui/ui-frontend/package-lock.json index 20506252e..361cfc835 100644 --- a/ui/ui-frontend/package-lock.json +++ b/ui/ui-frontend/package-lock.json @@ -14701,7 +14701,7 @@ }, "ui-frontend-common": { "version": "file:../ui-frontend-common/ui-frontend-common-2.1.0.tgz", - "integrity": "sha512-7OSXs9OJwdXy0Qd+sBm32CFHrtc/hZFrvrB6hK3FtrtSV7+OCZKzzLjaMkHj4t6rRPiH+iqK9A5A0x9otOUfXA==", + "integrity": "sha512-OcDeeesZmKmzZGTkTCmsz+ukXYp149Tueq5EhmSGGRUNHuk5bRrvnD0gGclWlMu8cZM23MeOD74Ac1je8sk9Sg==", "requires": { "@angular/material-moment-adapter": "^10.2.3", "@ngx-translate/core": "^12.0.0", diff --git a/ui/ui-frontend/projects/ingest/src/app/ingest/ingest-preview/ingest-preview.component.html b/ui/ui-frontend/projects/ingest/src/app/ingest/ingest-preview/ingest-preview.component.html index e046bb244..8833cee54 100644 --- a/ui/ui-frontend/projects/ingest/src/app/ingest/ingest-preview/ingest-preview.component.html +++ b/ui/ui-frontend/projects/ingest/src/app/ingest/ingest-preview/ingest-preview.component.html @@ -11,7 +11,7 @@ <button mat-menu-item i18n="@@ingestPreviewDownloadATR" (click)="downloadATR()" [disabled]="ingestStatus(ingest) === 'En cours'" - >{{'INGEST_DETAIL.DOWNLOAD_ATR' | translate}} + >{{'INGEST_DETAIL.DOWNLOAD_ATR' | translate}} </button> <button mat-menu-item i18n="@@ingestPreviewGenerateDocX" (click)="generateODTreport()" matTooltip="{{'INGEST_DETAIL.DOWNLOAD_DOCX' | translate}}" matTooltipClass="vitamui-tooltip" @@ -29,6 +29,6 @@ <mat-tab label="{{'INGEST_DETAIL.INGEST_ERROR_DETAIL' | translate}}"> <app-ingest-errors-details-tab [ingest]="ingest"></app-ingest-errors-details-tab> </mat-tab> - + </mat-tab-group> </div> diff --git a/ui/ui-frontend/projects/ingest/src/app/ingest/ingest-preview/ingest-preview.component.ts b/ui/ui-frontend/projects/ingest/src/app/ingest/ingest-preview/ingest-preview.component.ts index c2e8ad2fe..b76f407ac 100644 --- a/ui/ui-frontend/projects/ingest/src/app/ingest/ingest-preview/ingest-preview.component.ts +++ b/ui/ui-frontend/projects/ingest/src/app/ingest/ingest-preview/ingest-preview.component.ts @@ -47,7 +47,7 @@ export class IngestPreviewComponent implements OnInit { @Input() ingest: any; // Make a type ? @Output() previewClose = new EventEmitter(); - + constructor(private logbookService: LogbookService, private ingestService : IngestService) { } diff --git a/ui/ui-ingest/src/main/config/ui-ingest-application-dev.yml b/ui/ui-ingest/src/main/config/ui-ingest-application-dev.yml index 051960a08..69b4c9062 100644 --- a/ui/ui-ingest/src/main/config/ui-ingest-application-dev.yml +++ b/ui/ui-ingest/src/main/config/ui-ingest-application-dev.yml @@ -72,7 +72,8 @@ ui-ingest: hostname-verification: false base-url: portal: "https://dev.vitamui.com:4200" - + archives-search: "https://dev.vitamui.com:4209/archive-search" + ingest: "https://dev.vitamui.com:4208/ingest" portal-categories: ingest_and_consultation: title: "Versement & consultation" diff --git a/ui/ui-portal/src/main/config/ui-portal-application-dev.yml b/ui/ui-portal/src/main/config/ui-portal-application-dev.yml index 2138da599..5fbbea96a 100644 --- a/ui/ui-portal/src/main/config/ui-portal-application-dev.yml +++ b/ui/ui-portal/src/main/config/ui-portal-application-dev.yml @@ -64,6 +64,9 @@ ui-portal: portal: "https://dev.vitamui.com:4200" admin-identity: "https://dev.vitamui.com:4201/identity" identity: "https://dev.vitamui.com:4201/identity" + archives-search: "https://dev.vitamui.com:4209/archive-search" + ingest: "https://dev.vitamui.com:4208/ingest" + referential: "https://dev.vitamui.com:4202/referential" customer: technical-referent-email: contact@programmevitam.fr website-url: http://www.programmevitam.fr -- GitLab