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.
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.
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.
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.
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;
}