-
Notifications
You must be signed in to change notification settings - Fork 6
/
Sample12_ImportRelativityDynamicObject.cs
128 lines (106 loc) · 5.62 KB
/
Sample12_ImportRelativityDynamicObject.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
// <copyright file="Sample12_ImportRelativityDynamicObject.cs" company="Relativity ODA LLC">
// © Relativity All Rights Reserved.
// </copyright>
namespace Relativity.Import.Samples.DotNetFrameworkClient.SamplesCollection
{
using System;
using System.Threading.Tasks;
using Relativity.Import.Samples.DotNetFrameworkClient.ImportSampleHelpers;
using Relativity.Import.V1;
using Relativity.Import.V1.Builders.DataSource;
using Relativity.Import.V1.Builders.Rdos;
using Relativity.Import.V1.Models.Settings;
using Relativity.Import.V1.Models.Sources;
/// <summary>
/// Class containing examples of using import service SDK.
/// </summary>
public partial class ImportServiceSample
{
/// <summary>
/// Example of import Relativity Dynamic Object (RDO).
/// NOTE: Existing RDO "Domain" is used in this example. Please insert documents from sample01 first.
/// </summary>
/// <returns>A <see cref="Task"/> representing the result of the asynchronous operation.</returns>
public async Task Sample12_ImportRelativityDynamicObject()
{
Console.WriteLine($"Running {nameof(this.Sample12_ImportRelativityDynamicObject)}");
// GUID identifiers for import job and data source.
Guid importId = Guid.NewGuid();
Guid sourceId = Guid.NewGuid();
// destination workspace artifact Id.
const int workspaceId = 1000000;
// set of columns indexes in load file used in import settings.
// example import of Domain RDO.
const int nameColumnIndex = 0;
const int domainEmailCcColumnIndex = 3;
const int domainEmailFromColumnIndex = 4;
const int domainEmailToColumnIndex = 5;
// RDO artifact type id
const int domainArtifactTypeID = 1000027;
// Path to the load file used in data source settings.
const string rdoLoadFile = "\\files\\T001\\Files\\SampleDataSources\\rdo_load_file_01.dat";
// Configuration RDO settings for Relativity Dynamic Objects (RDOs) import. Builder is used to create settings.
ImportRdoSettings importSettings = ImportRdoSettingsBuilder.Create()
.WithAppendMode()
.WithFieldsMapped(f => f
.WithField(nameColumnIndex, "Name")
// If you do not use these fields please just comment them. Otherwise use sample01 first to import related documents.
.WithField(domainEmailCcColumnIndex, "Domains (Email CC)")
.WithField(domainEmailFromColumnIndex, "Domains (Email From)")
.WithField(domainEmailToColumnIndex, "Domains (Email To)"))
.WithRdo(r => r
.WithArtifactTypeId(domainArtifactTypeID)
.WithoutParentColumnIndex());
// Configuration settings for data source. Builder is used to create settings.
DataSourceSettings dataSourceSettings = DataSourceSettingsBuilder.Create()
.ForLoadFile(rdoLoadFile)
.WithDefaultDelimiters()
.WithFirstLineContainingHeaders()
.WithEndOfLineForWindows()
.WithStartFromBeginning()
.WithDefaultEncoding()
.WithDefaultCultureInfo();
using (Relativity.Import.V1.Services.IRDOConfigurationController rdoConfiguration =
this.serviceFactory.CreateProxy<Relativity.Import.V1.Services.IRDOConfigurationController>())
using (Relativity.Import.V1.Services.IImportJobController importJobController =
this.serviceFactory.CreateProxy<Relativity.Import.V1.Services.IImportJobController>())
using (Relativity.Import.V1.Services.IImportSourceController importSourceController =
this.serviceFactory.CreateProxy<Relativity.Import.V1.Services.IImportSourceController>())
{
// Create import job.
Response response = await importJobController.CreateAsync(
importJobID: importId,
workspaceID: workspaceId,
applicationName: "Import-service-sample-app",
correlationID: "Sample-job-import-0012");
ResponseHelper.EnsureSuccessResponse(response, "IImportJobController.CreateAsync");
// Add import rdo settings to existing import job.
response = await rdoConfiguration.CreateAsync(workspaceId, importId, importSettings);
ResponseHelper.EnsureSuccessResponse(response, "IRDOConfigurationController.CreateAsync");
// Add data source settings to existing import job.
response = await importSourceController.AddSourceAsync(workspaceId, importId, sourceId, dataSourceSettings);
ResponseHelper.EnsureSuccessResponse(response, "IImportSourceController.AddSourceAsync");
// Start import job.
response = await importJobController.BeginAsync(workspaceId, importId);
ResponseHelper.EnsureSuccessResponse(response, "IImportJobController.BeginAsync");
// End import job.
await importJobController.EndAsync(workspaceId, importId);
ResponseHelper.EnsureSuccessResponse(response, "IImportJobController.EndAsync");
// It may take some time for import job to be completed. Request data source details to monitor the current state.
var dataSourceState = await this.WaitImportDataSourceToBeCompleted(
() => importSourceController.GetDetailsAsync(workspaceId, importId, sourceId),
10000);
// Get current import progress for specific data source.
var importProgress = await importSourceController.GetProgressAsync(workspaceId, importId, sourceId);
if (importProgress.IsSuccess)
{
Console.WriteLine($"\nData source state: {dataSourceState}");
Console.WriteLine($"Import progress: Total records: {importProgress.Value.TotalRecords}, Imported records: {importProgress.Value.ImportedRecords}, Records with errors: {importProgress.Value.ErroredRecords}");
}
}
}
}
}
// Expected output for sample load file.
// Data source state: Completed
// Import progress: Total records: 3, Imported records: 3, Records with errors: 0