Example #1
0
        private void ddlGroupStageCreation_SelectedIndexChanged(object sender, EventArgs e)
        {
            EnumEntity entity = (EnumEntity)ddlGroupStageCreation.SelectedItem;

            if (entity != null)
            {
                _CurrentSoundEntry.StageCreationGroupID = entity.Value;
            }
            else
            {
                _CurrentSoundEntry.StageCreationGroupID = -1;
            }
        }
Example #2
0
        private void ddlSoundIconID_SelectedIndexChanged(object sender, EventArgs e)
        {
            EnumEntity entity = (EnumEntity)ddlSoundIconID.SelectedItem;

            if (entity != null)
            {
                _CurrentSoundEntry.IconID = entity.Value;
            }
            else
            {
                _CurrentSoundEntry.IconID = -1;
            }
        }
Example #3
0
        internal static List <TypeEntity> GenerateSchemaTypes()
        {
            var list = (from tab in Schema.Current.Tables.Values
                        let type = EnumEntity.Extract(tab.Type) ?? tab.Type
                                   select new TypeEntity
            {
                FullClassName = type.FullName,
                TableName = tab.Name.Name,
                CleanName = Reflector.CleanTypeName(type)
            }).ToList();

            return(list);
        }
Example #4
0
        static Reflector()
        {
            DescriptionManager.CleanTypeName = CleanTypeName;                               //To allow MyEntityEntity
            DescriptionManager.CleanType     = t => EnumEntity.Extract(t) ?? t.CleanType(); //To allow Lite<T>

            DescriptionManager.DefaultDescriptionOptions += DescriptionManager_IsEnumsInEntities;
            DescriptionManager.DefaultDescriptionOptions += DescriptionManager_IsQuery;
            DescriptionManager.DefaultDescriptionOptions += DescriptionManager_IsSymbolContainer;
            DescriptionManager.DefaultDescriptionOptions += DescriptionManager_IsIEntity;

            DescriptionManager.ShouldLocalizeMemeber += DescriptionManager_ShouldLocalizeMemeber;
            DescriptionManager.Invalidate();
        }
Example #5
0
 private void btnOK_Click(object sender, EventArgs e)
 {
     if (dataGridViewEnum.SelectedRows.Count == 0)
     {
         this.SelectedEnumEntity = null;
     }
     else
     {
         EnumEntity enumEntity = (EnumEntity)dataGridViewEnum.SelectedRows[0].DataBoundItem;
         this.SelectedEnumEntity = enumEntity;
     }
     this.DialogResult = DialogResult.OK;
     this.Close();
 }
Example #6
0
        private static string GetSchemaName(Table table)
        {
            Type type = EnumEntity.Extract(table.Type) ?? table.Type;

            if (type == typeof(ColumnOptionsMode) || type == typeof(FilterOperation) || type == typeof(PaginationMode) || type == typeof(OrderType))
            {
                type = typeof(UserQueryEntity);
            }

            if (type == typeof(SmtpDeliveryFormat) || type == typeof(SmtpDeliveryMethod))
            {
                type = typeof(EmailMessageEntity);
            }

            if (type == typeof(DayOfWeek))
            {
                type = typeof(ScheduledTaskEntity);
            }

            if (type.Assembly == typeof(ApplicationConfigurationEntity).Assembly)
            {
                return(null);
            }

            if (type.Assembly == typeof(DashboardEntity).Assembly)
            {
                var name = type.Namespace.Replace("Signum.Entities.", "");

                name = (name.TryBefore('.') ?? name);

                if (name == "SMS")
                {
                    return("sms");
                }

                if (name == "Authorization")
                {
                    return("auth");
                }

                return(name.FirstLower());
            }

            if (type.Assembly == typeof(Entity).Assembly)
            {
                return("framework");
            }

            throw new InvalidOperationException("Impossible to determine SchemaName for {0}".FormatWith(type.FullName));
        }
