public int GetFieldLength(EntityDefinition e, EntityDefinitionProperty p)
        {
            List <ColumnAnnotation> annotations = context.Annotations.FindAll(annotation => annotation.EntityName == e.Name);

            ColumnAnnotation column = annotations.Find(a => a.PropertyName == p.PropertyName);

            if (column != null)
            {
                return(column.FieldLength);
            }

            return(-1);
        }
        public bool IsFileType(EntityDefinition e, EntityDefinitionProperty p)
        {
            List <ColumnAnnotation> annotations = context.Annotations.FindAll(annotation => annotation.EntityName == e.Name);

            ColumnAnnotation column = annotations.Find(a => a.PropertyName == p.PropertyName);

            if (column != null)
            {
                return(column.HoldsFile);
            }

            return(false);
        }
        public bool IsEnumType(EntityDefinition e, EntityDefinitionProperty p, ref Dictionary <int, string> values)
        {
            List <ColumnAnnotation> annotations = context.Annotations.FindAll(annotation => annotation.EntityName == e.Name);

            ColumnAnnotation column = annotations.Find(a => a.PropertyName == p.PropertyName);

            if (column != null)
            {
                if (column.IsEnum)
                {
                    values = column.EnumValues;
                    return(true);
                }
            }

            return(false);
        }
        public List <ColumnAnnotation> ParseAnnotations(string fileName)
        {
            if (!File.Exists(fileName))
            {
                return(null);
            }

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

            string[] strings = File.ReadAllLines(fileName);

            foreach (var line in strings)
            {
                try
                {
                    string[] split = line.Split(new[] { "||" }, StringSplitOptions.RemoveEmptyEntries);

                    if (split.Length != 3)
                    {
                        continue;
                    }

                    var a = new ColumnAnnotation(context);
                    a.EntityName   = split[0];
                    a.PropertyName = split[1];

                    string lastPart = split[2].ToLower();

                    if (lastPart == "file")
                    {
                        a.HoldsFile = true;
                    }

                    if (lastPart.StartsWith("enum"))
                    {
                        //remove the start
                        lastPart = lastPart.Substring(6);

                        string[] enumParts = lastPart.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);

                        foreach (var s in enumParts)
                        {
                            try
                            {
                                string[] pieces = s.Split(',');

                                if (pieces.Length == 2)
                                {
                                    a.EnumValues.Add(Convert.ToInt32(pieces[0]), pieces[1]);
                                }
                            }
                            catch
                            {
                                continue;
                            }
                        }
                    }

                    if (lastPart.StartsWith("length"))
                    {
                        string[] length = lastPart.Split(new[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
                        a.FieldLength = Convert.ToInt32(length[1]);
                    }

                    list.Add(a);
                }
                catch
                {
                    continue;
                }
            }

            return(list);
        }