Example #1
0
        public void TranslateTest()
        {
            var translator   = new KeySwitchToStudioOneKeySwitchModel();
            var articulation = TestDataGenerator.CreateArticulation(
                new MidiNoteOn[] { IMidiNoteOnFactory.Default.Create(1, 23) },
                new MidiControlChange[] {},
                new MidiProgramChange[] {}
                );
            var entity = TestDataGenerator.CreateKeySwitch(articulation);
            var xml    = translator.Translate(entity);

            Console.Out.WriteLine(xml);
        }
        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);
        }