Пример #1
0
        public int Execute(ICommandOption opt)
        {
            var option = (CommandOption)opt;

            using var repository = new LiteDbKeySwitchRepository(option.DatabasePath);
            var translator = new KeySwitchListListToJsonModelList
            {
                Formatted = true
            };

            var presenter  = new ISearchingPresenter.Console();
            var interactor = new SearchingInteractor(repository, translator, presenter);

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

            var response = interactor.Execute(input);

            if (StringHelper.IsNullOrTrimEmpty(option.OutputPath))
            {
                Console.Out.WriteLine($"{response.Text}");
            }
            else
            {
                File.WriteAllText(option.OutputPath, response.Text.Value, Encoding.UTF8);
                Console.Out.WriteLine($"Output json to {option.OutputPath}");
            }

            Console.Error.WriteLine($"{response.FoundCount} record(s) found");

            return(0);
        }
Пример #2
0
        public void RemoveTest()
        {
            var repository = new LiteDbKeySwitchRepository(new MemoryStream());
            var record     = TestDataGenerator.CreateKeySwitch();

            #region Delete by Id
            repository.Save(record);
            Assert.AreEqual(1, repository.Count());

            repository.Delete(record.Id);
            Assert.AreEqual(0, repository.Count());
            #endregion

            #region Delete by DeveloperName and ProductName
            repository.Save(record);
            Assert.AreEqual(1, repository.Count());

            repository.Delete(record.DeveloperName, record.ProductName);
            Assert.AreEqual(0, repository.Count());
            #endregion

            #region Delete All
            repository.Save(record);
            Assert.AreEqual(1, repository.Count());

            repository.DeleteAll();
            Assert.AreEqual(0, repository.Count());
            #endregion
        }
Пример #3
0
        public int Execute(ICommandOption opt)
        {
            var option = (CommandOption)opt;

            var info = new KeySwitchInfo(
                option.Developer,
                option.Product,
                option.Author,
                option.Description
                );

            using var repository = new LiteDbKeySwitchRepository(option.DatabasePath);
            using var translator = new XlsxImportingRepository(
                      new FilePath(option.InputPath),
                      new KeySwitchInfo(
                          option.Developer,
                          option.Product,
                          option.Author,
                          option.Description
                          )
                      );

            var presenter  = new IImportingXlsxPresenter.Console();
            var interactor = new ImportingXlsxInteractor(repository, translator, presenter);

            var input = new ImportingXlsxRequest();

            var response = interactor.Execute(input);

            OutputToJson(response.Imported, option);

            return(0);
        }
Пример #4
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);
            }
        }
Пример #5
0
        public void AddTest()
        {
            var repository   = new LiteDbKeySwitchRepository(new MemoryStream());
            var articulation = TestDataGenerator.CreateArticulation(
                new List <MidiNoteOn>()
            {
                new MidiNoteOn(new MidiStatus(MidiStatusHelper.NoteOn), new MidiNoteNumber(1), new MidiVelocity(100))
            },
                new List <MidiControlChange>(),
                new List <MidiProgramChange>()
                );
            var record = TestDataGenerator.CreateKeySwitch(articulation);

            var result = repository.Save(record);

            Assert.AreEqual(1, result.Inserted);

            var seq = repository.Find(record.ProductName);
            var cmp = seq.First();

            Assert.AreEqual(record, cmp);

            seq = repository.Find(record.DeveloperName);
            cmp = seq.First();
            Assert.AreEqual(record, cmp);

            seq = repository.Find(record.ProductName);
            cmp = seq.First();
            Assert.AreEqual(record, cmp);

            seq = repository.Find(record.DeveloperName, record.ProductName, record.InstrumentName);
            cmp = seq.First();
            Assert.AreEqual(record, cmp);
        }
Пример #6
0
        public void RemovingTest()
        {
            const string developerName  = "Developer";
            const string productName    = "Product";
            const string instrumentName = "E.Guitar";

            var inputData = new RemovingRequest(
                developerName,
                productName,
                instrumentName
                );

            var presenter  = new IRemovingPresenter.Console();
            var repository = new LiteDbKeySwitchRepository(new MemoryStream());
            var interactor = new RemovingInteractor(repository, presenter);

            #region Adding Test data for removing
            var now    = DateTime.Now;
            var entity = TestDataGenerator.CreateKeySwitch(inputData.DeveloperName, inputData.ProductName);

            repository.Save(entity);
            #endregion
            Assert.AreEqual(1, repository.Count());

            interactor.Execute(inputData);

            Assert.AreEqual(0, repository.Count());
        }
Пример #7
0
        public int Execute(ICommandOption opt)
        {
            var option = (CommandOption)opt;

            using var repository = new LiteDbKeySwitchRepository(option.DatabasePath);
            var translator = new KeySwitchListListToJsonModelList {
                Formatted = true
            };
            var presenter  = new IRemovingPresenter.Null();
            var interactor = new RemovingInteractor(repository, presenter);

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

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

            var response = interactor.Execute(input);

            if (response.RemovedCount > 0)
            {
                Console.WriteLine($"{response.RemovedCount} records deleted from database({option.DatabasePath})");
                return(0);
            }

            Console.WriteLine("records not found");
            return(0);
        }
Пример #8
0
        private static IReadOnlyCollection <KeySwitch> Query(CommandOption option)
        {
            using var repository = new LiteDbKeySwitchRepository(option.DatabasePath);
            var developerName = new DeveloperName(option.Developer);
            var productName   = new ProductName(option.Product);

            return(repository.Find(developerName, productName));
        }