Example #7
0
        public static OperationMapInfo GetOperationMapInfo(Type type)
        {
            var operations = OperationLogic.TypeOperationsAndConstructors(type);

            var stateTypes = operations.Select(a => a.StateType).Distinct().NotNull().PreAnd(typeof(DefaultState)).ToList();

            Dictionary <Type, LambdaExpression> expressions = stateTypes
                                                              .ToDictionary(t => t, t => type == typeof(DefaultState) ? null : giGetGraphGetter.GetInvoker(type, t)());

            Dictionary <Type, Dictionary <Enum, int> > counts = expressions.SelectDictionary(t => t.UnNullify(), exp =>
                                                                                             exp == null ? giCount.GetInvoker(type)() :
                                                                                             giCountGroupBy.GetInvoker(type, exp.Body.Type)(exp));

            Dictionary <Type, string> tokens = expressions.SelectDictionary(t => t.UnNullify(), exp => exp == null ? null : GetToken(exp));

            var symbols = operations.Select(a => a.OperationSymbol).ToList();

            var operationCounts = Database.Query <OperationLogEntity>()
                                  .Where(log => symbols.Contains(log.Operation))
                                  .GroupBy(log => log.Operation)
                                  .Select(a => KVP.Create(a.Key, a.Count()))
                                  .ToDictionary();

            return(new OperationMapInfo
            {
                states = (from t in stateTypes
                          from e in Enum.GetValues(t.UnNullify()).Cast <Enum>()
                          let ignored = e.GetType().GetField(e.ToString(), BindingFlags.Static | BindingFlags.Public).HasAttribute <IgnoreAttribute>()
                                        select new MapState
                {
                    count = counts.GetOrThrow(e.GetType()).TryGet(e, 0),
                    ignored = ignored,
                    key = e.ToString(),
                    niceName = e.NiceToString(),
                    isSpecial = t == typeof(DefaultState),
                    color = Engine.Chart.ChartColorLogic.ColorFor(EnumEntity.FromEnumUntyped(e)).TryToHtml(),
                    token = tokens.GetOrThrow(e.GetType()),
                }).ToList(),
                operations = (from o in operations
                              select new MapOperation
                {
                    niceName = o.OperationSymbol.NiceToString(),
                    key = o.OperationSymbol.Key,
                    count = operationCounts.TryGet(o.OperationSymbol, 0),
                    fromStates = WithDefaultStateArray(o.UntypedFromStates, DefaultState.Start).Select(a => a.ToString()).ToArray(),
                    toStates = WithDefaultStateArray(o.UntypedToStates, DefaultState.End).Select(a => a.ToString()).ToArray(),
                }).ToList()
            });
        }
Example #8
0
        public static bool EnumChoose(out EnumEntity enumEntity)
        {
            bool result = false;

            enumEntity = null;
            using (FormEnumChoose view = new FormEnumChoose())
            {
                if (view.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    enumEntity = view.SelectedEnumEntity;
                    result     = true;
                }
            }
            return(result);
        }
Example #9
0
        public TypeCaches(Schema current)
        {
            TypeToEntity = EnumerableExtensions.JoinRelaxed(
                Database.RetrieveAll <TypeEntity>(),
                current.Tables.Keys,
                t => t.FullClassName,
                t => (EnumEntity.Extract(t) ?? t).FullName,
                (typeEntity, type) => new { typeEntity, type },
                "caching {0}".FormatWith(current.Table(typeof(TypeEntity)).Name)
                ).ToDictionary(a => a.type, a => a.typeEntity);

            EntityToType = TypeToEntity.Inverse();

            TypeToId = TypeToEntity.SelectDictionary(k => k, v => v.Id);
            IdToType = TypeToId.Inverse();
        }
Example #10
0
        static Type GetEntityType(string typeStr, Type objectType)
        {
            var type = ReflectionServer.TypesByName.Value.GetOrThrow(typeStr);

            if (type.IsEnum)
            {
                type = EnumEntity.Generate(type);
            }

            if (!objectType.IsAssignableFrom(type))
            {
                throw new JsonSerializationException($"Type '{type.Name}' is not assignable to '{objectType.TypeName()}'");
            }

            return(type);
        }
Example #11
0
        /// <summary>
        /// 获取枚举列表
        /// </summary>
        /// <returns></returns>
        public List <EnumEntity> GetEnumEntityList()
        {
            XElement[] entityElements = _indexXml.XPathSelectElements(XPATH_Index_Dictionary_Entity).ToArray();

            List <EnumEntity> list = new List <EnumEntity>();

            foreach (XElement element in entityElements)
            {
                EnumEntity entity = GetEnumEntity(element.Attribute("Id").Value);
                if (entity != null)
                {
                    list.Add(entity);
                }
            }

            return(list);
        }
