From 6729af117348d7383fa6f07d57a009a593e021e9 Mon Sep 17 00:00:00 2001
From: "j.goderbauer" <j.goderbauer@adito.de>
Date: Thu, 2 May 2019 15:01:42 +0200
Subject: [PATCH] [Projekt: Entwicklung - Neon][TicketNr.: 1036637][Migration
 lib_addr auf ADITO 2019] placeholder reorganisation

---
 process/Address_lib/process.js | 100 +++++++++++++++++++++------------
 1 file changed, 64 insertions(+), 36 deletions(-)

diff --git a/process/Address_lib/process.js b/process/Address_lib/process.js
index 5827d6bbe8..072f226e17 100644
--- a/process/Address_lib/process.js
+++ b/process/Address_lib/process.js
@@ -383,33 +383,53 @@ function _getCountryName(pCountryCode)
 */
 function _formatAddrData( pAddrData, pFormat, pCountry )
 {
-    var placeholder = [["address_street", 1],["buildingno", 2],["zip", 3],["city", 4],["district", 8],["region", 9],["state", 10],["organisation_name", 15], //0-7
-    ["firstname", 16],["middlename", 17],["lastname", 18],["saluation", 19],["title", 20], ["suffix", 21], ["salutation_name", 23],["letter salutation", 24], ["country", 25]]; //8-16
-    var as = pAddrData[26];       
-    if ( pFormat != "" && pFormat != undefined) as = pFormat; 
-    as = _getFormatMapping(as, pAddrData, pCountry);
+    var placeholerInfo = {
+        "street":       {dataPosition: 1},
+        "buildingno":   {dataPosition: 2},
+        "zip":          {dataPosition: 3},
+        "city":         {dataPosition: 4},
+        "district":     {dataPosition: 8},
+        "region":       {dataPosition: 9},
+        "state":        {dataPosition: 10},
+        "firstname":    {dataPosition: 16},
+        "middlename":   {dataPosition: 17},
+        "lastname":     {dataPosition: 18},
+        "saluation":    {dataPosition: 19},
+        "title":        {dataPosition: 20},
+        "suffix":       {dataPosition: 21},
+        "country":      {dataPosition: 25},
+        "organisation name":    {dataPosition: 15},
+        "salutation_name":      {dataPosition: 23},
+        "letter salutation":    {dataPosition: 24}
+    };
+
+    var format = pFormat || pAddrData[26];       
+    format = _mapFormatPlaceholderTitles(format, pAddrData, pCountry);
     
-    for( var y = 0; y < placeholder.length; y++ )
-    {         
-        as = as.replace(new RegExp(placeholder[y][0], "g"), pAddrData[placeholder[y][1]]);
-        if (pAddrData[placeholder[y][1]] != undefined ) {
-            as = as.replace(new RegExp(placeholder[y][0].toUpperCase(), "g"), pAddrData[placeholder[y][1]].toUpperCase());         
-        }		
+    var res = format;    
+    for (var placeholder in placeholerInfo)
+    {
+        var currentAddrData = pAddrData[placeholerInfo[placeholder].dataPosition];
+        if (currentAddrData != undefined)
+        {
+            res = res.replace(new RegExp("{" + placeholder + "}", "g"), currentAddrData);
+            res = res.replace(new RegExp("{" + placeholder.toUpperCase() + "}", "g"), currentAddrData.toUpperCase());
+        }
     }
-	 	
-    as = as.replace(/^\n/, "");  // CR am Anfang entfernen;
-    as = as.replace(/  /g, " "); // doppelte leerzeichen entfernen
-    as = as.replace(/\\n/ig, "\n");	// newline marker ersetzen
-    as = as.replace(/ *\n */g, "\n");// leerzeichen am ende und Anfang entfernen
-    as = as.replace(/\s(?=\s)/g, "");	// leerzeilen rauswerfen
-    return as;
+
+    res = res.replace(/^\n/, "");  // CR am Anfang entfernen;
+    res = res.replace(/  /g, " "); // doppelte leerzeichen entfernen
+    res = res.replace(/\\n/ig, "\n");	// newline marker ersetzen
+    res = res.replace(/ *\n */g, "\n");// leerzeichen am ende und Anfang entfernen
+    res = res.replace(/\s(?=\s)/g, "");	// leerzeilen rauswerfen
+    return res;
 }
 
 /*
 * returns the new format 
 *
 * @param {String [[]]} pAddrData req Daten 
-* @param {String} as req the format string
+* @param {String} pFormat req the format string
 * @param {boolean} pCountry if the country should be displayed
 *
 * @return {String} new formate
@@ -423,23 +443,31 @@ S – Administrative area - state
 Z – Zip or postal code - zip
 X – Sorting code - not available
 */
-function _getFormatMapping(as, pAddrData, pCountry) {
-    as = as.replace(new RegExp("%N", "g"), "salutation_name");   
-    as = as.replace(new RegExp("%A", "g"), "address_street buildingno");  
-    as = as.replace(new RegExp("%C", "g"), "city");
-    as = as.replace(new RegExp("%S", "g"), "state");
-    as = as.replace(new RegExp("%Z", "g"), "zip");
-    as = as.replace(new RegExp("%O", "g"), "organisation_name");
-    as = as.replace(new RegExp("%X", "g"), "");   
-    as = as.replace(new RegExp("%n", "g"), "\n");
-    as = as.replace(new RegExp("{fn}", "g"), "firstname");
-    as = as.replace(new RegExp("{ln}", "g"), "lastname");
-    as = as.replace(new RegExp("{ti}", "g"), "title");
-    as = as.replace(new RegExp("{sa}", "g"), "salutation");
+function _mapFormatPlaceholderTitles(pFormat, pAddrData, pCountry) 
+{
+    //gstatic-paceholders
+    pFormat = pFormat.replace(new RegExp("%N", "g"), "{salutation_name}");
+    pFormat = pFormat.replace(new RegExp("%A", "g"), "{address_street buildingno}");  
+    pFormat = pFormat.replace(new RegExp("%C", "g"), "{city}");
+    pFormat = pFormat.replace(new RegExp("%S", "g"), "{state}");
+    pFormat = pFormat.replace(new RegExp("%Z", "g"), "{zip}");
+    pFormat = pFormat.replace(new RegExp("%O", "g"), "{organisation_name}");
+    pFormat = pFormat.replace(new RegExp("%X", "g"), "");   
+    pFormat = pFormat.replace(new RegExp("%n", "g"), "\n");
+    
+    //shortform adito-placeholders
+    pFormat = pFormat.replace(new RegExp("{fn}", "g"), "{firstname}");
+    pFormat = pFormat.replace(new RegExp("{ln}", "g"), "{lpFormattname}");
+    pFormat = pFormat.replace(new RegExp("{ti}", "g"), "{title}");
+    pFormat = pFormat.replace(new RegExp("{sa}", "g"), "{salutation}");
+    
+    if (pAddrData[8] == pAddrData[9])
+        pFormat = pFormat.replace(new RegExp("%D", "g"), "{district}");
+    else
+        pFormat = pFormat.replace(new RegExp("%D", "g"), "{district} \n {region}");   
     
-    if (pAddrData[8] == pAddrData[9])  as = as.replace(new RegExp("%D", "g"), "district");
-    else as = as.replace(new RegExp("%D", "g"), "district \n region");   
-    if(pCountry == undefined || pCountry == null || pCountry == true) as = as + "\n country";
+    if(pCountry == undefined || pCountry == null || pCountry == true)
+        pFormat = pFormat + "\n {country}";
     
-    return as;
+    return pFormat;
 }
\ No newline at end of file
-- 
GitLab