Beispiel #1
0
        public void InitProviders()
        {
            lock (_syncObj)
            {
                if (_providerList != null)
                {
                    return;
                }

                var providerList = new List <SortedGenreConverter>();

                _genreProviderPluginItemStateTracker = new FixedItemStateTracker("GenreConverter Service - Provider registration");

                IPluginManager pluginManager = ServiceRegistration.Get <IPluginManager>();
                foreach (PluginItemMetadata itemMetadata in pluginManager.GetAllPluginItemMetadata(GenreProviderBuilder.GENRE_PROVIDER_PATH))
                {
                    try
                    {
                        GenreProviderRegistration genreProviderRegistration = pluginManager.RequestPluginItem <GenreProviderRegistration>(GenreProviderBuilder.GENRE_PROVIDER_PATH, itemMetadata.Id, _genreProviderPluginItemStateTracker);
                        if (genreProviderRegistration == null || genreProviderRegistration.ProviderClass == null)
                        {
                            ServiceRegistration.Get <ILogger>().Warn("Could not instantiate IGenreProvider with id '{0}'", itemMetadata.Id);
                        }
                        else
                        {
                            IGenreProvider provider = Activator.CreateInstance(genreProviderRegistration.ProviderClass) as IGenreProvider;
                            if (provider == null)
                            {
                                throw new PluginInvalidStateException("Could not create IGenreProvider instance of class {0}", genreProviderRegistration.ProviderClass);
                            }
                            providerList.Add(new SortedGenreConverter {
                                Priority = genreProviderRegistration.Priority, Provider = provider
                            });
                        }
                    }
                    catch (PluginInvalidStateException e)
                    {
                        ServiceRegistration.Get <ILogger>().Warn("Cannot add IGenreProvider with id '{0}'", e, itemMetadata.Id);
                    }
                }
                providerList.Sort((p1, p2) => p1.Priority.CompareTo(p2.Priority));
                _providerList = providerList;
            }
        }
Beispiel #2
0
        private void TestGenre(string genreName, string genreCategory, int expectedGenreId)
        {
            //Act
            int            genreId          = 0;
            bool           result           = false;
            IGenreProvider lastUsedProvider = null;

            foreach (IGenreProvider provider in _providers)
            {
                // We know that not all providers can support all formats, so we allow all to be tried.
                lastUsedProvider = provider;
                result           = provider.GetGenreId(genreName, genreCategory, "en", out genreId);
                if (result)
                {
                    break;
                }
            }

            //Assert
            Assert.AreEqual(true, result, $"{lastUsedProvider?.GetType().Name}: Genre detection failed for genre ({genreName}, {genreCategory})");
            Assert.AreEqual(genreId, expectedGenreId, $"{lastUsedProvider?.GetType().Name}: Genre detection success, but genre was wrong ({genreName}, {genreCategory}, {genreId}, {expectedGenreId})");
        }
Beispiel #3
0
 public BooksController(IBookProvider bookProvider, IGenreProvider genreProvider)
 {
     _bookProvider  = bookProvider;
     _genreProvider = genreProvider;
 }
 public StoreManagerController(IAlbumProvider albumProvider,
                               IGenreProvider genreProvider)
 {
     _albumProvider = albumProvider;
     _genreProvider = genreProvider;
 }
 public GenresController(IGenreProvider provider)
 {
     _genreProvider = provider;
 }