コード例 #1
0
        /// <summary>
        /// Private method that parses the configuration XML and creates the ConfigCollections that reprent that
        /// configuration.  This is used to store the entire set of collections in memory once and have clones
        /// sent out whenever they are requested.
        /// </summary>
        private void InitializeConfigurations()
        {
            XmlNodeList nodeList;
            IConfigurationCollection list   = null;
            IConfiguration           config = null;

            m_configurations.Clear();

            const string xpathVal = "//rule";

            nodeList = m_masterDoc.SelectNodes(xpathVal);

            try
            {
                foreach (XmlNode ruleNode in nodeList)
                {
                    config = new ConfigurationData(ruleNode);
                    list   = new ConfigurationCollection();
                    m_configurations.Add("ItemPrice", list);
                    list.AddConfiguration(config);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(String.Format("Error occured while initializing the configuration in ConfigurationSet.InitializeConfigurations method : {0}", ex.Message));
            }
        }
コード例 #2
0
        /// <inheritdoc/>
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            IConfigurationCollection collection = (IConfigurationCollection)value;
            JObject collectionRoot = new JObject();

            foreach (var section in collection.Select(s => s.Value))
            {
                JObject sectionOptionsRoot = new JObject();
                foreach (var option in section)
                {
                    JObject optionRoot = new JObject()
                    {
                        { "Value", JObject.FromObject(option.Value) },
                        { "Descriptor", ConfigurationCollectionSerializer.SerializeOption(option.Key) },
                    };
                    if (option.Key.Type.GetTypeInfo().IsEnum)
                    {
                        optionRoot.Add("Selection",
                                       new JObject(ConfigurationCollectionSerializer.SerializeEnumValues(option.Key.Type)));
                    }

                    sectionOptionsRoot.Add(option.Key.OptionKey, optionRoot);
                }

                JObject sectionRoot = new JObject
                {
                    { "Configuration", sectionOptionsRoot },
                    { "Descriptor", ConfigurationCollectionSerializer.SerializeSectionDescriptor(section.Descriptor) },
                };

                collectionRoot.Add(section.Descriptor.SectionName, sectionRoot);
            }

            collectionRoot.WriteTo(writer, new StringEnumConverter());
        }
