Skip to content

Commit d10051a

Browse files
committed
feat: messages and other fixes
1 parent 949ec0f commit d10051a

File tree

5 files changed

+87
-59
lines changed

5 files changed

+87
-59
lines changed

messages/assess.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,5 +90,13 @@
9090
"omniScriptNameChangeMessage": "OmniScript reference part {0} will be changed to {1} during migration.",
9191
"dataRaptorNameChangeMessage": "DataRaptor reference {0} will be changed to {1} during migration.",
9292
"integrationProcedureNameChangeMessage": "Integration Procedure reference {0} will be changed to {1} during migration.",
93-
"integrationProcedureManualUpdateMessage": "Integration Procedure reference {0} may need manual updates after migration."
93+
"integrationProcedureManualUpdateMessage": "Integration Procedure reference {0} may need manual updates after migration.",
94+
"apexFileChangesIdentifiedNotApplied": "Changes identified for Apex class {0} but not applied (assessment mode)",
95+
"apexFileHasMultipleInterfaces": "File {0} has multiple interfaces including Callable, standardizing to System.Callable only",
96+
"apexFileImplementsVlocityOpenInterface2": "File {0} implements VlocityOpenInterface2, replacing with System.Callable",
97+
"errorParsingHtmlTemplate": "Error while parsing template",
98+
"errorParsingData": "Error while parsing data for template",
99+
"errorGeneratingHTML": "Error while generating HTML from template for {} with properties {}",
100+
"unexpectedError": "Unexpected Assessment error",
101+
"errorEvaluatingExpression": "Error evaluating expression: {0}, {1}"
94102
}

messages/migrate.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,5 +79,13 @@
7979
"alreadyStandardModel": "The org is already on standard data model.",
8080
"cardAuthorNameChangeMessage": "Card author name has been modified to fit naming rules: {0}",
8181
"cardNameChangeMessage": "Card name has been modified to fit naming rules: {0}",
82-
"duplicateCardNameMessage": "Potential duplicate: Another card has the same name {0} after name cleaning. This may cause conflicts during migration"
82+
"duplicateCardNameMessage": "Potential duplicate: Another card has the same name {0} after name cleaning. This may cause conflicts during migration",
83+
"apexFileChangesApplied": "Applied changes to Apex class {0}",
84+
"generatingComponentReports": "Generating report for components",
85+
"generatingRelatedObjectReports": "Generating report for related objects",
86+
"generatingMigrationReportDashboard": "Generating migration report dashboard",
87+
"errorParsingHtmlTemplate": "Error while parsing template",
88+
"errorParsingData": "Error while parsing data for template",
89+
"errorGeneratingHTML": "Error while generating HTML from template for {} with properties {}",
90+
"errorEvaluatingExpression": "Error evaluating expression: {0}, {1}"
8391
}

