예제 #1
0
        public FilterResult Filter(
            IFileResource sourceResource,
            IEnumerable <IFileResource> targetResources,
            ITargetHistoryRepository targetHistoryRepository,
            IFileSystem source,
            IFileSystem target)
        {
            return(HaveMatchingTargetResource() ||
                   HaveMatchingHistoryItem()
                       ? FilterResult.Ambivalent
                       : FilterResult.Include);

            bool HaveMatchingTargetResource()
            {
                var existing = targetResources.FirstOrDefault(
                    r => r.RelativePath == sourceResource.RelativePath
                    );

                return(existing?.Size == sourceResource.Size);
            }

            bool HaveMatchingHistoryItem()
            {
                var historyItem = targetHistoryRepository.Find(
                    sourceResource.RelativePath
                    );

                return(historyItem?.Size == sourceResource.Size);
            }
        }
예제 #2
0
 private static bool ResourceExistsInHistory(
     ITargetHistoryRepository targetHistoryRepository,
     IFileResource sourceResource)
 {
     return(targetHistoryRepository.Find(
                sourceResource.RelativePath
                )
            ?.Size ==
            sourceResource.Size);
 }
        private bool HistoryFileExists(
            ITargetHistoryRepository targetHistoryRepository,
            IFileResource sourceResource)
        {
            var existing = targetHistoryRepository.Find(
                sourceResource.RelativePath
                );

            return(existing?.Size == sourceResource.Size);
        }