From ffba4e5b07fd39990aadb4a3c527fbbdba356094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gild=C3=A9ric=20DERUETTE?= Date: Tue, 12 Mar 2024 16:51:06 +0100 Subject: [PATCH] =?UTF-8?q?[i18n]=20Permettre=20de=20modifier=20la=20g?= =?UTF-8?q?=C3=A9n=C3=A9ration=20des=20fichiers=20properties=20java=20en?= =?UTF-8?q?=20UTF=208=20Fixes=20#342?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TopModel.Generator.Jpa/JpaConfig.cs | 8 +++- .../JpaResourceGenerator.cs | 12 ++++- TopModel.Generator.Jpa/ResourcesEncoding.cs | 14 ++++++ TopModel.Generator.Jpa/jpa.config.json | 44 +++++++------------ docs/generator/jpa.md | 19 ++++++++ 5 files changed, 67 insertions(+), 30 deletions(-) create mode 100644 TopModel.Generator.Jpa/ResourcesEncoding.cs diff --git a/TopModel.Generator.Jpa/JpaConfig.cs b/TopModel.Generator.Jpa/JpaConfig.cs index a08157d3..1fd320a4 100644 --- a/TopModel.Generator.Jpa/JpaConfig.cs +++ b/TopModel.Generator.Jpa/JpaConfig.cs @@ -1,4 +1,5 @@ -using System.Text.RegularExpressions; +using System.Text; +using System.Text.RegularExpressions; using TopModel.Core; using TopModel.Core.FileModel; using TopModel.Core.Model.Implementation; @@ -49,6 +50,11 @@ public class JpaConfig : GeneratorConfigBase /// public string? ResourcesPath { get; set; } + /// + /// Localisation des ressources, relative au répertoire de génération. + /// + public ResourcesEncoding? ResourcesEncoding { get; set; } = Jpa.ResourcesEncoding.Latin1; + /// /// Option pour générer des getters et setters vers l'enum des références plutôt que sur la table /// diff --git a/TopModel.Generator.Jpa/JpaResourceGenerator.cs b/TopModel.Generator.Jpa/JpaResourceGenerator.cs index 46f5cc25..b08f18f8 100644 --- a/TopModel.Generator.Jpa/JpaResourceGenerator.cs +++ b/TopModel.Generator.Jpa/JpaResourceGenerator.cs @@ -39,7 +39,17 @@ public JpaResourceGenerator(ILogger logger, TranslationSto protected override void HandleResourceFile(string filePath, string lang, IEnumerable properties) { - using var fw = new FileWriter(filePath, _logger, Encoding.Latin1) { EnableHeader = false }; + var encoding = Encoding.Latin1; + if (Config.ResourcesEncoding is not null) + { + encoding = Config.ResourcesEncoding switch + { + ResourcesEncoding.UTF8 => Encoding.UTF8, + _ => Encoding.Latin1 + }; + } + + using var fw = new FileWriter(filePath, _logger, encoding) { EnableHeader = false }; var containers = properties.GroupBy(prop => prop.Parent); foreach (var container in containers.OrderBy(c => c.Key.NameCamel)) diff --git a/TopModel.Generator.Jpa/ResourcesEncoding.cs b/TopModel.Generator.Jpa/ResourcesEncoding.cs new file mode 100644 index 00000000..4fa98f90 --- /dev/null +++ b/TopModel.Generator.Jpa/ResourcesEncoding.cs @@ -0,0 +1,14 @@ +namespace TopModel.Generator.Jpa; + +public enum ResourcesEncoding +{ + /// + /// Génération du modèle utilisant l'api javax + /// + UTF8, + + /// + /// Génération du modèle utilisant l'api jakarta + /// + Latin1 +} \ No newline at end of file diff --git a/TopModel.Generator.Jpa/jpa.config.json b/TopModel.Generator.Jpa/jpa.config.json index c290866a..60edca5f 100644 --- a/TopModel.Generator.Jpa/jpa.config.json +++ b/TopModel.Generator.Jpa/jpa.config.json @@ -2,10 +2,7 @@ "type": "object", "description": "Config pour la génération de Jpa.", "additionalProperties": false, - "required": [ - "tags", - "outputDirectory" - ], + "required": ["tags", "outputDirectory"], "properties": { "language": { "type": "string", @@ -93,10 +90,7 @@ { "type": "string", "description": "Mode de génération de l'API ('Client' ou 'Server')", - "enum": [ - "Client", - "Server" - ] + "enum": ["Client", "Server"] }, { "type": "string", @@ -111,10 +105,7 @@ "type": "string", "description": "Mode de génération de l'API Client ('Client' ou 'Server')", "default": "RestClient", - "enum": [ - "RestTemplate", - "RestClient" - ] + "enum": ["RestTemplate", "RestClient"] }, { "type": "string", @@ -128,6 +119,15 @@ "type": "string", "description": "Localisation des ressources, relative au répertoire de génération." }, + "resourcesEncoding": { + "type": "string", + "description": "Encodage des fichiers de resource.", + "default": "Latin1", + "enum": [ + "Latin1", + "UTF8" + ] + }, "useJdbc": { "type": "boolean", "description": "Générer les entités en mode JDBC", @@ -186,12 +186,7 @@ "type": "string", "description": "Option pour générer une enum des champs des classes persistées", "default": "None", - "enum": [ - "None", - "Persisted", - "Dto", - "Persisted_Dto" - ] + "enum": ["None", "Persisted", "Dto", "Persisted_Dto"] }, "fieldsEnumInterface": { "type": "string", @@ -200,10 +195,7 @@ "persistenceMode": { "type": "string", "description": "Mode de génération de la persistence ('Javax' ou 'Jakarta')", - "enum": [ - "javax", - "jakarta" - ] + "enum": ["javax", "jakarta"] }, "identity": { "type": "object", @@ -212,11 +204,7 @@ "mode": { "type": "string", "description": "Mode de génération des séquences.", - "enum": [ - "none", - "sequence", - "identity" - ], + "enum": ["none", "sequence", "identity"], "default": "identity" }, "increment": { @@ -230,4 +218,4 @@ } } } -} \ No newline at end of file +} diff --git a/docs/generator/jpa.md b/docs/generator/jpa.md index 34c6d86c..0141f1fd 100644 --- a/docs/generator/jpa.md +++ b/docs/generator/jpa.md @@ -416,6 +416,16 @@ jpa: Pour que, pour chaque module, soit généré les fichiers de resources dans les différentes langues configurées globalement. +Par défaut, les fichiers sont générés avec l'encodage Latin1, mais il est possible de les générer en UTF8 avec la propriété resourcesEncoding + +```yaml +jpa: + - tags: + - dto + resourcesPath: resources/i18n/model # Chemin des fichiers de ressource générés. + resourcesEncoding: UTF8 # Encodage fichiers de ressource générés (Latin1 ou UTF8). +``` + ## Générateur de flow Le générateur de data flow s'appuie sur `spring-batch`. Il permet de générer du code permettant de récupérer des données d'une source, appliquer éventuellement une transformation, puis les insérer dans une base de données. Les outils mis en oeuvre ont été sélectionnés pour leur capacité à traiter un grand nombre de données, avec les meilleures performances possibles. @@ -586,6 +596,15 @@ Le générateur créé un fichier de configuration de job par module. Ce job ord _Variables par tag_: **oui** +- `resourcesEncoding` + + Encodage des fichiers de ressources. Les valeurs possibles sont : + + - `Latin1` : valeur par défaut + - `UTF8` + + _Variables par tag_: **non** + - `enumShortcutMode` Option pour générer des getters et setters vers l'enum des références plutôt que sur la table