Example #12
0
        public TypeHelpTS GetTypeHelp(string typeName, TypeHelpMode mode)
        {
            Type type = TypeLogic.TryGetType(typeName);

            if (type == null)
            {
                return(null);
            }

            var isEnum = EnumEntity.IsEnumEntity(type);

            var members = new List <TypeMemberHelpTS>();

            if (isEnum)
            {
                var enumType = EnumEntity.Extract(type);
                var values   = EnumEntity.GetValues(enumType).ToList();
                members.AddRange(values.Select(ev => new TypeMemberHelpTS(ev)));
            }
            else
            {
                var routes = PropertyRoute.GenerateRoutes(type);

                var root = TreeHelper.ToTreeC(routes, a => a.Parent).SingleEx();

                members = root.Children
                          .Where(a => mode == TypeHelpMode.CSharp || ReflectionServer.InTypeScript(a.Value))
                          .Select(pr => new TypeMemberHelpTS(pr, mode)).ToList();

                if (mode == TypeHelpMode.CSharp)
                {
                    var expressions = DynamicQueryManager.Current.RegisteredExtensions.GetValue(type);

                    members.AddRange(expressions.Values.Select(ex => new TypeMemberHelpTS(ex)));
                }
            }

            return(new TypeHelpTS
            {
                type = (isEnum ? EnumEntity.Extract(type).Name : type.Name),
                cleanTypeName = typeName,
                isEnum = isEnum,
                members = members
            });
        }
Example #13
0
        public TypeMemberHelpTS(Node <PropertyRoute> node, TypeHelpMode mode)
        {
            var pr = node.Value;

            this.propertyString = pr.PropertyString();
            this.name           = mode == TypeHelpMode.Typescript ?
                                  pr.PropertyInfo?.Name.FirstLower() :
                                  pr.PropertyInfo?.Name;

            this.type = mode == TypeHelpMode.Typescript && ReflectionServer.IsId(pr) ?
                        PrimaryKey.Type(pr.RootType).Nullify().TypeName():
                        pr.Type.TypeName();

            this.isExpression  = false;
            this.isEnum        = pr.Type.UnNullify().IsEnum;
            this.cleanTypeName = GetCleanTypeName(pr.Type.UnNullify().IsEnum ? EnumEntity.Generate(pr.Type.UnNullify()) : pr.Type);
            this.subMembers    = node.Children.Select(a => new TypeMemberHelpTS(a, mode)).ToList();
        }
Example #14
0
        public virtual string GenerateMListFieldName(PropertyRoute route, KindOfField kindOfField)
        {
            Type type = Lite.Extract(route.Type) ?? route.Type;

            switch (kindOfField)
            {
            case KindOfField.Value:
            case KindOfField.Embedded:
                return(type.Name.FirstUpper());

            case KindOfField.Enum:
            case KindOfField.Reference:
                return((EnumEntity.Extract(type)?.Name ?? Reflector.CleanTypeName(type)) + "ID");

            default:
                throw new InvalidOperationException("No field name for type {0} defined".FormatWith(type));
            }
        }
Example #15
0
        protected virtual FieldEnum GenerateFieldEnum(ITable table, PropertyRoute route, NameSequence name, bool forceNull)
        {
            var att = Settings.FieldAttribute <SqlDbTypeAttribute>(route);

            Type cleanEnum = route.Type.UnNullify();

            var referenceTable = Include(EnumEntity.Generate(cleanEnum), route);

            return(new FieldEnum(route.Type)
            {
                Name = name.ToString(),
                Nullable = Settings.IsNullable(route, forceNull),
                IsLite = false,
                ReferenceTable = referenceTable,
                AvoidForeignKey = Settings.FieldAttribute <AvoidForeignKeyAttribute>(route) != null,
                Default = att?.Default,
            }.Do(f => f.UniqueIndex = f.GenerateUniqueIndex(table, Settings.FieldAttribute <UniqueIndexAttribute>(route))));
        }
Example #16
0
        public void SerializeDateTime()
        {
            // Verify that Enum values with the [Flags] attribute serialize correctly.

            var converter = new JsonDataConverter();

            byte[] contents;
            string json;

            var enumValue = new EnumEntity()
            {
                Gender = Gender.Male
            };

            contents = converter.ToData(enumValue);
            json     = Encoding.UTF8.GetString(contents);

            Assert.Equal("{\"Gender\":\"male\"}", json);
        }
