示例#1
0
        public void ExportTest()
        {
            #region Adding To DB
            var dbRepository = new LiteDbKeySwitchRepository(new MemoryStream());
            var articulation = TestDataGenerator.CreateArticulation(
                new MidiNoteOn[] { IMidiNoteOnFactory.Default.Create(1, 23) },
                new MidiControlChange[] {},
                new MidiProgramChange[] {}
                );
            var entity = TestDataGenerator.CreateKeySwitch(articulation);
            dbRepository.Save(entity);
            #endregion

            var inputData  = new ExportingStudioOneKeySwitchRequest(entity.DeveloperName.Value, entity.ProductName.Value);
            var interactor = new ExportingStudioOneKeySwitchInteractor(
                dbRepository,
                new KeySwitchToStudioOneKeySwitchModel(),
                new IExportingStudioOneKeySwitchPresenter.Null()
                );

            var response = interactor.Execute(inputData);

            foreach (var i in response.Elements)
            {
                Console.WriteLine($"Expressionmap of {i.KeySwitch.InstrumentName}");
                Console.WriteLine(i.XmlText);
            }
        }
        public int Execute(ICommandOption opt)
        {
            var option = (CommandOption)opt;

            using var repository = new LiteDbKeySwitchRepository(option.DatabasePath);
            var translator = new KeySwitchToStudioOneKeySwitchModel();
            var presenter  = new IExportingStudioOneKeySwitchPresenter.Null();
            var interactor = new ExportingStudioOneKeySwitchInteractor(repository, translator, presenter);

            var input = new ExportingStudioOneKeySwitchRequest(option.Developer, option.Product, option.Instrument);

            Console.WriteLine($"Developer=\"{option.Developer}\", Product=\"{option.Product}\", Instrument=\"{option.Instrument}\"");

            var response = interactor.Execute(input);

            if (!response.Elements.Any())
            {
                Console.WriteLine("records not found");
                return(0);
            }

            foreach (var i in response.Elements)
            {
                var outputDirectory = option.OutputDirectory;

                if (option.DirectoryStructure)
                {
                    outputDirectory = EntityDirectoryHelper.CreateDirectoryTree(
                        i.KeySwitch,
                        new DirectoryPath(option.OutputDirectory)
                        ).Path;
                }
                else
                {
                    PathUtility.CreateDirectory(outputDirectory);
                }

                var prefix = $"{i.KeySwitch.ProductName} {i.KeySwitch.InstrumentName}";
                var path   = $"{prefix}.keyswitch";
                path = PathUtility.GenerateFilePathWhenExist(path, outputDirectory, option.OverWrite);

                Console.Out.WriteLine($"export to {path}");
                File.WriteAllText(path, i.XmlText.Value, Encoding.UTF8);
            }

            return(0);
        }