示例#1
0
        public async Task WritesWithCustomAttributeConvertersAsync()
        {
            var writerService = new CsvWriterService();

            var attributes = new List <CustomAttribute>();

            for (var i = 0; i < 3; i++)
            {
                attributes.Add(new CustomAttribute
                {
                    Value = $"Attribute{i + 1}"
                });
            }

            var operations = new List <Operation>();

            for (var i = 0; i < 5; i++)
            {
                var operation = new Operation
                {
                    Id      = i + 1,
                    Name    = $"Operation {i + 1}",
                    Enabled = true
                };

                for (var j = 0; j < 5; j++)
                {
                    operation.Attributes[$"Attribute{j + 1}"] = $"Value {j + 1}";
                }

                operations.Add(operation);
            }

            var temporaryFileContext = new TemporaryFilesContext($"{nameof(CsvWriterServiceFacts)}_{nameof(WritesWithCustomAttributeConvertersAsync)}");
            var fileName             = temporaryFileContext.GetFile("operations.csv");

            var classMap = new OperationMap();

            classMap.Initialize(attributes.Select(x => x.Value));

            var csvContext = new CsvContext <Operation>
            {
                ClassMap = classMap
            };

            using (var stream = File.Create(fileName))
            {
                using (var textWriter = new StreamWriter(stream))
                {
                    var csvWriter = new CsvWriter(textWriter);
                    csvWriter.Configuration.RegisterClassMap(classMap);

                    csvWriter.WriteRecords(operations);
                }
            }

            await writerService.WriteRecordsAsync(operations, fileName, csvContext);

            Approvals.VerifyFile(fileName);
        }
        public NetworkOperationWriter(OperationMap map, ISerializationService serializer, IOperationTransport transport)
        {
            _map        = map;
            _serializer = serializer;

            _transport = transport;
        }
示例#3
0
        protected ServerContextBase(ISerializer serializer)
        {
            Serializer = serializer;

            OperationMap           = new OperationMap();
            OperationsComponentMap = new ComponentMap();
        }
        public void ShouldRetrieveOperationByType()
        {
            var map = new OperationMap();

            var mappedOperation = map.MapOperation(typeof(TestOperation));

            map.GetMappedOperation(mappedOperation.OperationType).ShouldBe(mappedOperation);
        }
        public void ShouldMapOperations()
        {
            var map = new OperationMap();

            var mappedOperation = map.MapOperation(typeof(TestOperation));

            mappedOperation.OperationType.ShouldBe(typeof(TestOperation));
        }
        public void SetupFixture()
        {
            _map = new OperationMap();

            _map.MapOperation(typeof(TestOperation));
            _map.MapOperation(typeof(TestOperationWithResponse));

            _serializer = new SerializationService(new BinarySerializer());
        }
示例#7
0
        public void Setup()
        {
            OperationMap.MapOperationsInAssembly(typeof(CreateComponentOperation).Assembly);

            var builder = new ContainerBuilder();

            ConfigureContainer(builder);

            Container = builder.Build();
        }
        public void ShouldFailInTryingToFindOperationByName()
        {
            var map = new OperationMap();

            Type foundType;
            var  success = map.TryGetMappedOperation("InvalidOperationType", out foundType);

            success.ShouldBeFalse();
            foundType.ShouldBeNull();
        }
示例#9
0
        public OperationSystem(OperationMap map, ISerializationService serializer, IOperationTransport transport, Func <Type, IOperationHandler> handlerFactory)
        {
            var writer = new NetworkOperationWriter(map, serializer, transport);
            var reader = new NetworkOperationReader(map, serializer);

            var activeOperations = new ActiveOperationsManager();

            Dispatcher = new OperationDispatcher(activeOperations, writer);
            Processor  = new OperationProcessor(new OperationService(activeOperations, writer, handlerFactory), reader);
        }
示例#10
0
        public void ShouldSucceedInTryingToFindOperationByName()
        {
            var map             = new OperationMap();
            var mappedOperation = map.MapOperation(typeof(TestOperation));

            Type foundType;
            var  success = map.TryGetMappedOperation("TestOperation", out foundType);

            success.ShouldBeTrue();
            foundType.ShouldBe(mappedOperation.OperationType);
        }
 public NetworkOperationReader(OperationMap map, ISerializationService serializer)
 {
     _map        = map;
     _serializer = serializer;
 }
 public void SetupFixture()
 {
     _map = new OperationMap();
     _map.MapOperation(typeof(TestOperation));
     _map.MapOperation(typeof(TestOperationWithResponse));
 }
