public ImportBulkArtifactJob GetImportApi(int workspaceId) { var jobRequest = new ImportJobRequest(workspaceId) { ParentObjectIdSourceFieldName = PARENT_OBJECT_ID_SOURCE_FIELD_NAME }; return(GetImportJob(jobRequest)); }
/* This is an extension and should probably be in a separate class * /// <summary> * /// Get data table from folder location * /// </summary> * /// <param name="importJob">import job related to dataTable</param> * /// <param name="folder">native folder location to get files</param> * /// <param name="prepareDataTableAction">action to customize datatable</param> * /// <param name="fillDataRow">action to add extra values to a datarow</param> * /// <returns></returns> * public DataTable GetDocumentDataTableFromFolder( * this ImportBulkArtifactJob importJob, * string folder, * Action<DataTable> prepareDataTableAction = null, * Action<DataRow> fillDataRow = null) * { * if (string.IsNullOrEmpty(folder)) * { * throw new ArgumentNullException(nameof(folder)); * } * if (!Directory.Exists(folder)) * { * throw new DirectoryNotFoundException(); * } * * var dataTable = new DataTable(); * dataTable.Columns.Add(importJob.Settings.SelectedIdentifierFieldName); * dataTable.Columns.Add(Constants.NATIVE_FILE); * prepareDataTableAction?.Invoke(dataTable); * * var files = Directory.EnumerateFiles(folder); * foreach (var file in files) * { * var dataRow = dataTable.NewRow(); * dataRow[importJob.Settings.SelectedIdentifierFieldName] = Path.GetFileName(file); * dataRow[Constants.NATIVE_FILE] = Path.GetFullPath(file); * fillDataRow?.Invoke(dataRow); * dataTable.Rows.Add(dataRow); * } * * return dataTable; * } */ /// <summary> /// Wrapper to increase speed on creating files from a test data folder /// </summary> /// <param name="workspaceArtifactId">target workspace</param> /// <param name="folderName">location of test files</param> /// <param name="validateNativeTypes">use automatic engine to generate Relativity Native Type (defaulted False)</param> /// <param name="overwriteMode">how import will work on existant documents (defaulted APPEND)</param> public void ImportDocumentsInFolder(int workspaceArtifactId, string folderName, bool validateNativeTypes = false, OverwriteModeEnum overwriteMode = OverwriteModeEnum.Append) { var request = new ImportJobRequest(workspaceArtifactId) { DisableNativeValidation = !validateNativeTypes, OverwriteMode = overwriteMode }; var job = GetImportJob(request); // TODO: Figure out why the GetDocumetnDataTableFromFolder no longer exists //var dataTable = job.GetDocumentDataTableFromFolder(folderName); //Import(job, dataTable); }
/// <summary> /// Get import job based on request /// </summary> /// <param name="request">request for import job</param> /// <returns></returns> public ImportBulkArtifactJob GetImportJob(ImportJobRequest request, IImportAPI iapi = null) { iapi = iapi ?? new ImportAPI( _configs.AdminUsername, _configs.AdminPassword, IMPORT_API_ENDPOINT()); var fields = iapi.GetWorkspaceFields(request.WorkspaceID, request.ArtifactTypeID); var identifier = fields.FirstOrDefault(field => field.FieldCategory == FieldCategoryEnum.Identifier); if (identifier == null) { throw new ApplicationException($"No identifier field found for workspace id {request.WorkspaceID}"); } ImportBulkArtifactJob importJob; if (request.ArtifactTypeID == (int)ArtifactType.Document) { importJob = iapi.NewNativeDocumentImportJob(); } else { importJob = iapi.NewObjectImportJob(request.ArtifactTypeID); } // The name of the document identifier column must match the name of the document identifier field // in the workspace. importJob.Settings.SelectedIdentifierFieldName = identifier.Name; // Specify the ArtifactID of the document identifier field, such as a control number. importJob.Settings.IdentityFieldId = identifier.ArtifactID; // Hydrate job properties based on request request.HydrateImportJob(importJob); return(importJob); }