Example #17
0
        //public static string ToEnumDesc(this string Name,Type type)
        //{
        //    return ((Enum)Enum.Parse(type.GetType(), Name)).ToDescription();
        //}

        /// <summary>
        /// 将枚举转换成list
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static List <EnumEntity> EnumToList <T>()
        {
            List <EnumEntity> list = new List <EnumEntity>();

            foreach (var e in Enum.GetValues(typeof(T)))
            {
                EnumEntity m      = new EnumEntity();
                object[]   objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);
                if (objArr != null && objArr.Length > 0)
                {
                    DescriptionAttribute da = objArr[0] as DescriptionAttribute;
                    m.Description = da.Description;
                }
                m.EnumValue = Convert.ToInt32(e);
                m.EnumName  = e.ToString();
                list.Add(m);
            }
            return(list);
        }
Example #18
0
        private string EnumToString(EnumEntity entity, int tableNum)
        {
            StringBuilder sb = new StringBuilder();

            sb.NewLine(tableNum);
            sb.AppendFormat("public enum {0}", entity.Name.Value);
            sb.NewLine(tableNum).Append('{');
            foreach (var field in entity.Fields)
            {
                sb.NewLine(tableNum + 1).Append(field.Name.Value);
                if (field.Value != null)
                {
                    sb.Append(" = ").Append(field.Value.Value);
                }
                sb.Append(',');
            }
            sb.NewLine(tableNum).Append('}');
            sb.NewLine();
            return(sb.ToString());
        }
Example #19
0
        public System.Web.WebPages.HelperResult ColorLink(TypeContext tc, Type type)
        {
#line default
#line hidden
            return(new System.Web.WebPages.HelperResult(__razor_helper_writer => {
#line 15 "..\..\Chart\Views\ChartColumn.cshtml"

                var identType = type.IsEnum ? EnumEntity.Generate(type) : type;


#line default
#line hidden
                WriteLiteralTo(__razor_helper_writer, "    <div");

                WriteLiteralTo(__razor_helper_writer, " class=\"col-sm-4\"");

                WriteLiteralTo(__razor_helper_writer, ">\r\n");

                WriteLiteralTo(__razor_helper_writer, "        ");


#line 18 "..\..\Chart\Views\ChartColumn.cshtml"
                WriteTo(__razor_helper_writer, Html.FormGroup(tc, null, ChartMessage.ColorsFor0.NiceToString().FormatWith(type.NiceName()),
                                                              Html.ActionLink(Signum.Engine.Chart.ChartColorLogic.Colors.Value.ContainsKey(identType) ? ChartMessage.ViewPalette.NiceToString() : ChartMessage.CreatePalette.NiceToString(),
                                                                              (ColorChartController cc) => cc.Colors(Navigator.ResolveWebTypeName(identType)), new { @class = "form-control" })));


#line default
#line hidden
                WriteLiteralTo(__razor_helper_writer, "\r\n    </div>\r\n");


#line 22 "..\..\Chart\Views\ChartColumn.cshtml"


#line default
#line hidden
            }));

#line 22 "..\..\Chart\Views\ChartColumn.cshtml"
        }
Example #20
0
        protected virtual ValueTuple[]? SugestedValues(QueryToken queryToken)
        {
            var ft = QueryUtils.GetFilterType(queryToken.Type);

            switch (ft)
            {
            case FilterType.Integer:
            case FilterType.Decimal: return(new[] { new ValueTuple {
                                                        Value = Activator.CreateInstance(queryToken.Type.UnNullify()), Match = null
                                                    } });

            case FilterType.String: return(new[] { new ValueTuple {
                                                       Value = "", Match = null
                                                   } });

            case FilterType.DateTime: return(new[] { new ValueTuple {
                                                         Value = DateTime.Today, Match = null
                                                     } });

            case FilterType.Time: return(new[] { new ValueTuple {
                                                     Value = TimeSpan.Zero, Match = null
                                                 } });

            case FilterType.Lite:
            case FilterType.Embedded: break;

            case FilterType.Boolean: return(new[] { new ValueTuple {
                                                        Value = true, Match = null
                                                    }, new ValueTuple {
                                                        Value = false, Match = null
                                                    } });

            case FilterType.Enum: return(EnumEntity.GetValues(queryToken.Type.UnNullify()).Select(e => new ValueTuple {
                    Value = e, Match = null
                }).ToArray());

            case FilterType.Guid: break;
            }

            return(null);
        }
