public void CollectEnumValue(EA.Attribute l_Attr, EAPEnumeration en)
        {
            EAPEnumValue enValue = new EAPEnumValue();

            enValue.Name        = l_Attr.Name;
            enValue.Description = l_Attr.Notes;

            enValue.Value = ReturnValue(enValue, l_Attr, en);

            if (enValue.Description.Split(':').Length > 1)
            {
                enValue.Title       = enValue.Description.Split(':')[0];
                enValue.Description = enValue.Description.Remove(0, enValue.Title.Length + 1).Trim();
            }
            else
            {
                enValue.Title       = "";
                enValue.Description = enValue.Description.Trim();
            }
            enValue.Title       = enValue.Title.Replace("<b>", "").Replace("</b>", "").Replace("<i>", "").Replace("</i>", "").Trim();
            enValue.Description = enValue.Description.Replace("<b>", "").Replace("</b>", "").Replace("<i>", "").Replace("</i>", "").Trim();

            //enValue.Value = (long)Convert.ChangeType(Enum.Parse(proba, enValue.Name), typeof(long));
            if (!(en.AddEnumValue(enValue)))
            {
                if (Validate)
                {
                    tw.WriteLine("Enum value name:" + l_Attr.Name + ",  already exists in Enum name: " + en.Name + ". (Look at EAP)");

                    tw.WriteLine("*************************************************************************");
                    tw.WriteLine("\n\n");
                }
            }
        }
        public void CollectEnums(EA.Element elem, bool parse, EAPModel model)
        {
            if (!model.Enums.ContainsKey(elem.Name))
            {
                EAPEnumeration en = new EAPEnumeration();

                en.Name        = elem.Name;
                en.Code        = elem.Alias;
                en.Description = elem.Notes;
                en.Bitfield    = elem.Stereotype.Contains("bitfield");
                en.Parse       = parse;

                if (en.Description.Split(':').Length > 1)
                {
                    en.Title       = en.Description.Split(':')[0];
                    en.Description = en.Description.Remove(0, en.Title.Length + 1).Trim();
                }
                else
                {
                    en.Title       = "";
                    en.Description = en.Description.Trim();
                }
                en.Title       = en.Title.Replace("<b>", "").Replace("</b>", "").Replace("<i>", "").Replace("</i>", "").Trim();
                en.Description = en.Description.Replace("<b>", "").Replace("</b>", "").Replace("<i>", "").Replace("</i>", "").Trim();



                foreach (EA.Attribute l_Attr in elem.Attributes)
                {
                    CollectEnumValue(l_Attr, en);
                }

                model.Enums.Add(en.Name, en);

                if (Validate && !en.Parse && en.EnumValue.Count != 0)
                {
                    tw.WriteLine("Model Code for enum: {0},", en.Code);
                    tw.WriteLine("Name for enum: {0},\n", en.Name);
                    tw.WriteLine("Enum name:" + en.Name + ", was not being processed but it has enum value.");

                    tw.WriteLine("*************************************************************************");
                    tw.WriteLine("\n\n");
                }
            }
            else
            {
                if (Validate)
                {
                    tw.WriteLine("Enum name:" + elem.Name + ", already exists in EAP.");

                    tw.WriteLine("*************************************************************************");
                    tw.WriteLine("\n\n");
                }
            }
        }
        public string ReturnValue(MetaEntity obj, EA.Attribute l_Attr, EAPEnumeration en = null)
        {
            if (l_Attr.Default != null && (l_Attr.Default != ""))
            {
                if (!l_Attr.Default.StartsWith("0x", true, CultureInfo.InvariantCulture))
                {
                    return(l_Attr.Default);
                }
                else
                {
                    string helpString = l_Attr.Default.Remove(0, 2).Trim();

                    try
                    {
                        long val = Convert.ToInt64(helpString, 16);
                        return(val.ToString());
                    }
                    catch
                    {
                        if (Validate)
                        {
                            if (en != null)
                            {
                                tw.WriteLine("Model Code for enum: {0},", en.Code);
                                tw.WriteLine("Name for enum: {0},", en.Name);
                            }
                            else
                            {
                                tw.WriteLine("Model Code: {0},", obj.Code);
                            }

                            tw.WriteLine("Name: {0},", obj.Name);
                            tw.WriteLine("Value Default {0},\n", l_Attr.Default);
                            tw.WriteLine(l_Attr.Default + " value can not be converted  in number.");

                            tw.WriteLine("*************************************************************************");
                            tw.WriteLine("\n\n");
                        }
                    }
                }
            }
            return(null);
        }