public MetaType(MetaTypeSet _typeSet, string _name, string _ename, string _metaname, string _emetaname, Guid _uid) : base(_name, _ename) { fmetaname = _metaname; femetaname = _emetaname; typeSet = _typeSet; fuid = _uid; Init(); }
public MetaType(MetaTypeSet _typeSet, string _name, string _ename, string _metaname, string _emetaname, string _uid) : base(_name, _ename) { fmetaname = _metaname; femetaname = _emetaname; typeSet = _typeSet; string_to_GUID(_uid, ref fuid); Init(); }
private void button3_Click(object sender, EventArgs e) { Stream rstr; string s = Application.ExecutablePath; string path = Path.GetDirectoryName(s); string path_log = path + "\\" + "MetaTree1.txt"; if (File.Exists(path_log)) { rstr = new FileStream(path_log, FileMode.OpenOrCreate); } else { rstr = new MemoryStream(); } //MemoryStream rstr = new MemoryStream(); //this.textBox1.Text += "sdfsdfsdf"+Environment.NewLine; MetaTypeSet.StaticTypesLoad(rstr); rstr.Dispose(); }
public MetaType(MetaTypeSet _typeSet, Tree tr) { Tree tt; Tree t; int num, i; MetaGeneratedType gt; Guid guid = new Guid(); gentypeRef = null; tt = tr.Get_First(); Name = tt.Get_Value(); tt = tt.Get_Next(); EName = tt.Get_Value(); tt = tt.Get_Next(); fhasuid = string_to_GUID(tt.Get_Value(), ref fuid); tt = tt.Get_Next(); fserialization_ver = Convert.ToUInt32(tt.Get_Value()); tt = tt.Get_Next(); fmetaname = tt.Get_Value(); tt = tt.Get_Next(); femetaname = tt.Get_Value(); tt = tt.Get_Next(); fimageindex = Convert.ToInt32(tt.Get_Value()); tt = tt.Get_Next(); fprenameindex = Convert.ToUInt32(tt.Get_Value()); tt = tt.Get_Next(); fpreidindex = Convert.ToUInt32(tt.Get_Value()); tt = tt.Get_Next(); fmeta = tt.Get_Value().CompareTo("1") == 0 ? true : false; tt = tt.Get_Next(); fexporttype = (ExportType)(Convert.ToInt32(tt.Get_Value())); tt = tt.Get_Next(); string_to_GUID(tt.Get_Value(), ref guid); fdefaultclass = Class.GetClass(guid); // Свойства tt = tt.Get_Next(); t = tt.Get_First(); num = Convert.ToInt32(t.Get_Value()); for (i = 0; i < num; ++i) { t = t.Get_Next(); MetaProperty mp = new MetaProperty(this, t); fproperties.Add(mp); fproperties_by_name[mp.Name.ToUpper()] = mp; fproperties_by_name[mp.EName.ToUpper()] = mp; } // Элементы коллекции tt = tt.Get_Next(); t = tt.Get_First(); num = Convert.ToInt32(t.Get_Value()); for (i = 0; i < num; ++i) { t = t.Get_Next(); fscollectiontypes.Add(t.Get_Value()); } // Значения tt = tt.Get_Next(); t = tt.Get_First(); num = Convert.ToInt32(t.Get_Value()); for (i = 0; i < num; ++i) { t = t.Get_Next(); MetaValue mv = new MetaValue(this, t); fvalues.Add(mv); if (mv.Name is null) { fvalues_by_name["".ToUpper()] = mv; } else { fvalues_by_name[mv.Name.ToUpper()] = mv; } if (mv.EName is null) { fvalues_by_name["".ToUpper()] = mv; } else { fvalues_by_name[mv.EName.ToUpper()] = mv; } fvalues_by_value[mv.Value] = mv; } // Генерируемые типы tt = tt.Get_Next(); t = tt.Get_First(); fgentypeprefix = t.Get_Value(); t = t.Get_Next(); fegentypeprefix = t.Get_Value(); t = t.Get_Next(); num = Convert.ToInt32(t.Get_Value()); for (i = 0; i < num; ++i) { t = t.Get_Next(); gt = new MetaGeneratedType(t); fgeneratedtypes.Add(gt); if (gt.Name != null && gt.Name.CompareTo("Ссылка") == 0) { //if (gt.Name.CompareTo("Ссылка") == 0) gentypeRef = gt; } } //fserializationtree = null; typeSet.Add(this); }
public static void StaticTypesLoad(Stream str) { int number, i; uint j; MetaType mtype; MetaType vtype = null; MetaProperty prop = null; MetaValue value; Tree tr; Tree tt; Tree t; Guid uid = new Guid(); string sn, sen; MetaObject metaobj; if (staticTypes != null) { staticTypes = null; } ShowMessage("Начало загрузки статических типов"); Form1.log.Info("Начало загрузки статических типов"); staticTypes = new MetaTypeSet(); tr = Tree.Parse_1Cstream(str, "", "static types"); string tr_static_types = ""; tr.OutText(ref tr_static_types); tt = tr.Get_First().Get_First(); // Параметры классов number = Convert.ToInt32(tt.Get_Value()); for (i = 0; i < number; ++i) { tt = tt.Get_Next(); new ClassParameter(tt); } // Классы tt = tt.Get_Next(); number = Convert.ToInt32(tt.Get_Value()); for (i = 0; i < number; ++i) { tt = tt.Get_Next(); new Class(tt); } // Типы tt = tt.Get_Next(); number = Convert.ToInt32(tt.Get_Value()); for (i = 0; i < number; ++i) { tt = tt.Get_Next(); mtype = new MetaType(staticTypes, tt); } staticTypes.FillAll(); // Значения по умолчанию tt = tt.Get_Next(); number = Convert.ToInt32(tt.Get_Value()); for (i = 0; i < number; ++i) { tt = tt.Get_Next(); t = tt.Get_First(); mtype = staticTypes.GetTypeByName(t.Get_Value()); t = t.Get_Next(); prop = mtype?.GetProperty(t.Get_Value()); t = t.Get_Next(); if (prop is null) { continue; } prop.defaultvaluetype = (DefaultValueType)Convert.ToInt32(t.Get_Value()); t = t.Get_Next(); switch (prop.defaultvaluetype) { case DefaultValueType.dvt_novalue: break; case DefaultValueType.dvt_bool: // TODO: Вернуться сюда после доработки MetaProperty prop.dv_union_type.dv_bool = t.Get_Value().CompareTo("1") == 0 ? true : false; break; case DefaultValueType.dvt_number: prop.dv_union_type.dv_number = Convert.ToInt32(t.Get_Value()); break; case DefaultValueType.dvt_string: prop.dv_union_type.dv_string = t.Get_Value(); break; case DefaultValueType.dvt_date: break; case DefaultValueType.dvt_undef: break; case DefaultValueType.dvt_null: break; case DefaultValueType.dvt_type: prop.dv_union_type.dv_type = staticTypes.GetTypeByName(t.Get_Value()); break; case DefaultValueType.dvt_enum: vtype = staticTypes.GetTypeByName(t.Get_Value()); break; default: break; } t = t.Get_Next(); if (prop.defaultvaluetype == DefaultValueType.dvt_enum) { prop.dv_union_type.dv_enum = vtype.GetValue(t.Get_Value()); } } // Предопределенные объекты метаданных tt = tt.Get_Next(); number = Convert.ToInt32(tt.Get_Value()); for (i = 0; i < number; ++i) { tt = tt.Get_Next(); t = tt.Get_First(); sn = t.Get_Value(); t = t.Get_Next(); sen = t.Get_Value(); t = t.Get_Next(); if (!string_to_GUID(t.Get_Value(), ref uid)) { ShowMessage("Ошибка загрузки статических типов. Ошибка преобразования УИД в предопределенном объекте метаданных. Имя " + sn + ", УИД " + t.Get_Value()); Form1.log.Info("Ошибка загрузки статических типов.Ошибка преобразования УИД в предопределенном объекте метаданных.Имя {0}, УИД {1}", sn, t.Get_Value()); continue; } metaobj = new MetaObject(uid, null, sn, sen); metaobj.SetFullName(sn); metaobj.SetEfullName(sen); MetaObject.map[uid] = metaobj; MetaObject.smap[sn.ToUpper()] = metaobj; MetaObject.smap[sen.ToUpper()] = metaobj; } // Права tt = tt.Get_Next(); number = Convert.ToInt32(tt.Get_Value()); for (i = 0; i < number; ++i) { tt = tt.Get_Next(); new MetaRight(tt); } // Деревья сериализации tt = tt.Get_Next(); number = Convert.ToInt32(tt.Get_Value()); for (i = 0; i < number; ++i) { tt = tt.Get_Next(); t = tt.Get_First(); mtype = staticTypes.GetTypeByName(t.Get_Value()); mtype?.setSerializationTree(t.Get_Next()); } tr = null; mt_empty = new MetaType(staticTypes, "<Пустой тип>", "<Empty type>", "", "", "00000000-0000-0000-0000-000000000000"); // Этот тип нигде не удаляется mt_string = staticTypes.GetTypeByName("Строка"); mt_number = staticTypes.GetTypeByName("Число"); mt_bool = staticTypes.GetTypeByName("Булево"); mt_date = staticTypes.GetTypeByName("Дата"); mt_undef = staticTypes.GetTypeByName("Неопределено"); mt_null = staticTypes.GetTypeByName("Null"); mt_type = staticTypes.GetTypeByName("Тип"); mt_uid = staticTypes.GetTypeByName("УникальныйИдентификатор"); mt_typedescrinternal = staticTypes.GetTypeByName("ОписаниеТипаВнутр"); mt_binarydata = staticTypes.GetTypeByName("ДвоичныеДанные"); mt_arbitrary = staticTypes.GetTypeByName("Произвольный"); mt_container = staticTypes.GetTypeByName("Контейнер"); mt_config = staticTypes.GetTypeByName("ОбъектМетаданныхКонфигурация"); mt_standart_attribute = staticTypes.GetTypeByName("СтандартныйРеквизит"); mt_standart_tabular_section = staticTypes.GetTypeByName("СтандартнаяТабличнаяЧасть"); mtype = staticTypes.GetTypeByName("КвалификаторыДаты"); mp_datefractions = mtype?.GetProperty("ЧастиДаты"); mt_datefractions = staticTypes.GetTypeByName("ЧастиДаты"); mv_datefractionsdate = mt_datefractions?.GetValue("Дата"); mv_datefractionstime = mt_datefractions?.GetValue("Время"); mt_tabularsection = staticTypes.GetTypeByName("ОбъектМетаданных: ТабличнаяЧасть"); mt_attribute = staticTypes.GetTypeByName("ОбъектМетаданных: Реквизит"); mt_metaobjref = staticTypes.GetTypeByName("ОбъектМетаданныхСсылка"); mt_metarefint = staticTypes.GetTypeByName("ОбъектМетаданныхСсылкаВнутр"); mt_tabsection = staticTypes.GetTypeByName("ТабличнаяЧасть"); mt_metaref = staticTypes.GetTypeByName("МетаСсылка"); if (MetaStandartTabularSection.list != null) { for (j = 0; j < MetaStandartTabularSection.list.Count; ++j) { MetaStandartTabularSection.list[(int)j]._class = Class.GetClass(MetaStandartTabularSection.list[(int)j].class_uid); } } ShowMessage("Окончание загрузки статических типов"); Form1.log.Info("Окончание загрузки статических типов"); }