Example #21
0
    public ForeignKeyException(Exception inner) : base(null, inner)
    {
        Match m = indexRegex.Match(inner.Message);

        if (m.Success)
        {
            var parts = m.Groups["parts"].Value.Split("_");

            for (int i = 1; i < parts.Length; i++)
            {
                TableName  = parts.Take(i).ToString("_");
                ColumnName = parts.Skip(i).ToString("_");
                TableType  = Schema.Current.Tables
                             .Where(kvp => kvp.Value.Name.Name == TableName)
                             .Select(p => p.Key)
                             .SingleOrDefaultEx();

                if (TableType != null)
                {
                    break;
                }
            }
        }

        if (inner.Message.Contains("INSERT") || inner.Message.Contains("UPDATE"))
        {
            IsInsert = true;

            Match m2 = referedTable.Match(inner.Message);
            if (m2.Success)
            {
                ReferedTableName = m2.Groups["referedTable"].Value.Split('.').Last();
                ReferedTableType = Schema.Current.Tables
                                   .Where(kvp => kvp.Value.Name.Name == ReferedTableName)
                                   .Select(p => p.Key)
                                   .SingleOrDefaultEx();

                ReferedTableType = ReferedTableType == null ? null : EnumEntity.Extract(ReferedTableType) ?? ReferedTableType;
            }
        }
    }
Example #22
0
        public virtual Type ResolveType(string typeStr, Type objectType)
        {
            if (objectType.Name == typeStr || Reflector.CleanTypeName(objectType) == typeStr)
            {
                return(objectType);
            }

            var type = TypeLogic.GetType(typeStr);

            if (type.IsEnum)
            {
                type = EnumEntity.Generate(type);
            }

            if (!objectType.IsAssignableFrom(type))
            {
                throw new JsonException($"Type '{type.Name}' is not assignable to '{objectType.TypeName()}'");
            }

            return(type);
        }
Example #23
0
        /// <summary>
        /// 枚举转List
        /// </summary>
        /// <typeparam name="T">枚举对象</typeparam>
        /// <returns></returns>
        public List <EnumEntity> EnumToList <T>()
        {
            var list = new List <EnumEntity>();

            foreach (var e in Enum.GetValues(typeof(T)))
            {
                var model  = new EnumEntity();
                var objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);
                if (objArr.Length > 0)
                {
                    var da = objArr[0] as DescriptionAttribute;
                    if (da != null)
                    {
                        model.Description = da.Description;
                    }
                }
                model.EnumValue = Convert.ToInt32(e);
                model.EnumName  = e.ToString();
                list.Add(model);
            }
            return(list);
        }
        public static IEnumerable<EnumEntity> GetList(Type enumType)
        {
            if (enumType.IsGenericType && enumType.GetGenericTypeDefinition() == typeof(Nullable<>))
                enumType = Nullable.GetUnderlyingType(enumType);
            var list = new List<EnumEntity>();
            FieldInfo[] fields = enumType.GetFields();

            foreach (FieldInfo field in fields)
            {
                if (!field.FieldType.IsEnum)
                    continue; ;
                var disply = field.GetCustomAttributes(true).OfType<DisplayAttribute>().FirstOrDefault();
                var enumText = field.GetValue(null).ToString();
                int key = Convert.ToInt32(Enum.Parse(enumType, enumText, true));
                if (disply != null)
                {
                    enumText = disply.Name;
                }
                var entity = new EnumEntity() { Value = key, Name = field.Name, Text = enumText };
                list.Add(entity);
            }
            return list;
        }
