Exemple #1
0
        public SchemaBuilder(IServiceProvider serviceProvider, IEntityComparerProvider comparerProvider)
        {
            ServiceProvider  = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
            ComparerProvider = comparerProvider ?? throw new ArgumentNullException(nameof(comparerProvider));

            Entities = new Dictionary <string, EntityBuilder>(comparerProvider.EntityNameComparer);
        }
Exemple #2
0
        public static List <ICompiledEntity> Range(string[] ids_str, DersaSqlManager M)
        {
            List <ICompiledEntity> entities = new List <ICompiledEntity>();

            ICompiledEntity[] eArr = new ICompiledEntity[ids_str.Length];
            for (int i = 0; i < ids_str.Length; i++)
            {
                int entId = int.Parse(ids_str[i]);
                CachedObjects.CachedEntities[entId] = null;
                System.Data.DataTable t = M.GetEntity(ids_str[i]);
                if (t == null)
                {
                    throw new Exception(string.Format("Table is null for entity {0}", ids_str[i]));
                }
                if (t.Rows.Count < 1)
                {
                    throw new Exception(string.Format("Table is empty for entity {0}", ids_str[i]));
                }
                Entity ent = new Entity(t, M);
                CachedObjects.CachedCompiledInstances[ent.Stereotype.Name + ids_str[i]] = null;
                ICompiledEntity cInst = (ICompiledEntity)ent.GetCompiledInstance();
                eArr[i] = cInst;
                entities.Add(cInst);
            }
            Type sUtilType = Util.GetDynamicType("DersaStereotypes.StereotypeUtil"); //typeof(DersaStereotypes.StereotypeUtil);

            if (sUtilType == null)
            {
                throw new Exception("Class StereotypeUtil not found");
            }
            IEntityComparerProvider CP = System.Activator.CreateInstance(sUtilType) as IEntityComparerProvider;

            if (CP == null)
            {
                throw new Exception("Class StereotypeUtil is not IEntityComparerProvider");
            }
            IComparer <ICompiledEntity> eCmpr = CP.GetEntityComparer();
            //entities.Sort(eCmpr);
            //entities.Sort(new EntityComparer());  //быстрая сортировка иногда дает сбой, т.к. не проверяет все сочетания, заменяем ее на "пузырек"
            IComparer <ICompiledEntity> cmp = CP.GetEntityComparer();

            for (int i = 0; i < eArr.Length; i++)
            {
                for (int j = i; j < eArr.Length; j++)
                {
                    if (cmp.Compare(eArr[i], eArr[j]) > 0)
                    {
                        ICompiledEntity tmp = eArr[i];
                        eArr[i] = eArr[j];
                        eArr[j] = tmp;
                    }
                }
            }

            entities.Clear();
            for (int i = 0; i < ids_str.Length; i++)
            {
                entities.Add(eArr[i]);
            }
            return(entities);
        }