Folder
Within a Relativity workspace, you can use folders to organize content. For more information, see the Relativity Documentation site.
The Services API supports perform create, read, delete, and query operations on a Folder DTO.
Note: You can also create, read, and delete folders using the single-artifact methods common to all Relativity DTOs. For more information, see Single-artifact access.
This page contains the following information:
Create a Folder
You can use the Create() method on the Folder repository to add a new folder to Relativity as illustrated in this code sample.
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 | public static bool Create_Folder_Using_Repository(IRSAPIClient proxy) { //STEP 1: Create a Folder object. DTOs.Folder folder = new DTOs.Folder { ParentArtifact = new DTOs.Artifact(1003697), Name = "My New Folder" }; //STEP 2: Set Folder properties. //STEP 3: Create the Folder. DTOs.WriteResultSet<DTOs.Folder> results; try { results = proxy.Repositories.Folder.Create(folder); } catch (Exception ex) { Console.WriteLine( "An error occurred: {0}" , ex.Message); return false ; } //STEP 4: Check for success. if (!results.Success) { Console.WriteLine( "Error: " + results.Message); return false ; } else { Console.Write( "Folder created successfully." ); } return true ; } |
Read a Folder
To read Field values on a Folder, you can use the Read() method on the Folder repository as illustrated in this code sample.
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 | public static bool Read_Folder_Using_Repository(IRSAPIClient proxy) { // STEP 1: Read current values. Folder requestArtifact = new Folder(1003697); requestArtifact.Fields.Add( new FieldValue(FolderFieldNames.Name)); ResultSet<Folder> readResult1; try { readResult1 = proxy.Repositories.Folder.Read(requestArtifact); } catch (Exception ex) { Console.WriteLine( string .Format( "An error occurred while reading the folder: {0}" , ex.Message)); return false ; } if (!readResult1.Success) { Console.WriteLine( "Error reading the folder: " + readResult1.Message); return false ; } // STEP 2: Get the folder from the read results. Folder readArtifact = readResult1.Results.FirstOrDefault().Artifact; if (readArtifact == null ) { Console.WriteLine( "There is no folder with ArtifactID 1038603" ); return false ; } else { Console.WriteLine(String.Format( "ArtifactID:{0} ParentArtifactID:{1} - {2}" , readArtifact.ArtifactID, readArtifact.ParentArtifact.ArtifactID, readArtifact.Name)); } return true ; } |
Delete a Folder
You can use the Delete() method on a Folder repository to remove it as illustrated in this code sample.
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 | public static bool Delete_Folder_Using_Repository(IRSAPIClient proxy) { // STEP 1: Read current values. DTOs.Folder requestArtifact = new Folder(1036275); ResultSet<DTOs.Folder> readResult1; try { readResult1 = proxy.Repositories.Folder.Read(requestArtifact); } catch (Exception ex) { Console.WriteLine( string .Format( "An error occurred while reading the folder: {0}" , ex.Message)); return false ; } if (!readResult1.Success) { Console.WriteLine( "Error reading the folder: " + readResult1.Message); return false ; } // STEP 2: Get the folder from the read results. DTOs.Folder readArtifact = readResult1.Results.FirstOrDefault().Artifact; if (readArtifact == null ) { Console.WriteLine( "There is no folder with ArtifactID 1037993" ); return false ; } // STEP 3: Delete the folder. WriteResultSet<DTOs.Folder> deleteResult; try { deleteResult = proxy.Repositories.Folder.Delete(requestArtifact); } catch (Exception ex) { Console.WriteLine( "An error occurred deleting the folder: {0}" , ex.Message); return false ; } if (!deleteResult.Success) { Console.WriteLine( "Error deleting the folder: " + deleteResult.Message); return false ; } // STEP 4: To confirm the deletion, try to find the folder again. // Since the folder doesn't exist, the read operation fails. (ResultSet.Success is set to false). // You can query for the folder's ArtifactID. The result is Success with 0 results. WholeNumberCondition artifactIDCondition = new WholeNumberCondition(ArtifactQueryFieldNames.ArtifactID, NumericConditionEnum.EqualTo, 1037993); DTOs.Query<DTOs.Folder> query = new DTOs.Query<DTOs.Folder> { Condition = artifactIDCondition }; QueryResultSet<DTOs.Folder> queryResult; try { queryResult = proxy.Repositories.Folder.Query(query); } catch (Exception ex) { Console.WriteLine( "An error occurred querying the folder after it was deleted: {0}" , ex.Message); return false ; } if (queryResult.Success) { if (queryResult.Results.Count == 0) Console.WriteLine( "Delete succeeded, the folder has been deleted" ); } else { Console.WriteLine( "Error querying the folder after deletion: " + queryResult.Message); return false ; } return true ; } |
Query for a Folder
To query for a Folder, you can use the fields listed in the following table. For more information, see Search Relativity.
Fields for Folder queries | |
---|---|
Artifact ID | System Created By |
Name | System Created On |
Parent Artifact ID | System Last Modified By |
Parent Artifact Name | System Last Modified On |
The following sample code illustrates how to query for Folder DTOs using a repository.
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 | public static bool Query_Folder_Using_Repository(IRSAPIClient proxy) { // STEP 1: Create the query. Query<Folder> query = new Query<kCura.Relativity.Client.DTOs.Folder>(); query.Fields.Add( new FieldValue(FolderFieldNames.Name)); ResultSet<Folder> readResult1; // STEP 2: Query for the folders. try { readResult1 = proxy.Repositories.Folder.Query(query); } catch (Exception ex) { Console.WriteLine( string .Format( "An error occurred while querying for the folder: {0}" , ex.Message)); return false ; } if (!readResult1.Success) { Console.WriteLine( "Error reading the folder: " + readResult1.Message); return false ; } // STEP 3: Use the results. foreach (Result<Folder> folder in readResult1.Results) { Console.WriteLine(String.Format( "ArtifactID:{0} ParentArtifactID:{1} - {2}" , folder.Artifact.ArtifactID, folder.Artifact.ParentArtifact.ArtifactID, folder.Artifact.Name)); } return true ; } |