Example #25
0
        public void CheckEventHappen()
        {
            var check   = new EnumEntity();
            var result1 = check.CheckEventHappen(new DateTime(2018, 5, 14), "1,3");
            var result2 = check.CheckEventHappen(new DateTime(2018, 5, 15), "3,4");
            var result3 = check.CheckEventHappen(new DateTime(2018, 5, 16), "1,2,3");
            var result4 = check.CheckEventHappen(new DateTime(2018, 5, 17), "1,2,3");
            var result5 = check.CheckEventHappen(new DateTime(2018, 5, 18), "1,3");
            var result6 = check.CheckEventHappen(new DateTime(2018, 5, 19), "4,5");
            var result0 = check.CheckEventHappen(new DateTime(2018, 5, 20), "4,0");
            var result7 = check.CheckEventHappen(new DateTime(2018, 5, 21), "1");
            var result8 = check.CheckEventHappen(new DateTime(2018, 5, 20), "");

            Assert.IsTrue(result0);
            Assert.IsTrue(result1);
            Assert.IsTrue(!result2);
            Assert.IsTrue(result3);
            Assert.IsTrue(result7);
            Assert.IsTrue(result8);
            Assert.IsTrue(!result4);
            Assert.IsTrue(!result5);
            Assert.IsTrue(!result6);
        }
Example #26
0
        internal protected virtual Table Include(Type type, PropertyRoute route)
        {
            if (schema.Tables.TryGetValue(type, out Table result))
            {
                return(result);
            }

            using (HeavyProfiler.LogNoStackTrace("Include", () => type.TypeName()))
            {
                if (type.IsAbstract)
                {
                    throw new InvalidOperationException(route?.Let(r => "Error on field {0}: ".FormatWith(r)) + "Impossible to include in the Schema the type {0} because is abstract".FormatWith(type));
                }

                if (!Reflector.IsEntity(type))
                {
                    throw new InvalidOperationException(route?.Let(r => "Error on field {0}: ".FormatWith(r)) + "Impossible to include in the Schema the type {0} because is not and Entity".FormatWith(type));
                }

                foreach (var t in type.Follow(a => a.BaseType))
                {
                    if (!t.IsSerializable)
                    {
                        throw new InvalidOperationException("Type {0} is not marked as serializable".FormatWith(t.TypeName()));
                    }
                }

                string name = schema.Settings.desambiguatedNames?.TryGetC(type) ?? Reflector.CleanTypeName(EnumEntity.Extract(type) ?? type);

                if (schema.NameToType.ContainsKey(name))
                {
                    throw new InvalidOperationException(route?.Let(r => "Error on field {0}: ".FormatWith(r)) + "Two types have the same cleanName, desambiguate using Schema.Current.Settings.Desambiguate method: \r\n {0}\r\n {1}".FormatWith(schema.NameToType[name].FullName, type.FullName));
                }

                try
                {
                    result = new Table(type);

                    schema.Tables.Add(type, result);
                    schema.NameToType[name] = type;
                    schema.TypeToName[type] = name;

                    Complete(result);

                    return(result);
                }
                catch (Exception) //Avoid half-cooked tables
                {
                    schema.Tables.Remove(type);
                    schema.NameToType.Remove(name);
                    schema.TypeToName.Remove(type);
                    throw;
                }
            }
        }
Example #27
0
 public static string GetKey(object queryName)
 {
     return(queryName is Type t?Reflector.CleanTypeName(EnumEntity.Extract(t) ?? t) :
                queryName.ToString() !);
 }
