Skip to content

Commit a109391

Browse files
Merge pull request #430 from sf-aastha-paruthi/u/aparuthi/flexcardnameupdate
@W-19878784 Update storageUtil for all versions omniscripts and flexcards
2 parents 0a7fb28 + b622dbf commit a109391

File tree

7 files changed

+1505
-105
lines changed

7 files changed

+1505
-105
lines changed

src/migration/flexcard.ts

Lines changed: 41 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -946,19 +946,17 @@ export class CardMigrationTool extends BaseMigrationTool implements MigrationToo
946946

947947
for (let flexCardAssessmentInfo of flexcardAssessmentInfos) {
948948
try {
949-
if (
950-
flexCardAssessmentInfo === undefined ||
951-
flexCardAssessmentInfo === null ||
952-
flexCardAssessmentInfo.nameMapping === undefined ||
953-
flexCardAssessmentInfo.nameMapping === null
954-
) {
949+
if (!flexCardAssessmentInfo?.nameMapping) {
955950
Logger.error(this.messages.getMessage('missingInfo'));
956951
return;
957952
}
958953

954+
const originalName: string = flexCardAssessmentInfo.nameMapping.oldName;
955+
959956
let value: FlexcardStorage = {
960957
name: flexCardAssessmentInfo.nameMapping.newName,
961958
isDuplicate: false,
959+
originalName: originalName,
962960
};
963961

964962
if (flexCardAssessmentInfo.errors && flexCardAssessmentInfo.errors.length > 0) {
@@ -967,17 +965,7 @@ export class CardMigrationTool extends BaseMigrationTool implements MigrationToo
967965
} else {
968966
value.migrationSuccess = true;
969967
}
970-
let finalKey = `${flexCardAssessmentInfo.nameMapping.oldName}`;
971-
finalKey = finalKey.toLowerCase();
972-
if (storage.fcStorage.has(finalKey)) {
973-
// Key already exists - handle accordingly
974-
Logger.logVerbose(this.messages.getMessage('keyAlreadyInStorage', ['Flexcard', finalKey]));
975-
value.isDuplicate = true;
976-
storage.fcStorage.set(finalKey, value);
977-
} else {
978-
// Key doesn't exist - safe to set
979-
storage.fcStorage.set(finalKey, value);
980-
}
968+
this.addKeyToStorage(originalName, value, storage);
981969
} catch (error) {
982970
Logger.logVerbose(this.messages.getMessage('errorWhileProcessingFlexcardStorage'));
983971
Logger.error(error);
@@ -986,6 +974,39 @@ export class CardMigrationTool extends BaseMigrationTool implements MigrationToo
986974
StorageUtil.printAssessmentStorage();
987975
}
988976

977+
private addKeyToStorage(originalName: string, value: FlexcardStorage, storage: MigrationStorage) {
978+
let finalKey = `${originalName}`;
979+
finalKey = finalKey.toLowerCase();
980+
981+
if (storage.fcStorage.has(finalKey)) {
982+
if (this.allVersions) {
983+
const storedValue = storage.fcStorage.get(finalKey);
984+
if (this.isDifferentFlexcard(storedValue, originalName)) {
985+
this.markDuplicateKeyInStorage(value, finalKey, storage);
986+
}
987+
} else {
988+
this.markDuplicateKeyInStorage(value, finalKey, storage);
989+
}
990+
} else {
991+
// Key doesn't exist - safe to set
992+
storage.fcStorage.set(finalKey, value);
993+
}
994+
}
995+
996+
private markDuplicateKeyInStorage(value: FlexcardStorage, finalKey: string, storage: MigrationStorage) {
997+
// Key already exists - handle accordingly
998+
Logger.logVerbose(this.messages.getMessage('keyAlreadyInStorage', ['Flexcard', finalKey]));
999+
value.isDuplicate = true;
1000+
storage.fcStorage.set(finalKey, value);
1001+
}
1002+
1003+
isDifferentFlexcard(storedValue: FlexcardStorage, originalName: string) {
1004+
if (storedValue.originalName === originalName) {
1005+
return false;
1006+
}
1007+
return true;
1008+
}
1009+
9891010
private prepareStorageForFlexcards(
9901011
cardsUploadInfo: Map<string, UploadRecordResult>,
9911012
originalRecords: Map<string, any>
@@ -998,9 +1019,11 @@ export class CardMigrationTool extends BaseMigrationTool implements MigrationToo
9981019
let oldrecord = originalRecords.get(key);
9991020
let newrecord = cardsUploadInfo.get(key);
10001021

1022+
const originalName: string = oldrecord['Name'];
10011023
let value: FlexcardStorage = {
10021024
name: newrecord?.newName,
10031025
isDuplicate: false,
1026+
originalName: originalName,
10041027
};
10051028

10061029
if (newrecord === undefined) {
@@ -1014,17 +1037,7 @@ export class CardMigrationTool extends BaseMigrationTool implements MigrationToo
10141037
}
10151038
}
10161039

1017-
let finalKey = `${oldrecord['Name']}`;
1018-
finalKey = finalKey.toLowerCase();
1019-
if (storage.fcStorage.has(finalKey)) {
1020-
// Key already exists - handle accordingly
1021-
Logger.logVerbose(this.messages.getMessage('keyAlreadyInStorage', ['Flexcard', finalKey]));
1022-
value.isDuplicate = true;
1023-
storage.fcStorage.set(finalKey, value);
1024-
} else {
1025-
// Key doesn't exist - safe to set
1026-
storage.fcStorage.set(finalKey, value);
1027-
}
1040+
this.addKeyToStorage(originalName, value, storage);
10281041
} catch (error) {
10291042
Logger.logVerbose(this.messages.getMessage('errorWhileProcessingFlexcardStorage'));
10301043
Logger.error(error);

src/migration/interfaces.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,10 +197,14 @@ export interface OmniScriptStorage extends Storage {
197197
type: string;
198198
subtype: string;
199199
language: string;
200+
originalType: string;
201+
originalSubtype: string;
202+
originalLanguage: string;
200203
}
201204

202205
export interface FlexcardStorage extends Storage {
203206
name: string;
207+
originalName: string;
204208
}
205209

206210
export class InvalidEntityTypeError extends Error {

src/migration/omniscript.ts

Lines changed: 77 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -640,44 +640,31 @@ export class OmniScriptMigrationTool extends BaseMigrationTool implements Migrat
640640
continue;
641641
}
642642

643+
const originalType: string = nameMapping.oldType;
644+
const originalSubtype: string = nameMapping.oldSubtype;
645+
const originalLanguage: string = nameMapping.oldLanguage;
646+
643647
let value: OmniScriptStorage = {
644648
type: nameMapping.newType,
645649
subtype: nameMapping.newSubType,
646650
language: nameMapping.newLanguage,
647651
isDuplicate: false,
652+
originalType: originalType,
653+
originalSubtype: originalSubtype,
654+
originalLanguage: originalLanguage,
648655
};
649656

650-
if (currentOsRecordInfo.errors && currentOsRecordInfo.errors.length > 0) {
651-
value.error = currentOsRecordInfo.errors;
657+
if (
658+
(currentOsRecordInfo.errors && currentOsRecordInfo.errors.length > 0) ||
659+
currentOsRecordInfo.migrationStatus === 'Needs Manual Intervention'
660+
) {
661+
value.error = [...(currentOsRecordInfo.errors || []), ...(currentOsRecordInfo.warnings || [])];
652662
value.migrationSuccess = false;
653663
} else {
654664
value.migrationSuccess = true;
655665
}
656666

657-
let finalKey = `${nameMapping.oldType}${nameMapping.oldSubtype}${this.cleanLanguageName(
658-
nameMapping.oldLanguage
659-
)}`;
660-
661-
if (this.IS_STANDARD_DATA_MODEL) {
662-
// Create object key for new storage format
663-
const keyObject: OmniScriptStandardKey = {
664-
type: nameMapping.oldType,
665-
subtype: nameMapping.oldSubtype,
666-
language: nameMapping.oldLanguage,
667-
};
668-
StorageUtil.addStandardOmniScriptToStorage(storage, keyObject, value);
669-
}
670-
671-
finalKey = finalKey.toLowerCase();
672-
if (storage.osStorage.has(finalKey)) {
673-
// Key already exists - handle accordingly
674-
Logger.logVerbose(this.messages.getMessage('keyAlreadyInStorage', ['Omniscript', finalKey]));
675-
value.isDuplicate = true;
676-
storage.osStorage.set(finalKey, value);
677-
} else {
678-
// Key doesn't exist - safe to set
679-
storage.osStorage.set(finalKey, value);
680-
}
667+
this.addKeyToStorage(originalType, originalSubtype, originalLanguage, storage, value);
681668
} catch (error) {
682669
Logger.error(error);
683670
}
@@ -686,6 +673,57 @@ export class OmniScriptMigrationTool extends BaseMigrationTool implements Migrat
686673
StorageUtil.printAssessmentStorage();
687674
}
688675

676+
private addKeyToStorage(
677+
originalType: string,
678+
originalSubtype: string,
679+
originalLanguage: string,
680+
storage: MigrationStorage,
681+
value: OmniScriptStorage
682+
): void {
683+
if (this.IS_STANDARD_DATA_MODEL) {
684+
// Create object key for new storage format
685+
const keyObject: OmniScriptStandardKey = {
686+
type: originalType,
687+
subtype: originalSubtype,
688+
language: originalLanguage,
689+
};
690+
StorageUtil.addStandardOmniScriptToStorage(storage, keyObject, value);
691+
}
692+
693+
let finalKey = `${originalType}${originalSubtype}${this.cleanLanguageName(originalLanguage)}`;
694+
finalKey = finalKey.toLowerCase();
695+
if (storage.osStorage.has(finalKey)) {
696+
if (this.allVersions) {
697+
const storedValue = storage.osStorage.get(finalKey);
698+
if (this.isDifferentOmniscript(storedValue, originalType, originalSubtype, originalLanguage)) {
699+
this.markDuplicateKeyInStorage(value, finalKey, storage);
700+
}
701+
} else {
702+
this.markDuplicateKeyInStorage(value, finalKey, storage);
703+
}
704+
} else {
705+
// Key doesn't exist - safe to set
706+
storage.osStorage.set(finalKey, value);
707+
}
708+
}
709+
710+
private markDuplicateKeyInStorage(value: OmniScriptStorage, finalKey: string, storage: MigrationStorage) {
711+
Logger.logVerbose(this.messages.getMessage('keyAlreadyInStorage', ['Omniscript', finalKey]));
712+
value.isDuplicate = true;
713+
storage.osStorage.set(finalKey, value);
714+
}
715+
716+
private isDifferentOmniscript(storedValue, type, subtype, language) {
717+
if (
718+
storedValue.originalType === type &&
719+
storedValue.originalSubtype === subtype &&
720+
storedValue.originalLanguage === language
721+
) {
722+
return false;
723+
}
724+
return true;
725+
}
726+
689727
private cleanLanguageName(language: string): string {
690728
// replace -, ( and ) and space with ''
691729
return language.replace(/[-() ]/g, '');
@@ -1168,47 +1206,33 @@ export class OmniScriptMigrationTool extends BaseMigrationTool implements Migrat
11681206
subtype: newrecord['subtype'],
11691207
language: newrecord['language'],
11701208
isDuplicate: false,
1209+
originalType: oldrecord[this.getFieldKey('Type__c')],
1210+
originalSubtype: oldrecord[this.getFieldKey('SubType__c')],
1211+
originalLanguage: oldrecord[this.getFieldKey('Language__c')],
11711212
};
11721213

11731214
// New record can be undefined
11741215
if (newrecord === undefined) {
11751216
value.migrationSuccess = false;
11761217
} else {
1177-
if (newrecord.hasErrors) {
1178-
value.error = newrecord.errors;
1218+
if (newrecord.hasErrors || newrecord.success === false) {
1219+
value.error = [...(newrecord.errors || []), ...(newrecord.warnings || [])];
11791220
value.migrationSuccess = false;
11801221
} else {
11811222
value.migrationSuccess = true;
11821223
}
11831224
}
11841225

1185-
let finalKey = `${oldrecord[this.getFieldKey('Type__c')]}${
1186-
oldrecord[this.getFieldKey('SubType__c')]
1187-
}${this.cleanLanguageName(oldrecord[this.getFieldKey('Language__c')])}`;
1188-
1189-
if (this.IS_STANDARD_DATA_MODEL) {
1190-
// Create object key for new storage format
1191-
const keyObject: OmniScriptStandardKey = {
1192-
type: oldrecord[this.getFieldKey('Type__c')],
1193-
subtype: oldrecord[this.getFieldKey('SubType__c')],
1194-
language: oldrecord[this.getFieldKey('Language__c')],
1195-
};
1196-
StorageUtil.addStandardOmniScriptToStorage(storage, keyObject, value);
1197-
}
1198-
1199-
finalKey = finalKey.toLowerCase();
1200-
if (storage.osStorage.has(finalKey)) {
1201-
// Key already exists - handle accordingly
1202-
Logger.logVerbose(this.messages.getMessage('keyAlreadyInStorage', ['Omniscript', finalKey]));
1203-
value.isDuplicate = true;
1204-
storage.osStorage.set(finalKey, value);
1205-
} else {
1206-
// Key doesn't exist - safe to set
1207-
storage.osStorage.set(finalKey, value);
1208-
}
1226+
this.addKeyToStorage(
1227+
oldrecord[this.getFieldKey('Type__c')],
1228+
oldrecord[this.getFieldKey('SubType__c')],
1229+
oldrecord[this.getFieldKey('Language__c')],
1230+
storage,
1231+
value
1232+
);
12091233
}
12101234
} catch (error) {
1211-
Logger.logVerbose(error);
1235+
Logger.error(error);
12121236
}
12131237
}
12141238
StorageUtil.printMigrationStorage();

0 commit comments

Comments
 (0)