Skip to content

Commit c546b9d

Browse files
committed
feat: Added the new useSourceCSVFile property
1 parent 607956b commit c546b9d

4 files changed

Lines changed: 28 additions & 20 deletions

File tree

src/modules/models/job_models/migrationJob.ts

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -203,17 +203,17 @@ export default class MigrationJob {
203203
this.script.addonRuntime.createSfdmuPluginJob();
204204

205205
// ------------------------------- Internal functions --------------------------------------- //
206-
function ___applySpecialTaskOrder(tasks: Task[], specialOrderToApply: Map<string, string[]>) {
206+
function ___applySpecialTaskOrder(tasks: Task[], specialOrderToApply: Map<string, string[]>) {
207207
for (let leftIndex = 0; leftIndex < tasks.length - 1; leftIndex++) {
208208
const leftTask = tasks[leftIndex];
209209
for (let rightIndex = leftIndex + 1; rightIndex < tasks.length; rightIndex++) {
210210
const rightTask = tasks[rightIndex];
211-
const childObjects = specialOrderToApply.get(rightTask.sObjectName);
211+
const childObjects = specialOrderToApply.get(rightTask.sObjectName);
212212
if (childObjects && childObjects.includes(leftTask.sObjectName)) {
213-
tasks.splice(rightIndex, 1);
214-
tasks.splice(leftIndex, 0, rightTask);
213+
tasks.splice(rightIndex, 1);
214+
tasks.splice(leftIndex, 0, rightTask);
215215
}
216-
}
216+
}
217217
}
218218
}
219219

@@ -288,7 +288,7 @@ export default class MigrationJob {
288288
// Load mapping files
289289
await this._loadValueMappingFileAsync();
290290

291-
if (this.script.sourceOrg.media == DATA_MEDIA_TYPE.File) {
291+
if (this.script.sourceOrg.media == DATA_MEDIA_TYPE.File || this.script.hasUseSourceCSVFile) {
292292

293293
// Prepare source CSV files
294294
await this._mergeUserGroupCSVfiles();
@@ -958,20 +958,22 @@ export default class MigrationJob {
958958
}
959959

960960
private _copyCSVFilesToSourceSubDir() {
961-
this.tasks.forEach(task => {
962-
if (fs.existsSync(task.data.csvFilename)) {
963-
fs.copyFileSync(task.data.csvFilename, task.data.sourceCsvFilename);
964-
}
965-
});
961+
this.tasks.filter(task => this.script.sourceOrg.isFileMedia || task.scriptObject.useSourceCSVFile)
962+
.forEach(task => {
963+
if (fs.existsSync(task.data.csvFilename)) {
964+
fs.copyFileSync(task.data.csvFilename, task.data.sourceCsvFilename);
965+
}
966+
});
966967
}
967968

968969
private async _validateAndRepairSourceCSVFiles(): Promise<void> {
969970

970971
let self = this;
972+
let thisTasks = this.tasks.filter(task => this.script.sourceOrg.isFileMedia || task.scriptObject.useSourceCSVFile);
971973

972974
// Analyse csv structure
973-
for (let index = 0; index < this.tasks.length; index++) {
974-
const task = this.tasks[index];
975+
for (let index = 0; index < thisTasks.length; index++) {
976+
const task = thisTasks[index];
975977
this.csvIssues = this.csvIssues.concat(await task.validateCSV());
976978
}
977979

@@ -983,13 +985,13 @@ export default class MigrationJob {
983985
}
984986

985987
// Check and repair the source csvs
986-
for (let index = 0; index < this.tasks.length; index++) {
987-
const task = this.tasks[index];
988+
for (let index = 0; index < thisTasks.length; index++) {
989+
const task = thisTasks[index];
988990
this.csvIssues = this.csvIssues.concat(await task.repairCSV(this.cachedCSVContent, true));
989991
}
990992

991-
for (let index = 0; index < this.tasks.length; index++) {
992-
const task = this.tasks[index];
993+
for (let index = 0; index < thisTasks.length; index++) {
994+
const task = thisTasks[index];
993995
this.csvIssues = this.csvIssues.concat(await task.repairCSV(this.cachedCSVContent, false));
994996
}
995997

src/modules/models/job_models/migrationJobTask.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -882,7 +882,7 @@ export default class MigrationJobTask {
882882
if (queryMode != "target") {
883883
// Read main data *************************************
884884
// ****************************************************
885-
if (this.sourceData.media == DATA_MEDIA_TYPE.File && queryMode == "forwards") {
885+
if ((this.sourceData.media == DATA_MEDIA_TYPE.File || this.scriptObject.useSourceCSVFile) && queryMode == "forwards") {
886886
// Read from the SOURCE CSV FILE ***********************************
887887
if (!reversed) {
888888
let query = this.createQuery();

src/modules/models/script_models/script.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ export default class Script implements IAppScript, ISfdmuRunScript {
146146

147147
get isPersonAccountEnabled(): boolean {
148148
return (this.sourceOrg.isPersonAccountEnabled || this.sourceOrg.isFileMedia)
149-
&& (this.targetOrg.isPersonAccountEnabled || this.targetOrg.isFileMedia);
149+
&& (this.targetOrg.isPersonAccountEnabled || this.targetOrg.isFileMedia);
150150
}
151151

152152
get bulkApiVersionNumber(): number {
@@ -205,6 +205,10 @@ export default class Script implements IAppScript, ISfdmuRunScript {
205205
return this.objects.some(object => object.isHierarchicalDeleteOperation);
206206
}
207207

208+
get hasUseSourceCSVFile() {
209+
return !this.sourceOrg.isFileMedia && this.objects.some(object => object.useSourceCSVFile);
210+
}
211+
208212

209213
// ----------------------- Public methods -------------------------------------------
210214
/**
@@ -346,7 +350,7 @@ export default class Script implements IAppScript, ISfdmuRunScript {
346350
async cleanupDirectories(): Promise<void> {
347351

348352
// Perform clean-up the source directory if need --------------
349-
if (this.sourceOrg.media == DATA_MEDIA_TYPE.File) {
353+
if (this.sourceOrg.media == DATA_MEDIA_TYPE.File || this.hasUseSourceCSVFile) {
350354
try {
351355
Common.deleteFolderRecursive(this.sourceDirectoryPath, true);
352356
} catch (ex) {

src/modules/models/script_models/scriptObject.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ export default class ScriptObject implements ISfdmuRunScriptObject {
9797
parallelBulkJobs: number = 1;
9898
parallelRestJobs: number = 1;
9999

100+
useSourceCSVFile: boolean;
101+
100102
@Type(() => ScriptAddonManifestDefinition)
101103
beforeAddons: ScriptAddonManifestDefinition[] = new Array<ScriptAddonManifestDefinition>();
102104

0 commit comments

Comments
 (0)