Example #28
0
        static SqlPreCommand SynchronizeEnumsScript(Replacements replacements)
        {
            Schema schema = Schema.Current;

            List <SqlPreCommand> commands = new List <SqlPreCommand>();

            foreach (var table in schema.Tables.Values)
            {
                Type enumType = EnumEntity.Extract(table.Type);
                if (enumType != null)
                {
                    IEnumerable <Entity>        should       = EnumEntity.GetEntities(enumType);
                    Dictionary <string, Entity> shouldByName = should.ToDictionary(a => a.ToString());

                    List <Entity> current = Administrator.TryRetrieveAll(table.Type, replacements);
                    Dictionary <string, Entity> currentByName = current.ToDictionaryEx(a => a.toStr, table.Name.Name);

                    string key = Replacements.KeyEnumsForTable(table.Name.Name);

                    replacements.AskForReplacements(currentByName.Keys.ToHashSet(), shouldByName.Keys.ToHashSet(), key);

                    currentByName = replacements.ApplyReplacementsToOld(currentByName, key);

                    var mix = shouldByName.JoinDictionary(currentByName, (n, s, c) => new { s, c }).Where(a => a.Value.s.id != a.Value.c.id).ToDictionary();

                    HashSet <PrimaryKey> usedIds = current.Select(a => a.Id).ToHashSet();

                    Dictionary <string, Entity> middleByName = mix.Where(kvp => usedIds.Contains(kvp.Value.s.Id)).ToDictionary(kvp => kvp.Key, kvp => Clone(kvp.Value.c));

                    if (middleByName.Any())
                    {
                        var moveToAux = SyncEnums(schema, table,
                                                  currentByName.Where(a => middleByName.ContainsKey(a.Key)).ToDictionary(),
                                                  middleByName);
                        if (moveToAux != null)
                        {
                            commands.Add(moveToAux);
                        }
                    }

                    var com = SyncEnums(schema, table,
                                        currentByName.Where(a => !middleByName.ContainsKey(a.Key)).ToDictionary(),
                                        shouldByName.Where(a => !middleByName.ContainsKey(a.Key)).ToDictionary());
                    if (com != null)
                    {
                        commands.Add(com);
                    }

                    if (middleByName.Any())
                    {
                        var backFromAux = SyncEnums(schema, table,
                                                    middleByName,
                                                    shouldByName.Where(a => middleByName.ContainsKey(a.Key)).ToDictionary());
                        if (backFromAux != null)
                        {
                            commands.Add(backFromAux);
                        }
                    }
                }
            }

            return(SqlPreCommand.Combine(Spacing.Double, commands.ToArray()));
        }
 public override EnumItemEntity CreateEnumItemEntity(EnumEntity owner)
 {
     return(new EnumItemEntityDev(owner));
 }
 public static void ShowEntity(this EntityComponent entityComponent, int serialId, EnumEntity enumEntity, Type logicType, object userData = null)
 {
     entityComponent.ShowEntity(serialId, (int)enumEntity, logicType, userData);
 }
        public static Control GetValueControl(QueryToken token, string bindingPath)
        {
            Type type = token.Type;

            if (type.IsLite())
            {
                Implementations implementations = token.GetImplementations().Value;

                Type cleanType = Lite.Extract(type);

                if (EntityKindCache.IsLowPopulation(cleanType) && !implementations.IsByAll)
                {
                    EntityCombo ec = new EntityCombo
                    {
                        Type            = type,
                        Implementations = implementations,
                    };

                    ec.SetBinding(EntityCombo.EntityProperty, new Binding
                    {
                        Path = new PropertyPath(bindingPath),
                        NotifyOnValidationError = true,
                        ValidatesOnDataErrors   = true,
                        ValidatesOnExceptions   = true,
                    });

                    return(ec);
                }
                else
                {
                    EntityLine el = new EntityLine
                    {
                        Type            = type,
                        Create          = false,
                        Implementations = implementations,
                    };

                    el.SetBinding(EntityLine.EntityProperty, new Binding
                    {
                        Path = new PropertyPath(bindingPath),
                        NotifyOnValidationError = true,
                        ValidatesOnDataErrors   = true,
                        ValidatesOnExceptions   = true
                    });

                    return(el);
                }
            }
            else if (type.IsEmbeddedEntity())
            {
                EntityLine el = new EntityLine
                {
                    Type            = type,
                    Create          = false,
                    Autocomplete    = false,
                    Find            = false,
                    Implementations = null,
                };

                el.SetBinding(EntityLine.EntityProperty, new Binding
                {
                    Path = new PropertyPath(bindingPath),
                    NotifyOnValidationError = true,
                    ValidatesOnDataErrors   = true,
                    ValidatesOnExceptions   = true
                });

                return(el);
            }
            else
            {
                ValueLine vl = new ValueLine()
                {
                    Type     = type,
                    Format   = token.Format,
                    UnitText = token.Unit,
                };

                if (type.UnNullify().IsEnum)
                {
                    vl.ItemSource = EnumEntity.GetValues(type.UnNullify()).PreAndNull(type.IsNullable()).ToObservableCollection();
                }

                vl.SetBinding(ValueLine.ValueProperty, new Binding
                {
                    Path = new PropertyPath(bindingPath), //odd
                    NotifyOnValidationError = true,
                    ValidatesOnDataErrors   = true,
                    ValidatesOnExceptions   = true,
                    Converter = Reflector.IsNumber(type) ? Converters.Identity : null,
                });

                return(vl);
            }
        }