示例#13
0
    public OperationMapInfo Operation(string typeName)
    {
        MapPermission.ViewMap.AssertAuthorized();

        return(OperationMap.GetOperationMapInfo(TypeLogic.GetType(typeName)));
    }
示例#14
0
        /// <summary>
        /// Actually does the file moves.
        /// </summary>
        protected override void DoFileOperations()
        {
            // If the operation map is empty, exit (return) the method.
            if (OperationMap.Count <= 0)
            {
                return;
            }

            // loop thru our file list
            for (int i = 0; i < OperationMap.Count; i++)
            {
                // Setup a temporary var to hold the current file operation
                // details.
                FileOperation currentOperation = OperationMap[i];
                if (currentOperation.SourceIsIdenticalToTarget())
                {
                    Log(Level.Warning, String.Format("Skipping self-move of {0}.",
                                                     currentOperation.Source));
                    continue;
                }

                try
                {
                    Log(Level.Verbose, "Moving {0}.", currentOperation.ToString());

                    string destinationDirectory = null;

                    switch (currentOperation.OperationType)
                    {
                    case OperationType.FileToFile:
                        // Setup the dest directory var
                        destinationDirectory =
                            Path.GetDirectoryName(currentOperation.Target);

                        // create directory if not present
                        if (!Directory.Exists(destinationDirectory))
                        {
                            Directory.CreateDirectory(destinationDirectory);
                            Log(Level.Verbose, "Created directory '{0}'.",
                                destinationDirectory);
                        }

                        // Ensure the target file is removed before
                        // attempting to move.
                        if (File.Exists(currentOperation.Target))
                        {
                            File.Delete(currentOperation.Target);
                        }

                        // move the file with filters
                        FileUtils.MoveFile(currentOperation.Source,
                                           currentOperation.Target, Filters,
                                           InputEncoding, OutputEncoding);

                        break;

                    case OperationType.FileToDirectory:
                        // Setup the dest directory var
                        destinationDirectory = currentOperation.Target;

                        // Setup a local var that combines the directory
                        // of the target path with the source file name.
                        string targetFile = Path.Combine(destinationDirectory,
                                                         Path.GetFileName(currentOperation.Source));

                        // create directory if not present
                        if (!Directory.Exists(destinationDirectory))
                        {
                            Directory.CreateDirectory(destinationDirectory);
                            Log(Level.Verbose, "Created directory '{0}'.",
                                destinationDirectory);
                        }

                        // Ensure the target file is removed before
                        // attempting to move.
                        if (File.Exists(targetFile))
                        {
                            File.Delete(targetFile);
                        }

                        // move the file with filters
                        FileUtils.MoveFile(currentOperation.Source,
                                           targetFile, Filters, InputEncoding, OutputEncoding);

                        break;

                    case OperationType.DirectoryToDirectory:

                        // Move over the entire directory with filters
                        FileUtils.MoveDirectory(currentOperation.Source,
                                                currentOperation.Target, Filters, InputEncoding,
                                                OutputEncoding);
                        break;

                    default:
                        throw new
                              BuildException("Unrecognized move operation. " +
                                             "The move task can only move a file to file, " +
                                             "file to directory, or directory to directory.");
                    }
                }
                catch (IOException ex)
                {
                    throw new BuildException(string.Format(CultureInfo.InvariantCulture,
                                                           "Failed to move {0}.", currentOperation.ToString()),
                                             Location, ex);
                }
            }

            int fileMovements = OperationMap.CountFileOperations();
            int dirMovements  = OperationMap.CountDirectoryOperations();

            if (fileMovements > 0)
            {
                Log(Level.Info, "{0} file{1} moved.", fileMovements,
                    fileMovements != 1 ? "s" : "");
            }
            if (dirMovements > 0)
            {
                Log(Level.Info, "{0} {1} moved.", dirMovements,
                    dirMovements != 1 ? "directories" : "directory");
            }
        }