src/migration/related/ApexMigration.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,9 @@ export class ApexMigration extends BaseRelatedObjectMigration {
151151
// Only write file changes if we're in migration mode, not assessment mode
152152
if (type === 'migration') {
153153
fs.writeFileSync(file.location, updatedContent);
154-
Logger.logger.info(`Applied changes to Apex class ${file.name}`);
154+
Logger.logger.info(migrateMessages.getMessage('apexFileChangesApplied', [file.name]));
155155
} else {
156-
Logger.logger.info(`Changes identified for Apex class ${file.name} but not applied (assessment mode)`);
156+
Logger.logger.info(assessMessages.getMessage('apexFileChangesIdentifiedNotApplied', [file.name]));
157157
}
158158
difference = new FileDiffUtil().getFileDiff(file.name, fileContent, updatedContent);
159159
}
@@ -182,16 +182,14 @@ export class ApexMigration extends BaseRelatedObjectMigration {
182182

183183
// Case 2: Already implements multiple interfaces including Callable - keep only System.Callable
184184
if (implementsInterface.has(this.callableInterface) && implementsInterface.size > 1) {
185-
Logger.logger.info(
186-
`File ${file.name} has multiple interfaces including Callable, standardizing to System.Callable only`
187-
);
185+
Logger.logger.info(assessMessages.getMessage('apexFileHasMultipleInterfaces', [file.name]));
188186
// We need to identify the entire implements clause and replace it
189187
return this.replaceAllInterfaces(implementsInterface, tokenUpdates, parser, file.name);
190188
}
191189

192190
// Case 3: Implements VlocityOpenInterface2 - replace with System.Callable
193191
if (implementsInterface.has(this.vlocityOpenInterface2)) {
194-
Logger.logger.info(`File ${file.name} implements VlocityOpenInterface2, replacing with System.Callable`);
192+
Logger.logger.info(assessMessages.getMessage('apexFileImplementsVlocityOpenInterface2', [file.name]));
195193
const tokens = implementsInterface.get(this.vlocityOpenInterface2);
196194
tokenUpdates.push(new RangeTokenUpdate(CALLABLE, tokens[0], tokens[1]));
197195
tokenUpdates.push(new InsertAfterTokenUpdate(this.callMethodBody(), parser.classDeclaration));
@@ -242,7 +240,7 @@ export class ApexMigration extends BaseRelatedObjectMigration {
242240
if (!parser.hasCallMethodImplemented) {
243241
tokenUpdates.push(new InsertAfterTokenUpdate(this.callMethodBody(), parser.classDeclaration));
244242
} else {
245-
Logger.logger.info(`File ${fileName} already has a call() method, not adding`);
243+
Logger.logger.info(assessMessages.getMessage('apexFileAlreadyHasCallMethod', [fileName]));
246244
}
247245
}
248246

src/utils/resultsbuilder/IPAssessmentReporter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ export class IPAssessmentReporter {
138138
rowspan: 2,
139139
},
140140
{
141-
name: 'Data Mapper Dependencies',
141+
name: 'Remote Action Dependencies',
142142
colspan: 1,
143143
rowspan: 2,
144144
},

src/utils/resultsbuilder/assessmentReporter.ts

Lines changed: 63 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
/* eslint-disable prettier/prettier */
22
/* eslint-disable @typescript-eslint/restrict-template-expressions */
33
import fs from 'fs';
4+
import path from 'path';
45
import open from 'open';
6+
import { Messages } from '@salesforce/core';
57
import { AssessmentInfo } from '../interfaces';
68
import { DashboardParam } from '../reportGenerator/reportInterfaces';
79
import { OmnistudioOrgDetails } from '../orgUtils';
@@ -16,22 +18,23 @@ import { DRAssessmentReporter } from './DRAssessmentReporter';
1618
import { FlexcardAssessmentReporter } from './FlexcardAssessmentReporter';
1719

1820
export class AssessmentReporter {
19-
private static basePath = process.cwd() + '/assessment_reports';
20-
private static omniscriptAssessmentFilePath = this.basePath + '/omniscript_assessment.html';
21-
private static flexcardAssessmentFilePath = this.basePath + '/flexcard_assessment.html';
22-
private static integrationProcedureAssessmentFilePath = this.basePath + '/integration_procedure_assessment.html';
23-
private static dataMapperAssessmentFilePath = this.basePath + '/datamapper_assessment.html';
24-
private static apexAssessmentFilePath = this.basePath + '/apex_assessment.html';
25-
private static dashboardFilePath = this.basePath + '/dashboard.html';
26-
private static dashboardTemplate = process.cwd() + '/src/templates/dashboard.template';
21+
private static basePath = path.join(process.cwd(), 'assessment_reports');
22+
private static omniscriptAssessmentFileName = 'omniscript_assessment.html';
23+
private static flexcardAssessmentFileName = 'flexcard_assessment.html';
24+
private static integrationProcedureAssessmentFileName = 'integration_procedure_assessment.html';
25+
private static dataMapperAssessmentFileName = 'datamapper_assessment.html';
26+
private static apexAssessmentFileName = 'apex_assessment.html';
27+
private static dashboardFileName = 'dashboard.html';
28+
private static dashboardTemplate = path.join(process.cwd(), 'src/templates/dashboard.template');
2729
// TODO: Uncomment code once MVP for migration is completed
2830
// private static lwcAssessmentFilePath = this.basePath + '/lwc_assessment.html';
2931
public static async generate(
3032
result: AssessmentInfo,
3133
instanceUrl: string,
3234
omnistudioOrgDetails: OmnistudioOrgDetails,
3335
assessOnly: string,
34-
relatedObjects: string[]
36+
relatedObjects: string[],
37+
messages: Messages
3538
): Promise<void> {
3639
fs.mkdirSync(this.basePath, { recursive: true });
3740

@@ -41,33 +44,36 @@ export class AssessmentReporter {
4144
);
4245
if (!assessOnly) {
4346
this.createDocument(
44-
this.omniscriptAssessmentFilePath,
47+
path.join(this.basePath, this.omniscriptAssessmentFileName),
4548
TemplateParser.generate(
4649
assessmentReportTemplate,
4750
OSAssessmentReporter.getOmniscriptAssessmentData(
4851
result.omniAssessmentInfo.osAssessmentInfos,
4952
instanceUrl,
5053
omnistudioOrgDetails
51-
)
54+
),
55+
messages
5256
)
5357
);
5458

5559
this.createDocument(
56-
this.flexcardAssessmentFilePath,
60+
path.join(this.basePath, this.flexcardAssessmentFileName),
5761
TemplateParser.generate(
5862
assessmentReportTemplate,
5963
FlexcardAssessmentReporter.getFlexcardAssessmentData(
6064
result.flexCardAssessmentInfos,
6165
instanceUrl,
6266
omnistudioOrgDetails
63-
)
67+
),
68+
messages
6469
)
6570
);
6671
this.createDocument(
67-
this.apexAssessmentFilePath,
72+
path.join(this.basePath, this.apexAssessmentFileName),
6873
TemplateParser.generate(
6974
assessmentReportTemplate,
70-
ApexAssessmentReporter.getApexAssessmentData(result.apexAssessmentInfos, omnistudioOrgDetails)
75+
ApexAssessmentReporter.getApexAssessmentData(result.apexAssessmentInfos, omnistudioOrgDetails),
76+
messages
7177
)
7278
);
7379

@@ -77,82 +83,88 @@ export class AssessmentReporter {
7783
// );
7884

7985
this.createDocument(
80-
this.integrationProcedureAssessmentFilePath,
86+
path.join(this.basePath, this.integrationProcedureAssessmentFileName),
8187
TemplateParser.generate(
8288
assessmentReportTemplate,
8389
IPAssessmentReporter.getIntegrationProcedureAssessmentData(
8490
result.omniAssessmentInfo.ipAssessmentInfos,
8591
instanceUrl,
8692
omnistudioOrgDetails
87-
)
93+
),
94+
messages
8895
)
8996
);
9097

9198
this.createDocument(
92-
this.dataMapperAssessmentFilePath,
99+
path.join(this.basePath, this.dataMapperAssessmentFileName),
93100
TemplateParser.generate(
94101
assessmentReportTemplate,
95102
DRAssessmentReporter.getDatamapperAssessmentData(
96103
result.dataRaptorAssessmentInfos,
97104
instanceUrl,
98105
omnistudioOrgDetails
99-
)
106+
),
107+
messages
100108
)
101109
);
102110
} else {
103111
switch (assessOnly) {
104112
case Constants.Omniscript:
105113
this.createDocument(
106-
this.omniscriptAssessmentFilePath,
114+
path.join(this.basePath, this.omniscriptAssessmentFileName),
107115
TemplateParser.generate(
108116
assessmentReportTemplate,
109117
OSAssessmentReporter.getOmniscriptAssessmentData(
110118
result.omniAssessmentInfo.osAssessmentInfos,
111119
instanceUrl,
112120
omnistudioOrgDetails
113-
)
121+
),
122+
messages
114123
)
115124
);
116125
break;
117126

118127
case Constants.Flexcard:
119128
this.createDocument(
120-
this.flexcardAssessmentFilePath,
129+
path.join(this.basePath, this.flexcardAssessmentFileName),
121130
TemplateParser.generate(
122131
assessmentReportTemplate,
123132
FlexcardAssessmentReporter.getFlexcardAssessmentData(
124133
result.flexCardAssessmentInfos,
125134
instanceUrl,
126135
omnistudioOrgDetails
127-
)
136+
),
137+
messages
128138
)
129139
);
130140
break;
131141

132142
case Constants.IntegrationProcedure:
133143
this.createDocument(
134-
this.integrationProcedureAssessmentFilePath,
144+
path.join(this.basePath, this.integrationProcedureAssessmentFileName),
135145
TemplateParser.generate(
136146
assessmentReportTemplate,
137147
IPAssessmentReporter.getIntegrationProcedureAssessmentData(
138148
result.omniAssessmentInfo.ipAssessmentInfos,
139149
instanceUrl,
140150
omnistudioOrgDetails
141-
)
151+
),
152+
messages
142153
)
143154
);
144155
break;
145156

