Beispiel #1
0
 /// <summary>
 /// Constructor
 /// </summary>
 public AssetManager()
 {
     Filters = AppDomain.CurrentDomain.GetAssemblies().Objects<IFilter>();
     ContentFilters = AppDomain.CurrentDomain.GetAssemblies().Objects<IContentFilter>();
     Translators = AppDomain.CurrentDomain.GetAssemblies().Objects<ITranslator>();
     FileTypes = new ListMapping<AssetType, string>();
     RunOrder = new System.Collections.Generic.List<RunTime>();
     Translators.ForEach(x => FileTypes.Add(x.TranslatesTo, x.FileTypeAccepts));
     FileTypes.Add(AssetType.CSS, "css");
     FileTypes.Add(AssetType.Javascript, "js");
     RunOrder.Add(RunTime.PostTranslate);
     RunOrder.Add(RunTime.PreMinified);
     RunOrder.Add(RunTime.Minify);
     RunOrder.Add(RunTime.PostMinified);
     RunOrder.Add(RunTime.PreCombine);
 }
Beispiel #2
0
 /// <summary>
 /// Constructor
 /// </summary>
 public AssetManager()
 {
     Filters        = AppDomain.CurrentDomain.GetAssemblies().Objects <IFilter>();
     ContentFilters = AppDomain.CurrentDomain.GetAssemblies().Objects <IContentFilter>();
     Translators    = AppDomain.CurrentDomain.GetAssemblies().Objects <ITranslator>();
     FileTypes      = new ListMapping <AssetType, string>();
     RunOrder       = new System.Collections.Generic.List <RunTime>();
     Translators.ForEach(x => FileTypes.Add(x.TranslatesTo, x.FileTypeAccepts));
     FileTypes.Add(AssetType.CSS, "css");
     FileTypes.Add(AssetType.Javascript, "js");
     RunOrder.Add(RunTime.PostTranslate);
     RunOrder.Add(RunTime.PreMinified);
     RunOrder.Add(RunTime.Minify);
     RunOrder.Add(RunTime.PostMinified);
     RunOrder.Add(RunTime.PreCombine);
 }
Beispiel #3
0
 /// <summary>
 /// Constructor
 /// </summary>
 public TaskManager()
 {
     Tasks = new ListMapping <RunTime, ITask>();
     foreach (ITask Task in AppDomain.CurrentDomain.GetAssemblies().Objects <ITask>())
     {
         Tasks.Add(Task.TimeToRun, Task);
     }
 }
Beispiel #4
0
 /// <summary>
 /// Constructor
 /// </summary>
 public TaskManager()
 {
     Tasks = new ListMapping<RunTime, ITask>();
     foreach (ITask Task in AppDomain.CurrentDomain.GetAssemblies().Objects<ITask>())
     {
         Tasks.Add(Task.TimeToRun, Task);
     }
 }
