The following code sample demonstrates a complete synchronize action. The sample uses a directory on the file system to represent a repository.
using System;
using System.IO;
using Autonomy.Connector;
namespace MyConnectorNamespace
{
public class MyConnector : ConnectorBase
{
public MyConnector(IConfig config, ILog log) :
base("My Connector")
{
}
public override void Synchronize(ISynchronizeTask task)
{
MySynchronize mySynchronize = new MySynchronize(task);
mySynchronize.Synchronize();
}
}
public class MySynchronize
{
public MySynchronize(ISynchronizeTask task)
{
_task = task;
}
public void Synchronize()
{
_task.Ingester.AddResultHandler(ResultHandler);
string directory = _task.TaskConfig.Read(
"Directory", "data");
string searchPattern = _task.TaskConfig.Read(
"SearchPattern", "*");
foreach (string file in Directory.GetFiles(directory,
searchPattern, SearchOption.AllDirectories))
{
if (_task.Stopping()) return;
using(IDocInfo doc = DocInfo.Create(_task.TaskConfig,
file, file, false))
{
_task.Ingester.Add(doc);
}
}
}
private void ResultHandler(IDocInfo docInfo,
IngestTaskType type, bool success)
{
if (success)
{
_task.Log.WriteLine(LogLevel.Normal, string.Format(
"Document {0}, ingest {1} succeeded!",
docInfo.Document.Reference, type));
}
else
{
_task.Log.WriteLine(LogLevel.Error, string.Format(
"Ingestion failed for {0}",
docInfo.Document.Reference));
}
}
private ISynchronizeTask _task;
}
}
|
|