Пример #9
0
        public void ExportTest()
        {
            #region Insert new keyswitch to db
            var memoryDb     = new MemoryStream();
            var dbRepository = new LiteDbKeySwitchRepository(memoryDb);

            var entity = IKeySwitchFactory.Default.Create(
                Guid.NewGuid(),
                "Author",
                "Description",
                DateTime.Now,
                DateTime.Now,
                "Developer Name",
                "Product name",
                "Instrument name",
                new List <Articulation>
            {
                IArticulationFactory.Default.Create(
                    "name",
                    new List <IMidiMessage> {
                    IMidiNoteOnFactory.Default.Create(0, 100)
                },
                    new List <IMidiMessage> {
                    IMidiControlChangeFactory.Default.Create(1, 100)
                },
                    new List <IMidiMessage> {
                    IMidiProgramChangeFactory.Default.Create(2, 34)
                },
                    new Dictionary <string, string>
                {
                    { "extra1 key", "extra1 value" },
                    { "extra2 key", "extra2 value" },
                }
                    ),
            },
                new Dictionary <string, string>
            {
                { "extra1 key", "extra1 value" },
                { "extra2 key", "extra2 value" },
            }
                );

            dbRepository.Save(entity);
            #endregion

            var xlsxRepository = new XlsxExportingRepository(new FilePath("out.xlsx"));
            var interactor     = new ExportingXlsxInteractor(xlsxRepository);
            var response       = interactor.Execute(new ExportingXlsxRequest(new[] { entity }));

            Assert.IsTrue(response.Result);
        }
Пример #10
0
        public int Execute(ICommandOption opt)
        {
            var option = (CommandOption)opt;

            using var repository = new LiteDbKeySwitchRepository(option.DatabasePath);
            var translator = new JsonModelListToKeySwitchList();
            var presenter  = new IImportingTextPresenter.Console();
            var interactor = new ImportingJsonInteractor(repository, translator, presenter);

            var input = new ImportingTextRequest(File.ReadAllText(option.InputPath));

            _ = interactor.Execute(input);

            return(0);
        }
        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);
        }
Пример #12
0
        public void ExportTest()
        {
            #region Adding To DB
            var dbRepository = new LiteDbKeySwitchRepository(new MemoryStream());
            var entity       = TestDataGenerator.CreateKeySwitch();
            dbRepository.Save(entity);
            #endregion

            var inputData  = new SearchingRequest(entity.DeveloperName.Value, entity.ProductName.Value);
            var interactor = new SearchingInteractor(
                dbRepository,
                new KeySwitchListListToJsonModelList {
                Formatted = true
            },
                new ISearchingPresenter.Console()
                );

            var response = interactor.Execute(inputData);
            Console.WriteLine(response);
        }
        public void ImportTest()
        {
            var jsonText = "[{\"id\":\"419db555-cc1d-405c-8b28-281ded630a45\",\"author\":\"Author\",\"description\":\"Description\",\"created\":\"2020-09-15T16:21:11.354Z\",\"last_updated\":\"2020-09-15T16:21:11.354Z\",\"developer_name\":\"DeveloperName\",\"product_name\":\"ProductName\",\"instrument_name\":\"E.Guitar\",\"articulation\":[{\"articulation_name\":\"Power Chord\",\"articulation_type\":1,\"articulation_group\":0,\"articulation_color\":0,\"midi_message\":{\"note_on\":[],\"control_change\":[],\"program_change\":[]}}]}]";

            var dbRepository = new LiteDbKeySwitchRepository(new MemoryStream());
            var inputData    = new ImportingTextRequest(jsonText);
            var translator   = new JsonModelListToKeySwitchList();
            var interactor   = new ImportingJsonInteractor(
                dbRepository,
                translator, new IImportingTextPresenter.Console()
                );

            interactor.Execute(inputData);

            var entities = dbRepository.Find(new DeveloperName("DeveloperName"));
            var cmp      = translator.Translate(inputData.JsonText);

            var keySwitches = entities.ToList();
            var cmpList     = cmp.ToList();

            Assert.AreEqual(keySwitches.Count(), cmpList.Count());
            Assert.AreEqual(keySwitches.First(), cmpList.First());
        }
        public void ExportTest()
        {
            #region Adding To DB
            var dbRepository = new LiteDbKeySwitchRepository(new MemoryStream());
            var entity       = TestDataGenerator.CreateKeySwitch();
            dbRepository.Save(entity);
            #endregion

            var inputData  = new ExportingVstExpressionMapRequest(entity.DeveloperName.Value, entity.ProductName.Value);
            var interactor = new ExportingVstExpressionMapInteractor(
                dbRepository,
                new KeySwitchToVstExpressionMapModel(),
                new IExportingVstExpressionMapPresenter.Null()
                );

            var response = interactor.Execute(inputData);

            foreach (var i in response.Elements)
            {
                Console.WriteLine($"Expressionmap of {i.KeySwitch.InstrumentName}");
                Console.WriteLine(i.XmlText);
            }
        }
Пример #15
0
        public void AddingTest()
        {
            var inputData = new KeySwitchAddingRequest(
                "Author",
                "Description",
                "Developer",
                "Product",
                "E.Guitar",
                "Power Chord",
                new List <MidiNoteOn>(),
                new List <MidiControlChange>(),
                new List <MidiProgramChange>(),
                new Dictionary <string, string>()
                );

            var presenter  = new IAddingPresenter.Null();
            var repository = new LiteDbKeySwitchRepository(new MemoryStream());
            var interactor = new AddingInteractor(repository, presenter);

            interactor.Execute(inputData);

            Assert.AreEqual(1, repository.Count());
        }