Example #1
0
        public IArchivist CreateArchivistChain(DocumentProcessingAction[] actionsToPerform)
        {
            var archivistTypes       = GetArchivistTypesByActions(actionsToPerform?.Select(it => it.ActionName).ToArray());
            var archivistObjectTypes = archivistTypes
                                       .Select(archivistType => (ArchivistType: _archivistLinker.GetArchivistType(archivistType.ActionType), ActionName: archivistType.ActionName))
                                       .ToArray();
            IArchivist previous = null;
            IArchivist root     = null;

            foreach (var archivistObjectType in archivistObjectTypes)
            {
                var current = _achivistProvider.Resolve(archivistObjectType.ArchivistType);
                if (current is IConfigurableArchivist)
                {
                    ((IConfigurableArchivist)current).Configure(actionsToPerform.Single(it => it.ActionName == archivistObjectType.ActionName).RequiredData);
                }
                if (root == null)
                {
                    root = current;
                }
                if (previous != null)
                {
                    ((Archivist)previous).Successor = current;
                }
                previous = current;
            }
            return(root);
        }
Example #2
0
 public Repository(ICharacterFactory factory, IArchivist archivist, ILogMachine logMachine)
 {
     _factory   = factory;
     _archivist = archivist;
     _logger    = logMachine;
 }