Sample Code for the Synchronize Action
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; } }