146157
case Constants.DataMapper:
147158
this.createDocument(
148-
this.dataMapperAssessmentFilePath,
159+
path.join(this.basePath, this.dataMapperAssessmentFileName),
149160
TemplateParser.generate(
150161
assessmentReportTemplate,
151162
DRAssessmentReporter.getDatamapperAssessmentData(
152163
result.dataRaptorAssessmentInfos,
153164
instanceUrl,
154165
omnistudioOrgDetails
155-
)
166+
),
167+
messages
156168
)
157169
);
158170
break;
@@ -163,10 +175,11 @@ export class AssessmentReporter {
163175

164176
if (relatedObjects && relatedObjects.includes(Constants.Apex)) {
165177
this.createDocument(
166-
this.apexAssessmentFilePath,
178+
path.join(this.basePath, this.apexAssessmentFileName),
167179
TemplateParser.generate(
168180
assessmentReportTemplate,
169-
ApexAssessmentReporter.getApexAssessmentData(result.apexAssessmentInfos, omnistudioOrgDetails)
181+
ApexAssessmentReporter.getApexAssessmentData(result.apexAssessmentInfos, omnistudioOrgDetails),
182+
messages
170183
)
171184
);
172185
}
@@ -179,20 +192,21 @@ export class AssessmentReporter {
179192
// }
180193

181194
// await this.createMasterDocument(nameUrls, basePath);
182-
this.createDashboard(this.basePath, result, omnistudioOrgDetails);
195+
this.createDashboard(this.basePath, result, omnistudioOrgDetails, messages);
183196
pushAssestUtilites('javascripts', this.basePath);
184197
pushAssestUtilites('styles', this.basePath);
185-
await open('file://' + this.dashboardFilePath);
198+
await open(path.join(this.basePath, this.dashboardFileName));
186199
}
187200
private static createDashboard(
188201
basePath: string,
189202
result: AssessmentInfo,
190-
omnistudioOrgDetails: OmnistudioOrgDetails
203+
omnistudioOrgDetails: OmnistudioOrgDetails,
204+
messages: Messages
191205
): void {
192206
const dashboardTemplate = fs.readFileSync(this.dashboardTemplate, 'utf8');
193207
this.createDocument(
194-
basePath + '/dashboard.html',
195-
TemplateParser.generate(dashboardTemplate, this.createDashboardParam(result, omnistudioOrgDetails))
208+
path.join(basePath, this.dashboardFileName),
209+
TemplateParser.generate(dashboardTemplate, this.createDashboardParam(result, omnistudioOrgDetails), messages)
196210
);
197211
}
198212
private static createDashboardParam(
@@ -205,35 +219,35 @@ export class AssessmentReporter {
205219
org: getOrgDetailsForReport(omnistudioOrgDetails),
206220
assessmentDate: new Date().toISOString(),
207221
summaryItems: [
222+
{
223+
name: 'DataMapper',
224+
total: result.dataRaptorAssessmentInfos.length,
225+
data: DRAssessmentReporter.getSummaryData(result.dataRaptorAssessmentInfos),
226+
file: this.dataMapperAssessmentFileName,
227+
},
228+
{
229+
name: 'Integration Procedure',
230+
total: result.omniAssessmentInfo.ipAssessmentInfos.length,
231+
data: IPAssessmentReporter.getSummaryData(result.omniAssessmentInfo.ipAssessmentInfos),
232+
file: this.integrationProcedureAssessmentFileName,
233+
},
208234
{
209235
name: 'OmniScript',
210236
total: result.omniAssessmentInfo.osAssessmentInfos.length,
211237
data: OSAssessmentReporter.getSummaryData(result.omniAssessmentInfo.osAssessmentInfos),
212-
file: this.omniscriptAssessmentFilePath,
238+
file: this.omniscriptAssessmentFileName,
213239
},
214240
{
215241
name: 'Flexcard',
216242
total: result.flexCardAssessmentInfos.length,
217243
data: FlexcardAssessmentReporter.getSummaryData(result.flexCardAssessmentInfos),
218-
file: this.flexcardAssessmentFilePath,
219-
},
220-
{
221-
name: 'Integration Procedure',
222-
total: result.omniAssessmentInfo.ipAssessmentInfos.length,
223-
data: IPAssessmentReporter.getSummaryData(result.omniAssessmentInfo.ipAssessmentInfos),
224-
file: this.integrationProcedureAssessmentFilePath,
225-
},
226-
{
227-
name: 'DataMapper',
228-
total: result.dataRaptorAssessmentInfos.length,
229-
data: DRAssessmentReporter.getSummaryData(result.dataRaptorAssessmentInfos),
230-
file: this.dataMapperAssessmentFilePath,
244+
file: this.flexcardAssessmentFileName,
231245
},
232246
{
233247
name: 'Apex',
234248
total: result.apexAssessmentInfos.length,
235249
data: ApexAssessmentReporter.getSummaryData(result.apexAssessmentInfos),
236-
file: this.apexAssessmentFilePath,
250+
file: this.apexAssessmentFileName,
237251
},
238252
],
239253
};

0 commit comments

Comments
 (0)