Beispiel #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ProviderManager"/> class.
        /// </summary>
        /// <param name="analyzers">The analyzers.</param>
        /// <param name="helper">The helper.</param>
        public ProviderManager(IEnumerable <IAnalyzer> analyzers, SQLHelper helper)
        {
            Analyzers = new ListMapping <DbProviderFactory, IAnalyzer>();
            foreach (var Analyzer in analyzers ?? Array.Empty <IAnalyzer>())
            {
                Analyzers.Add(Analyzer.SupportedFactory, Analyzer);
            }

            Batch = helper;
        }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="Filters">The filters.</param>
 /// <param name="ContentFilters">The content filters.</param>
 /// <param name="Translators">The translators.</param>
 public AssetManager(IEnumerable <IFilter> Filters, IEnumerable <IContentFilter> ContentFilters, IEnumerable <ITranslator> Translators)
 {
     Contract.Requires <ArgumentNullException>(Filters != null, "Filters");
     Contract.Requires <ArgumentNullException>(ContentFilters != null, "ContentFilters");
     Contract.Requires <ArgumentNullException>(Translators != null, "Translators");
     this.Filters        = Filters;
     this.ContentFilters = ContentFilters;
     this.Translators    = Translators;
     FileTypes           = new ListMapping <AssetType, string>();
     RunOrder            = new System.Collections.Generic.List <RunTime>();
     Translators.ForEach(x => FileTypes.Add(x.TranslatesTo, x.FileTypeAccepts));
     FileTypes.Add(AssetType.CSS, "css");
     FileTypes.Add(AssetType.Javascript, "js");
     RunOrder.Add(RunTime.PostTranslate);
     RunOrder.Add(RunTime.PreMinified);
     RunOrder.Add(RunTime.Minify);
     RunOrder.Add(RunTime.PostMinified);
     RunOrder.Add(RunTime.PreCombine);
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="Filters">The filters.</param>
 /// <param name="ContentFilters">The content filters.</param>
 /// <param name="Translators">The translators.</param>
 public AssetManager(IEnumerable<IFilter> Filters, IEnumerable<IContentFilter> ContentFilters, IEnumerable<ITranslator> Translators)
 {
     Contract.Requires<ArgumentNullException>(Filters != null, "Filters");
     Contract.Requires<ArgumentNullException>(ContentFilters != null, "ContentFilters");
     Contract.Requires<ArgumentNullException>(Translators != null, "Translators");
     this.Filters = Filters;
     this.ContentFilters = ContentFilters;
     this.Translators = Translators;
     FileTypes = new ListMapping<AssetType, string>();
     RunOrder = new System.Collections.Generic.List<RunTime>();
     Translators.ForEach(x => FileTypes.Add(x.TranslatesTo, x.FileTypeAccepts));
     FileTypes.Add(AssetType.CSS, "css");
     FileTypes.Add(AssetType.Javascript, "js");
     RunOrder.Add(RunTime.PostTranslate);
     RunOrder.Add(RunTime.PreMinified);
     RunOrder.Add(RunTime.Minify);
     RunOrder.Add(RunTime.PostMinified);
     RunOrder.Add(RunTime.PreCombine);
 }
        /// <summary>
        /// Finds all permutations of the items within the list
        /// </summary>
        /// <typeparam name="T">Object type in the list</typeparam>
        /// <param name="Input">Input list</param>
        /// <returns>The list of permutations</returns>
        public static ListMapping <int, T> Permute <T>(this IEnumerable <T> Input)
        {
            if (Input == null)
            {
                throw new ArgumentNullException("Input");
            }
            System.Collections.Generic.List <T> Current = new System.Collections.Generic.List <T>();
            Current.AddRange(Input);
            ListMapping <int, T> ReturnValue = new ListMapping <int, T>();
            int Max          = (Input.Count() - 1).Factorial();
            int CurrentValue = 0;

            for (int x = 0; x < Input.Count(); ++x)
            {
                int z = 0;
                while (z < Max)
                {
                    int y = Input.Count() - 1;
                    while (y > 1)
                    {
                        T TempHolder = Current[y - 1];
                        Current[y - 1] = Current[y];
                        Current[y]     = TempHolder;
                        --y;
                        foreach (T Item in Current)
                        {
                            ReturnValue.Add(CurrentValue, Item);
                        }
                        ++z;
                        ++CurrentValue;
                        if (z == Max)
                        {
                            break;
                        }
                    }
                }
                if (x + 1 != Input.Count())
                {
                    Current.Clear();
                    Current.AddRange(Input);
                    T TempHolder2 = Current[0];
                    Current[0]     = Current[x + 1];
                    Current[x + 1] = TempHolder2;
                }
            }
            return(ReturnValue);
        }
Beispiel #9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MappingManager"/> class.
        /// </summary>
        /// <param name="mappings">The mappings.</param>
        /// <param name="sources">The sources.</param>
        /// <param name="queryProvider">The query provider.</param>
        /// <param name="logger">The logger.</param>
        /// <param name="objectPool">The object pool.</param>
        /// <exception cref="ArgumentNullException">logger</exception>
        public MappingManager(
            IEnumerable <IMapping> mappings,
            IEnumerable <IDatabase> sources,
            QueryProviderManager queryProvider,
            ILogger logger,
            ObjectPool <StringBuilder> objectPool)
        {
            Logger     = logger ?? Log.Logger ?? new LoggerConfiguration().CreateLogger() ?? throw new ArgumentNullException(nameof(logger));
            ObjectPool = objectPool ?? throw new ArgumentNullException(nameof(objectPool));
            mappings ??= Array.Empty <IMapping>();

            var Debug = Logger.IsEnabled(LogEventLevel.Debug);

            Logger.Information("Setting up mapping information");
            var TempSourceMappings = new ListMapping <Type, IMapping>();

            foreach (var Item in mappings)
            {
                TempSourceMappings.Add(Item.DatabaseConfigType, Item);
            }
            var FinalList = new ConcurrentBag <IMappingSource>();

            TempSourceMappings.Keys.ForEachParallel(Key =>
            {
                FinalList.Add(new MappingSource(TempSourceMappings[Key],
                                                sources.FirstOrDefault(x => x.GetType() == Key),
                                                queryProvider,
                                                Logger,
                                                ObjectPool));
            });
            Sources      = FinalList.OrderBy(x => x.Order).ToArray();
            WriteSources = Sources.Where(x => x.CanWrite).ToArray();
            ReadSources  = Sources.Where(x => x.CanRead).ToArray();
            if (Debug)
            {
                var Builder = ObjectPool.Get();
                Builder.AppendLine("Final Mappings:");
                for (var i = 0; i < Sources.Length; i++)
                {
                    Builder.AppendLine(Sources[i].ToString());
                }
                Logger.Debug("{Info:l}", Builder.ToString());
                ObjectPool.Return(Builder);
            }
        }
        public void RandomTest()
        {
            var TestObject = new ListMapping <string, int>();
            var Rand       = new System.Random();

            for (var x = 0; x < 10; ++x)
            {
                var Name = x.ToString();
                for (var y = 0; y < 5; ++y)
                {
                    var Value = Rand.Next();
                    TestObject.Add(Name, Value);
                    Assert.Equal(y + 1, TestObject[Name].Count());
                    Assert.Contains(Value, TestObject[Name]);
                }
            }
            Assert.Equal(10, TestObject.Count);
        }
Beispiel #11
0
 /// <summary>
 /// Gets a list of types based on an interface from all assemblies found in a directory
 /// </summary>
 /// <param name="AssemblyDirectory">Directory to search in</param>
 /// <param name="Interface">The interface to look for</param>
 /// <returns>A list mapping using the assembly as the key and a list of types</returns>
 public static ListMapping<Assembly, Type> GetTypesFromDirectory(string AssemblyDirectory, string Interface)
 {
     ListMapping<Assembly, Type> ReturnList = new ListMapping<Assembly,Type>();
     System.Collections.Generic.List<Assembly> Assemblies = GetAssembliesFromDirectory(AssemblyDirectory);
     foreach (Assembly Assembly in Assemblies)
     {
         Type[] Types = Assembly.GetTypes();
         foreach (Type Type in Types)
         {
             if (Type.GetInterface(Interface, true) != null)
             {
                 ReturnList.Add(Assembly, Type);
             }
         }
     }
     return ReturnList;
 }
        private ListMapping<PartCategories, AvailablePart> AvailablePartsForPrinting()
        {
            ListMapping<PartCategories, AvailablePart> ret = new ListMapping<PartCategories, AvailablePart>();
            AvailablePart[] availableParts = PartLoader.LoadedPartsList.ToArray();

            foreach (AvailablePart availablePart in availableParts)
            {
                KISItemModuleWrapper mki = KISItemModuleWrapper.FromComponent(availablePart.partPrefab.GetComponent("ModuleKISItem"));
                if (mki != null)
                {
                    if (mki.VolumeOverride <= Inventory.MaxVolume)
                        ret.Add(availablePart.category, availablePart);
                }
                else
                {
                    try
                    {
                        if (availablePart.partPrefab.GetVolume() <= Inventory.MaxVolume)
                            ret.Add(availablePart.category, availablePart);
                    }
                    catch (Exception)
                    {
                    }
                }
            }
            return ret;
        }