コード例 #3
0
        /// <summary>
        /// It reads an xml config file and deserializes into collection of ItemPriceCollection
        /// </summary>
        /// <returns>Collection of item price</returns>
        private static ItemPriceCollection GetItemsPriceCollectionFromConfig()
        {
            const string        configCategory = "ItemPrice";
            const string        configRuleData = "ItemPriceData";
            ItemPriceCollection itemsPriceColl = null;

            try
            {
                IConfigurationSet        configurationSet = ConfigurationFactory.GetConfigurationSet(typeof(ItemsPriceCollectionManager));
                IConfigurationCollection configurations   = configurationSet.GetConfigurations(configCategory);

                IConfiguration itemConfig = configurations.GetConfiguration(configRuleData);
                if (itemConfig != null)
                {
                    itemsPriceColl = SerializerHelper.Deserialize(
                        itemConfig.ConfigurationBasis.InnerXml,
                        typeof(ItemPriceCollection)
                        ) as ItemPriceCollection;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(String.Format
                                        ("Error occured while retrieving ItemPrice configuration and ItemPricecollection in ItemsPriceCollectionManager.GetItemsPriceCollectionFromConfig method : {0}",
                                        ex.Message));
            }
            return(itemsPriceColl);
        }
コード例 #4
0
 public RetroArchBsnesGameEmulation(IGame game,
                                    IConfigurationCollection <HiganRetroArchConfiguration> configurationProfile,
                                    IEnumerable <IEmulatedController> controllerPorts,
                                    ISaveProfile saveProfile,
                                    IDictionary <InputDriver, IDeviceInputMapping> inputMappings,
                                    IEmulatorExecutable retroarchExecutable) : base(game, configurationProfile, controllerPorts, saveProfile)
 {
     this.InputMappings = inputMappings;
     this.Executable    = retroarchExecutable;
     this.Scratch       = this.Game.WithFiles().GetRuntimeLocation();
 }
コード例 #5
0
 public static ConfigurationProfileModel AsModel <T>
     (this IConfigurationCollection <T> @this, string prototypeName)
     where T : class, IConfigurationCollection <T>
 {
     return(new ConfigurationProfileModel
     {
         ValueCollectionGuid = @this.ValueCollection.Guid,
         ConfigurationSource = prototypeName,
         Values = @this.ValueCollection.AsModel()
     });
 }
コード例 #6
0
        private void InitializeApplication(Host.IApplication hostApplication)
        {
            IConfigurationCollection hostConfigurations = hostApplication.Configurations;

            hostConfigurations.ConfigurationCreated += OnHostConfigurationCreated;
            hostConfigurations.ConfigurationRemoved += OnHostConfigurationRemoved;
            foreach (IConfiguration hostConfiguration in hostConfigurations)
            {
                Add(hostConfiguration.Uid, hostConfiguration);
            }
        }
コード例 #7
0
        private void DisposeApplication(Host.IApplication hostApplication)
        {
            IConfigurationCollection hostConfigurations = hostApplication.Configurations;

            hostConfigurations.ConfigurationCreated -= OnHostConfigurationCreated;
            hostConfigurations.ConfigurationRemoved -= OnHostConfigurationRemoved;
            foreach (IConfiguration configuration in this)
            {
                if (configuration.Application == hostApplication)
                {
                    Remove(configuration.Uid);
                }
            }
        }
コード例 #8
0
        public void UpdateConfiguration(IConfigurationCollection configurationCollection)
        {
            using var context = new DatabaseContext(this.Options.Options);
            var guid   = configurationCollection.ValueCollection.Guid;
            var config = context.ConfigurationProfiles?
                         .Find(guid);

            if (config == null)
            {
                return;
            }

            foreach
            (var value in
             context.ConfigurationValues.Where(v => v.ValueCollectionGuid == guid))
            {
                var realValue = configurationCollection.GetSection(value.SectionKey)?[value.OptionKey]
                                ?.AsConfigurationStringValue();
                if (realValue == value.Value || realValue == null)
                {
                    continue;
                }
                value.Value = realValue;
                context.Entry(value).State = EntityState.Modified;
            }

            var valueGuids = configurationCollection.ValueCollection.Select(v => v.value.Guid).ToList();

            var alreadyExists = context.ConfigurationValues.Where(g => valueGuids.Contains(g.Guid))
                                .Select(g => g.Guid)
                                .AsEnumerable()
                                .ToHashSet();

            var newValues = valueGuids.Except(alreadyExists)
                            .Select(g =>
            {
                (string?section, string?option, IConfigurationValue? configurationValue) = configurationCollection.ValueCollection[g];
                // Values must not be null because g is from the value collection's GUIDs.
                return(new ConfigurationValueModel
                {
                    SectionKey = section !,
                    OptionKey = option !,
                    Guid = configurationValue !.Guid,
                    Value = configurationValue !.Value.AsConfigurationStringValue(),
                    ValueCollectionGuid = configurationCollection.ValueCollection.Guid
                });
            });
コード例 #9
0
        public void UpdateConfiguration(IConfigurationCollection configurationCollection)
        {
            using var context = new DatabaseContext(this.Options.Options);
            var guid   = configurationCollection.ValueCollection.Guid;
            var config = context.ConfigurationProfiles?
                         .Find(guid);

            if (config == null)
            {
                return;
            }

            foreach
            (var value in
             context.ConfigurationValues.Where(v => v.ValueCollectionGuid == guid))
            {
                var realValue = configurationCollection[value.SectionKey][value.OptionKey]
                                ?.AsConfigurationStringValue();
                if (realValue == value.Value || realValue == null)
                {
                    continue;
                }
                value.Value = realValue;
                context.Entry(value).State = EntityState.Modified;
            }

            foreach ((string section, string option, IConfigurationValue configurationValue) in configurationCollection.ValueCollection)
            {
                var value = context.ConfigurationValues.Find(configurationValue.Guid);
                if (value != null)
                {
                    continue;
                }

                context.ConfigurationValues.Add(new ConfigurationValueModel
                {
                    SectionKey          = section,
                    OptionKey           = option,
                    Guid                = configurationValue.Guid,
                    Value               = configurationValue.Value.AsConfigurationStringValue(),
                    ValueCollectionGuid = configurationCollection.ValueCollection.Guid
                });
            }

            context.SaveChanges();
        }
コード例 #10
0
        public override IEmulatorTask CreateTask(IGameRecord executingGame,
                                                 ISaveLocation saveLocation,
                                                 IList <IEmulatedController> controllerConfiguration,
                                                 string profileContext = "default")
        {
            IConfigurationCollection <HiganRetroArchConfiguration> configuration =
                this.GenericConfigurationFactory.GetConfiguration(executingGame.RecordId, profileContext);

            var templates = controllerConfiguration.Select(c => this.ConfigurationFactory.GetInputMappings(c)).ToList();
            var task      = new EmulatorTask(executingGame)
            {
                GameSaveLocation        = saveLocation,
                ControllerConfiguration = templates
                                          // todo: refactor out into extension method.
                                          .Select(t => (t.template as IInputTemplate, t.mapping)).ToList(),
            };

            task.ProcessTaskRoot = new RetroArchTaskRoot(this.TaskRootProvider.GetTaskRoot(task));

            configuration.Configuration.DirectoryConfiguration.SavefileDirectory =
                task.ProcessTaskRoot.SaveDirectory.FullName;
            configuration.Configuration.DirectoryConfiguration.SystemDirectory =
                task.ProcessTaskRoot.SystemDirectory.FullName;
            configuration.Configuration.DirectoryConfiguration.CoreOptionsPath =
                Path.Combine(task.ProcessTaskRoot.ConfigurationDirectory.FullName,
                             "retroarch-core-options.cfg");

            switch (configuration.Configuration.BsnesCoreConfig.PerformanceProfile)
            {
            case PerformanceProfile.Performance:
                task.AddPragma("retroarch_core", "bsnes_performance_libretro.dll");
                break;

            case PerformanceProfile.Accuracy:
                task.AddPragma("retroarch_core", "bsnes_accuracy_libretro.dll");
                break;

            case PerformanceProfile.Balanced:
                task.AddPragma("retroarch_core", "bsnes_balanced_libretro.dll");
                break;
            }

            task.EmulatorConfiguration = configuration;
            return(task);
        }
コード例 #11
0
        public DeepLinkCollectionViewModel(
            IConfigurationCollection configurationCollection,
            IClipboardManager clipboardManager,
            IDeepLinkManager deepLinkManager,
            IMapper mapper,
            IEventAggregator eventAggregator,
            IBrowserManager browserManager)
        {
            this.clipboardManager        = clipboardManager;
            this.configurationCollection = configurationCollection;
            this.deepLinkManager         = deepLinkManager;
            this.mapper          = mapper;
            this.eventAggregator = eventAggregator;
            this.browserManager  = browserManager;

            this.clipboardManager.ClipboardTextUpdateReceived += this.OnClipboardTextUpdateReceived;
            this.eventAggregator.Subscribe(this);

            // this.currentMatchName = "-";
            this.HierarchicalLinks = new BindingList <HierarchyLevelOne>();
        }
コード例 #12
0
        public override void WriteJson(global::Newtonsoft.Json.JsonWriter writer, [AllowNull] IConfigurationCollection <TElement> value, global::Newtonsoft.Json.JsonSerializer serializer)
        {
            if (ReferenceEquals(value, null))
            {
                writer.WriteNull();
                return;
            }

            writer.WriteStartArray();

            foreach (var item in value)
            {
                if (ReferenceEquals(value, null))
                {
                    writer.WriteNull();
                }
                else
                {
                    serializer.Serialize(writer, item);
                }
            }

            writer.WriteEndArray();
        }
コード例 #13
0
 public CollectionCircularInterceptor(IConfigurationCollection <T> @this)
 {
     this.@this = @this;
 }
コード例 #14
0
 public Task UpdateProfileAsync(IConfigurationCollection profile)
 {
     return(this.CollectionStore.UpdateConfigurationAsync(profile));
 }
コード例 #15
0
 public void UpdateProfile(IConfigurationCollection profile)
 {
     this.CollectionStore.UpdateConfiguration(profile);
 }
コード例 #16
0
ファイル: MainViewModel.cs プロジェクト: omsharp/Amigo-issues
 public MainViewModel(IConfigurationCollection configCollection)
 {
     configs             = configCollection;
     NavigationTreeItems = BuildNavigationTree();
     SelectedItem        = NavigationTreeItems[0].Items[0];
 }
コード例 #17
0
 protected IDictionary <string, string> BuildConfiguration(IConfigurationCollection configuration,
                                                           IEnumerable <(IInputTemplate, IInputMapping)> inputTemplates)
コード例 #18
0
 public override IConfigurationCollection <TElement> ReadJson(global::Newtonsoft.Json.JsonReader reader, Type objectType, [AllowNull] IConfigurationCollection <TElement> existingValue, bool hasExistingValue, global::Newtonsoft.Json.JsonSerializer serializer)
 {
     throw new NotImplementedException();
 }
コード例 #19
0
        protected override void Configure(IObjectTypeDescriptor descriptor)
        {
            descriptor.ExtendMutation();
            descriptor.Field("updateGameConfigurationValues")
            .UseAutoSubscription()
            .UseClientMutationId()
            .Description("Updates the provided configuration values.")
            .Argument("input", a => a.Type <UpdateGameConfigurationValueInputType>())
            .Resolve(async ctx =>
            {
                var configStore  = ctx.SnowflakeService <IGameLibrary>().GetExtension <IGameConfigurationExtensionProvider>();
                var input        = ctx.ArgumentValue <UpdateGameConfigurationValueInput>("input");
                var newValues    = new List <IConfigurationValue>();
                var newValueGuid = new List <(Guid valueCollection, Guid value)>();
                foreach (var value in input.Values)
                {
                    var owningGuid = await configStore.GetOwningValueCollectionAsync(value.ValueID);
                    if (owningGuid == default)
                    {
                        continue;                            // value is an orphan or not found.
                    }
                    await configStore.UpdateValueAsync(value.ValueID, value.Value);
                    newValues.Add(await configStore.GetValueAsync(value.ValueID));
                    newValueGuid.Add((owningGuid, value.ValueID));
                }
                return(new UpdateGameConfigurationValuePayload()
                {
                    Values = newValues,
                    Collections = newValueGuid.GroupBy(k => k.valueCollection, v => v.value),
                });
            }).Type <NonNullType <UpdateGameConfigurationValuePayloadType> >();
            descriptor.Field("deleteGameConfiguration")
            .UseAutoSubscription()
            .UseClientMutationId()
            .Description("Delete the specified game configuration profile.")
            .Argument("input", a => a.Type <DeleteGameConfigurationInputType>())
            .Resolve(async ctx =>
            {
                var games         = ctx.SnowflakeService <IGameLibrary>();
                var configStore   = games.GetExtension <IGameConfigurationExtensionProvider>();
                var orchestrators = ctx.SnowflakeService <IPluginManager>().GetCollection <IEmulatorOrchestrator>();
                var input         = ctx.ArgumentValue <DeleteGameConfigurationInput>("input");
                IConfigurationCollection config = null;

                if (input.Retrieval != null)
                {
                    var orchestrator = orchestrators[input.Retrieval.Orchestrator];
                    var game         = await games.GetGameAsync(input.Retrieval.GameID);
                    if (orchestrator == null)
                    {
                        return(ErrorBuilder.New()
                               .SetCode("CFG_NOTFOUND_ORCHESTRATOR")
                               .SetMessage("The specified orchestrator was not found.")
                               .Build());
                    }
                    if (game == null)
                    {
                        return(ErrorBuilder.New()
                               .SetCode("CFG_NOTFOUND_GAME")
                               .SetMessage("The specified game was not found.")
                               .Build());
                    }
                    config = orchestrator.GetGameConfiguration(game, input.CollectionID);
                    if (config == null)
                    {
                        return(ErrorBuilder.New()
                               .SetCode("CFG_NOTFOUND_COLLECTION")
                               .SetMessage("The specified collectionId was not found in the configuration set for the specified orchestrator..")
                               .Build());
                    }
                }

                await configStore.DeleteProfileAsync(input.CollectionID);

                return(new DeleteGameConfigurationPayload()
                {
                    CollectionID = input.CollectionID,
                    Configuration = config,
                });
            }).Type <NonNullType <DeleteGameConfigurationPayloadType> >();
            descriptor.Field("updatePluginConfigurationValues")
            .UseAutoSubscription()
            .UseClientMutationId()
            .Description("Updates configuration values for a plugin.")
            .Argument("input", a => a.Type <UpdatePluginConfigurationValueInputType>())
            .Resolve(async ctx =>
            {
                var input  = ctx.ArgumentValue <UpdatePluginConfigurationValueInput>("input");
                var plugin = ctx.SnowflakeService <IPluginManager>().Get(input.Plugin);
                if (plugin == null)
                {
                    return(ErrorBuilder.New()
                           .SetCode("PCFG_NOTFOUND_PLUGIN")
                           .SetMessage("The specified plugin was not found.")
                           .Build());
                }
                var configStore = plugin?.Provision?.ConfigurationStore;
                if (configStore == null)
                {
                    return(ErrorBuilder.New()
                           .SetCode("PCFG_NOTPROVISIONED")
                           .SetMessage("The specified plugin was not a provisioned plugin.")
                           .Build());
                }
                var newValues = input.Values.Select(i => i.ValueID);
                await configStore.SetAsync(input.Values.Select(i => (i.ValueID, i.Value)));

                var configuration = plugin.GetPluginConfiguration();
                return(new UpdatePluginConfigurationValuePayload()
                {
                    Values = newValues.Select(g => configuration.ValueCollection[g].value).Where(v => v != null).ToList(),
                    Plugin = plugin,
                });
            }).Type <NonNullType <UpdatePluginConfigurationValuePayloadType> >();
        }