@@ -239,72 +239,103 @@ export class DataRaptorMigrationTool extends BaseMigrationTool implements Migrat
239239 // Now process each OmniScript and its elements
240240 for ( const dataRaptor of dataRaptors ) {
241241 if ( dataRaptor [ this . namespacePrefix + 'Type__c' ] === 'Migration' ) continue ;
242- const drName = dataRaptor [ 'Name' ] ;
243- // Await here since processOSComponents is now async
244- Logger . info ( this . messages . getMessage ( 'processingDataRaptor' , [ drName ] ) ) ;
245- const warnings : string [ ] = [ ] ;
246- const existingDRNameVal = new StringVal ( drName , 'name' ) ;
247-
248- if ( ! existingDRNameVal . isNameCleaned ( ) ) {
249- warnings . push (
250- this . messages . getMessage ( 'changeMessage' , [
251- existingDRNameVal . type ,
252- existingDRNameVal . val ,
253- existingDRNameVal . cleanName ( ) ,
254- ] )
242+ try {
243+ const dataRaptorAssessmentInfo = await this . processDataMappers (
244+ dataRaptor ,
245+ existingDataRaptorNames ,
246+ dataRaptorItemsMap ,
247+ functionDefinitionMetadata
255248 ) ;
249+ dataRaptorAssessmentInfos . push ( dataRaptorAssessmentInfo ) ;
250+ } catch ( e ) {
251+ dataRaptorAssessmentInfos . push ( {
252+ oldName : dataRaptor [ 'Name' ] ,
253+ name : '' ,
254+ id : dataRaptor [ 'Id' ] ,
255+ type : dataRaptor [ this . namespacePrefix + 'Type__c' ] || '' ,
256+ formulaChanges : [ ] ,
257+ infos : [ ] ,
258+ warnings : [ this . messages . getMessage ( 'unexpectedError' ) ] ,
259+ apexDependencies : [ ] ,
260+ } ) ;
261+ const error = e as Error ;
262+ Logger . error ( JSON . stringify ( error ) ) ;
263+ Logger . error ( error . stack ) ;
256264 }
257- if ( existingDataRaptorNames . has ( existingDRNameVal . cleanName ( ) ) ) {
258- warnings . push ( this . messages . getMessage ( 'duplicatedName' ) + ' ' + existingDRNameVal . cleanName ( ) ) ;
259- } else {
260- existingDataRaptorNames . add ( existingDRNameVal . cleanName ( ) ) ;
261- }
262- const apexDependencies = [ ] ;
263- if ( dataRaptor [ this . namespacePrefix + 'CustomInputClass__c' ] ) {
264- apexDependencies . push ( dataRaptor [ this . namespacePrefix + 'CustomInputClass__c' ] ) ;
265- }
266- if ( dataRaptor [ this . namespacePrefix + 'CustomOutputClass__c' ] ) {
267- apexDependencies . push ( dataRaptor [ this . namespacePrefix + 'CustomOutputClass__c' ] ) ;
268- }
265+ progressBar . update ( ++ progressCounter ) ;
266+ }
267+ progressBar . stop ( ) ;
268+ return dataRaptorAssessmentInfos ;
269+ }
269270
270- const formulaChanges : oldNew [ ] = [ ] ;
271- const drItems = dataRaptorItemsMap . get ( drName ) ;
272- if ( drItems ) {
273- for ( const drItem of drItems ) {
274- // Logger.log(dataRaptor[this.namespacePrefix + 'Formula__c']);
275- const formula = drItem [ this . namespacePrefix + 'Formula__c' ] ;
276- if ( formula ) {
277- try {
278- const newFormula = getReplacedString ( this . namespacePrefix , formula , functionDefinitionMetadata ) ;
279- if ( newFormula !== formula ) {
280- formulaChanges . push ( {
281- old : formula ,
282- new : newFormula ,
283- } ) ;
284- }
285- } catch ( ex ) {
286- Logger . error ( JSON . stringify ( ex ) ) ;
287- Logger . error ( ex . stack ) ;
288- Logger . logVerbose ( this . messages . getMessage ( 'formulaSyntaxError' , [ formula ] ) ) ;
271+ private async processDataMappers (
272+ dataRaptor : AnyJson ,
273+ existingDataRaptorNames : Set < string > ,
274+ dataRaptorItemsMap : Map < string , AnyJson [ ] > ,
275+ functionDefinitionMetadata : AnyJson [ ]
276+ ) : Promise < DataRaptorAssessmentInfo > {
277+ const drName = dataRaptor [ 'Name' ] ;
278+ // Await here since processOSComponents is now async
279+ Logger . info ( this . messages . getMessage ( 'processingDataRaptor' , [ drName ] ) ) ;
280+ const warnings : string [ ] = [ ] ;
281+ const existingDRNameVal = new StringVal ( drName , 'name' ) ;
282+
283+ if ( ! existingDRNameVal . isNameCleaned ( ) ) {
284+ warnings . push (
285+ this . messages . getMessage ( 'changeMessage' , [
286+ existingDRNameVal . type ,
287+ existingDRNameVal . val ,
288+ existingDRNameVal . cleanName ( ) ,
289+ ] )
290+ ) ;
291+ }
292+ if ( existingDataRaptorNames . has ( existingDRNameVal . cleanName ( ) ) ) {
293+ warnings . push ( this . messages . getMessage ( 'duplicatedName' ) + ' ' + existingDRNameVal . cleanName ( ) ) ;
294+ } else {
295+ existingDataRaptorNames . add ( existingDRNameVal . cleanName ( ) ) ;
296+ }
297+ const apexDependencies = [ ] ;
298+ if ( dataRaptor [ this . namespacePrefix + 'CustomInputClass__c' ] ) {
299+ apexDependencies . push ( dataRaptor [ this . namespacePrefix + 'CustomInputClass__c' ] ) ;
300+ }
301+ if ( dataRaptor [ this . namespacePrefix + 'CustomOutputClass__c' ] ) {
302+ apexDependencies . push ( dataRaptor [ this . namespacePrefix + 'CustomOutputClass__c' ] ) ;
303+ }
304+
305+ const formulaChanges : oldNew [ ] = [ ] ;
306+ const drItems = dataRaptorItemsMap . get ( drName ) ;
307+ if ( drItems ) {
308+ for ( const drItem of drItems ) {
309+ // Logger.log(dataRaptor[this.namespacePrefix + 'Formula__c']);
310+ const formula = drItem [ this . namespacePrefix + 'Formula__c' ] ;
311+ if ( formula ) {
312+ try {
313+ const newFormula = getReplacedString ( this . namespacePrefix , formula , functionDefinitionMetadata ) ;
314+ if ( newFormula !== formula ) {
315+ formulaChanges . push ( {
316+ old : formula ,
317+ new : newFormula ,
318+ } ) ;
289319 }
320+ } catch ( ex ) {
321+ Logger . error ( JSON . stringify ( ex ) ) ;
322+ Logger . error ( ex . stack ) ;
323+ Logger . logVerbose ( this . messages . getMessage ( 'formulaSyntaxError' , [ formula ] ) ) ;
290324 }
291325 }
292326 }
293- const dataRaptorAssessmentInfo : DataRaptorAssessmentInfo = {
294- oldName : existingDRNameVal . val ,
295- name : existingDRNameVal . cleanName ( ) ,
296- id : dataRaptor [ 'Id' ] ,
297- type : dataRaptor [ this . namespacePrefix + 'Type__c' ] || '' ,
298- formulaChanges : formulaChanges ,
299- infos : [ ] ,
300- apexDependencies : apexDependencies ,
301- warnings : warnings ,
302- } ;
303- dataRaptorAssessmentInfos . push ( dataRaptorAssessmentInfo ) ;
304- progressBar . update ( ++ progressCounter ) ;
305327 }
306- progressBar . stop ( ) ;
307- return dataRaptorAssessmentInfos ;
328+ const dataRaptorAssessmentInfo : DataRaptorAssessmentInfo = {
329+ oldName : existingDRNameVal . val ,
330+ name : existingDRNameVal . cleanName ( ) ,
331+ id : dataRaptor [ 'Id' ] ,
332+ type : dataRaptor [ this . namespacePrefix + 'Type__c' ] || '' ,
333+ formulaChanges : formulaChanges ,
334+ infos : [ ] ,
335+ apexDependencies : apexDependencies ,
336+ warnings : warnings ,
337+ } ;
338+ return dataRaptorAssessmentInfo ;
308339 }
309340
310341 // Get All DRBundle__c records
0 commit comments