using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Laserfiche.RepositoryAccess;
using Laserfiche.DocumentServices;
using Laserfiche.RepositoryAccess.Records;
using Laserfiche.RepositoryAccess.Linq;
namespace ConsoleApplication3
{
class Program
{
public static bool IsRecordSeries(string thafoldr, Session thasession)
{
try
{
RecordSeriesInfo RSI = Folder.GetRecordSeriesInfo(thafoldr, thasession);
RSI.GetSeriesProperties();
return true;
}
catch
{
return false;
}
}
static void Main(string[] args)
{
Server myServ = new Server("LFServer.nothingbut.net"); // Create Server Object
RepositoryRegistrationCollection repository = myServ.GetRepositories(); // Get repo names
RepositoryRegistration connectionrobot = repository["IMadeThisUp"]; // Registers Repository
Session skynet = new Session(); // Creates a new session
try
{
skynet.Connect(connectionrobot); // Connects session to repo
skynet.LogIn(connectionrobot); // Uses ultra top secret password to log in
}
catch (Exception e)
{
Console.WriteLine("{0} Exception caught.", e); // Throws exceptions if connection screws up
}
List<EntryRow> contents = new List<EntryRow>();
FolderInfo rootFolder = Folder.GetFolderInfo("\\\\", skynet);
EntryListingSettings entrySetting = new EntryListingSettings();
entrySetting.EntryFilter = EntryTypeFilter.AllTypes;
entrySetting.AddColumn(SystemColumn.DisplayName);
// get the contents of the root folder
using (FolderListing listing = rootFolder.OpenFolderListing(entrySetting, 1000))
{
// the listing is 1-based,
int rowCount = listing.RowsCount;
for (int i = 1; i <= rowCount; ++i)
{
// construct a new row from the data in the folder listing, and place it in the list
EntryRow newRow = new EntryRow();
newRow.Name = listing.GetDatumAsString(i, SystemColumn.DisplayName);
contents.Add(newRow);
}
FolderInfo cur_foldr;
RecordFolderProperties rfprop;
List<string> serieslist = new List<string>();
foreach (EntryRow thing in contents)
{
string myfolder = "\\\\" + thing.Name;
Console.WriteLine(myfolder);
cur_foldr = Folder.GetFolderInfo(myfolder, skynet);
if (IsRecordSeries(myfolder, skynet))
{
serieslist.Add(myfolder);
//rfprop = cur_foldr.GetRFProperties();
Console.WriteLine("Yup");
//Console.WriteLine(thing.Name);
}
else
{
Console.WriteLine("Nope");
}
Console.ReadLine();
}
}
}
}
}
I'm working on a script to determine if a root folder is a RecordSeries and then determine which Record Folders and Records underneath that series are eligible for cutoff... Currently I start by testing the root folders for whether or not GetSeriesProperties throws an exception. I know I know, that's horrendous EAFP stuff, but I couldn't find a IsRecordSeries property. I did find the EntryType Enumeration from the documentation, but I'm not sure how to go about using it.
In short, my question is, "How do I go about using EntryType Enumeration in order to classify my documents as RecordSeries, Record Folders, Records, etc?"