// *** Start programmer edit section *** (ОрганизацияБС CustomMembers) // *** End programmer edit section *** (ОрганизацияБС CustomMembers) // *** Start programmer edit section *** (OnUpdateОрганизация CustomAttributes) // *** End programmer edit section *** (OnUpdateОрганизация CustomAttributes) public virtual ICSSoft.STORMNET.DataObject[] OnUpdateОрганизация(IIS.Product_58826.Организация UpdatedObject) { // *** Start programmer edit section *** (OnUpdateОрганизация) if (UpdatedObject.GetStatus() == ICSSoft.STORMNET.ObjectStatus.Deleted) { DataService.LoadObject(UpdatedObject); UpdatedObject.SetStatus(ICSSoft.STORMNET.ObjectStatus.Altered); UpdatedObject.Актуальность = false; ArrayList retObjs = new ArrayList(); var approve = ((SQLDataService)DataService).Query <Модуль>(Модуль.Views.МодульE).Where(k => k.Организация.__PrimaryKey == UpdatedObject.__PrimaryKey).ToArray(); foreach (var app in approve) { app.SetStatus(ICSSoft.STORMNET.ObjectStatus.Deleted); retObjs.Add(app); } // return approve; var approve2 = ((SQLDataService)DataService).Query <Договор>(Договор.Views.ДоговорE).Where(k => k.Организация.__PrimaryKey == UpdatedObject.__PrimaryKey).ToArray(); foreach (var app2 in approve2) { app2.SetStatus(ICSSoft.STORMNET.ObjectStatus.Deleted); retObjs.Add(app2); } // return approve2; var ret = new ICSSoft.STORMNET.DataObject[retObjs.Count]; retObjs.CopyTo(ret, 0); return(ret); } return(new ICSSoft.STORMNET.DataObject[0]); // *** End programmer edit section *** (OnUpdateОрганизация) }
/// <summary> /// Извлечение мастера из сериализованного представления /// </summary> /// <param name="masternode"> Текущий элемент xml </param> /// <param name="dataObject"> Текущий объект данных </param> /// <param name="assemblies"> Необходимые сборки </param> /// <param name="DataObjectCache"> DataObjectCache </param> /// <param name="deserializedObjectsList"> Словарь десериализованных объектов с их первичными ключами </param> private static void prv_ReadMaster( XmlNode masternode, ICSSoft.STORMNET.DataObject dataObject, SortedList assemblies, DataObjectCache DataObjectCache, Dictionary <string, ICSSoft.STORMNET.DataObject> deserializedObjectsList) { XmlNode specialTypeNode = masternode.Attributes.GetNamedItem("__Type"); string skey = masternode.Attributes.GetNamedItem("__PrimaryKey").Value; DataObject masterobject = null; if (deserializedObjectsList.ContainsKey(skey)) { masterobject = deserializedObjectsList[skey]; } else { string stype = specialTypeNode != null ? specialTypeNode.Value : masternode.Attributes.GetNamedItem("Type").Value; string asmName = (string)assemblies[stype]; Assembly asm = AssemblyLoader.LoadAssembly(asmName); Type mastertype = asm.GetType(stype); masterobject = DataObjectCache.CreateDataObject(mastertype, Information.TranslateValueToPrimaryKeyType(mastertype, skey)); if (specialTypeNode != null) { // То есть это был особым образом сериализованный мастер prv_XmlElement2DataObject( (XmlElement)masternode, masterobject, assemblies, DataObjectCache, deserializedObjectsList); } } Information.SetPropValueByName(dataObject, masternode.Name, masterobject); }
// *** Start programmer edit section *** (ВыборПриоритетаБС CustomMembers) // *** End programmer edit section *** (ВыборПриоритетаБС CustomMembers) // *** Start programmer edit section *** (OnUpdateВыборПриоритета CustomAttributes) // *** End programmer edit section *** (OnUpdateВыборПриоритета CustomAttributes) public virtual ICSSoft.STORMNET.DataObject[] OnUpdateВыборПриоритета(IIS.Product_58826.ВыборПриоритета UpdatedObject) { // *** Start programmer edit section *** (OnUpdateВыборПриоритета) if (UpdatedObject.GetStatus() == ICSSoft.STORMNET.ObjectStatus.Deleted) { DataService.LoadObject(UpdatedObject); UpdatedObject.SetStatus(ICSSoft.STORMNET.ObjectStatus.Altered); UpdatedObject.Актуальность = false; var students4 = ((SQLDataService)DataService).Query <Студент>(Студент.Views.СтудентE).Where(k => k.Обучается == true).Where(k => k.__PrimaryKey == UpdatedObject.Студент.__PrimaryKey).ToArray(); if (UpdatedObject.МодульВыбран == true) //если удаляем запись учебного плана, то нужно учесть уменьшение кол-ва выбранных модулей { var students = ((SQLDataService)DataService).Query <Студент>(Студент.Views.СтудентE).Where(k => k.Обучается == true).Where(k => k.__PrimaryKey == UpdatedObject.Студент.__PrimaryKey).ToArray(); foreach (var stu in students) { stu.КоличествоПрограмм--; UpdatedObject.МодульВыбран = false; } return(students); } } else //если не удаляем, а просто изменяем или создаем запись { ArrayList retObjs = new ArrayList(); var students2 = ((SQLDataService)DataService).Query <Студент>(Студент.Views.СтудентE).Where(k => k.Обучается == true).ToArray(); for (var z = 0; z < students2.Length; z++) { if ((UpdatedObject.МодульВыбран == true) && (UpdatedObject.Студент.Логин == students2[z].Логин)) { students2[z].КоличествоПрограмм++; } if ((UpdatedObject.МодульВыбран == false) || (UpdatedObject.Студент.Логин != students2[z].Логин)) { } if ((UpdatedObject.МодульВыбран == false) && (UpdatedObject.Студент.Логин == students2[z].Логин)) { if (UpdatedObject.GetStatus() == ICSSoft.STORMNET.ObjectStatus.Created) { //ибо условию в if выше этого соответствует снятие галочки "модуль выбран" в выборе приоритета. Что совпадает с комбинацией при создании модуля. } else { students2[z].КоличествоПрограмм--; } } retObjs.Add(students2[z]); } var ret = new ICSSoft.STORMNET.DataObject[retObjs.Count]; retObjs.CopyTo(ret, 0); return(ret); } return(new ICSSoft.STORMNET.DataObject[0]); // *** End programmer edit section *** (OnUpdateВыборПриоритета) }
/// <summary> /// Получение XML документа из объекта данных /// </summary> /// <param name="dataObject"></param> /// <param name="serializeAggregators"></param> /// <param name="setObjectLoadingStateLoaded"></param> /// <param name="setObjectStatusCreated"></param> /// <returns></returns> public static XmlDocument DataObject2XMLDocument(ref ICSSoft.STORMNET.DataObject dataObject, bool serializeAggregators, bool setObjectLoadingStateLoaded, bool setObjectStatusCreated) { return(DataObject2XMLDocument( ref dataObject, serializeAggregators, setObjectLoadingStateLoaded, setObjectStatusCreated, false)); }
protected override void PrepareDataObjectForEdit(ICSSoft.STORMNET.DataObject dobject) { // *** Start programmer edit section *** (PrepareDataObjectForEdit (DataObject) start) // *** End programmer edit section *** (PrepareDataObjectForEdit (DataObject) start) m_objView = ICSSoft.STORMNET.Information.GetView("MainObjE", typeof(SimpleTestAuditProject.MainObj)); if (((dobject.GetStatus(false) != ICSSoft.STORMNET.ObjectStatus.Created) || dobject.Prototyped)) { ICSSoft.STORMNET.Business.DataServiceProvider.DataService.LoadObject(m_objView, dobject, false, false); dobject.InitDataCopy(); } // *** Start programmer edit section *** (PrepareDataObjectForEdit (DataObject) end) // *** End programmer edit section *** (PrepareDataObjectForEdit (DataObject) end) }
public void DataObjectWithKeyGuid2XMLDocumentTest() { DataObjectWithKeyGuid dataObjectWithKeyGuid = new DataObjectWithKeyGuid(); KeyGuid g = Guid.NewGuid(); dataObjectWithKeyGuid.LinkToMaster1 = g; Console.WriteLine("Записали Guid " + dataObjectWithKeyGuid.LinkToMaster1); ICSSoft.STORMNET.DataObject dObjToXML = dataObjectWithKeyGuid; var serializedObj = ToolXML.DataObject2XMLDocument(ref dObjToXML); DataObjectWithKeyGuid dataObjectWithKeyGuidFromXML = new DataObjectWithKeyGuid(); ICSSoft.STORMNET.DataObject dObjFromXML = dataObjectWithKeyGuidFromXML; ToolXML.XMLDocument2DataObject(ref dObjFromXML, serializedObj); Assert.Equal(((DataObjectWithKeyGuid)dObjFromXML).LinkToMaster1, g); Assert.Null(((DataObjectWithKeyGuid)dObjFromXML).LinkToMaster2); }
/// <summary> /// Получение XML документа из объекта данных /// </summary> /// <param name="dataObject"> Сам объект данных </param> /// <param name="serializeAggregators"> Следует ли сериализовать детейлы </param> /// <param name="setObjectLoadingStateLoaded"> Установить LoadingState объекта в Loaded </param> /// <param name="setObjectStatusCreated"> Установить ObjectStatus объекта в Created </param> /// <param name="serializeMasters"> Проводить полную сериализацию мастеров объектов </param> /// <returns> Сериализованное представление объекта </returns> public static XmlDocument DataObject2XMLDocument( ref ICSSoft.STORMNET.DataObject dataObject, bool serializeAggregators, bool setObjectLoadingStateLoaded, bool setObjectStatusCreated, bool serializeMasters) { var xmlDoc = new XmlDocument(); if (dataObject.GetStatus() != ObjectStatus.Deleted) { // Удалённые объекты сохранять не следует xmlDoc.LoadXml(@"<" + "STORMNETXMLDataService" + " />"); var xmlMainEl = (XmlElement)xmlDoc.FirstChild; var xmlEl = (XmlElement)xmlMainEl.AppendChild(xmlDoc.CreateElement(dataObject.GetType().ToString())); var assemblies = new SortedList(); prv_DataObject2XmlElement( xmlEl, dataObject, assemblies, serializeAggregators, setObjectLoadingStateLoaded, setObjectStatusCreated, serializeMasters, new List <string>()); var xmlAssemblies = (XmlElement)xmlDoc.CreateElement("Assemblies"); for (int i = 0; i < assemblies.Count; i++) { var xmlAssembly = (XmlElement)xmlAssemblies.AppendChild(xmlDoc.CreateElement((string)assemblies.GetKey(i))); xmlAssembly.SetAttribute("Assembly", (string)assemblies.GetByIndex(i)); } xmlMainEl.AppendChild(xmlAssemblies); } else if (setObjectStatusCreated) { // Необходимо вернуть пустой, вновь созданный объект ConstructorInfo ci = dataObject.GetType().GetConstructor(new System.Type[0]); dataObject = (DataObject)ci.Invoke(new object[0]); } return(xmlDoc); }
/// <summary> /// Получение объекта данных из ранее полученного XML документа /// </summary> /// <param name="dataObject"> Объект данных, в который будем десериализовывать </param> /// <param name="xmlDoc"> Сериализованный объект данных </param> public static void XMLDocument2DataObject(ref ICSSoft.STORMNET.DataObject dataObject, XmlDocument xmlDoc) { if (dataObject == null) { throw new ArgumentNullException("dataObject"); } var dataObjectCache = new DataObjectCache(); dataObjectCache.StartCaching(false); try { var xmlMainEl = (XmlElement)xmlDoc.FirstChild; XmlNode xmlNode = xmlMainEl.SelectSingleNode("Assemblies"); if (xmlNode != null) { XmlNodeList xmlAssemblies = xmlNode.ChildNodes; var assemblies = new SortedList(); for (int i = 0; i < xmlAssemblies.Count; i++) { assemblies.Add(xmlAssemblies[i].Name, ((XmlElement)xmlAssemblies[i]).GetAttribute("Assembly")); } var xmlEl = (XmlElement)xmlMainEl.FirstChild; if (xmlEl.Name == "Assemblies") { xmlEl = (XmlElement)xmlMainEl.LastChild; } prv_XmlElement2DataObject(xmlEl, dataObject, assemblies, dataObjectCache, new Dictionary <string, DataObject>()); } else { throw new Exception("Не найдено описание подключаемых сборок в сериализованном объекте"); } } finally { dataObjectCache.StopCaching(); } }
/// <summary> /// Прочитать свойство объекта (с целью его дальнейшей десериализации) /// </summary> /// <param name="xmlEl"> Текущий элемент xml </param> /// <param name="dataObject"> Текущий объект данных </param> /// <param name="propname"> Читаемое свойство объекта </param> /// <param name="assemblies"> Необходимые сборки </param> /// <param name="DataObjectCache"> DataObjectCache </param> /// <param name="deserializedObjectsList"> Словарь десериализованных объектов с их первичными ключами </param> private static void prv_ReadProperty( XmlElement xmlEl, ICSSoft.STORMNET.DataObject dataObject, string propname, SortedList assemblies, DataObjectCache DataObjectCache, Dictionary <string, ICSSoft.STORMNET.DataObject> deserializedObjectsList) { Type proptype = Information.GetPropertyType(dataObject.GetType(), propname); if (proptype.IsSubclassOf(typeof(DataObject))) { // Значит, мастер XmlNode masternode = xmlEl.GetElementsByTagName(propname)[0]; prv_ReadMaster(masternode, dataObject, assemblies, DataObjectCache, deserializedObjectsList); } else { if (proptype.IsSubclassOf(typeof(DetailArray))) { // Значит, детейл var detail = (DetailArray)Information.GetPropValueByName(dataObject, propname); XmlNode detailnode = xmlEl.GetElementsByTagName(propname)[0]; if (detailnode != null) { XmlNodeList xmldetailobjects = detailnode.ChildNodes; if (xmldetailobjects != null) { prv_ReadDetail(xmldetailobjects, detail, assemblies, DataObjectCache, deserializedObjectsList); } } } else { // Значит, это обычный атрибут XmlAttribute attr = xmlEl.GetAttributeNode(propname); if (attr != null) { prv_ReadAttribute(attr, dataObject); } } } }
public void SimpleDataObject2XMLDocumentTest() { SimpleDataObject simpleDataObject = new SimpleDataObject(); string name = "Tomcat"; int age = 15; KeyGuid pk = (KeyGuid)simpleDataObject.__PrimaryKey; simpleDataObject.Name = name; simpleDataObject.Age = age; Console.WriteLine("Записали Name: " + simpleDataObject.Name + " Age: " + simpleDataObject.Age); ICSSoft.STORMNET.DataObject dObjToXML = simpleDataObject; var serializedObj = ToolXML.DataObject2XMLDocument(ref dObjToXML); ICSSoft.STORMNET.DataObject dObjFromXML = null; bool babah = false; try { ToolXML.XMLDocument2DataObject(ref dObjFromXML, serializedObj); } catch (ArgumentNullException) { babah = true; } Assert.True(babah); SimpleDataObject simpleDataObjectFromXML = new SimpleDataObject(); dObjFromXML = simpleDataObjectFromXML; ToolXML.XMLDocument2DataObject(ref dObjFromXML, serializedObj); Assert.Equal(((SimpleDataObject)dObjFromXML).Name, name); Assert.Equal(((SimpleDataObject)dObjFromXML).Age, age); Assert.Equal(dObjFromXML.__PrimaryKey, pk); }
public override System.Type GetEditor(ICSSoft.STORMNET.UI.EventType eventtype, ICSSoft.STORMNET.DataObject dataobject, string contpath, string propertyname, object tag) { // *** Start programmer edit section *** (MainObjE.GetEditor(EventType, DataObject, string, string) start) // *** End programmer edit section *** (MainObjE.GetEditor(EventType, DataObject, string, string) start) if ((propertyname == "MasterObj")) { return(System.Type.GetType("SimpleTestAuditProject.MasterObjL,SimpleTestAuditProject(Forms)")); } if ((propertyname == "Hierarchy")) { return(System.Type.GetType("SimpleTestAuditProject.MainObjL,SimpleTestAuditProject(Forms)")); } if ((propertyname == "DetailObj.MainObj")) { return(System.Type.GetType("SimpleTestAuditProject.MainObjL,SimpleTestAuditProject(Forms)")); } if ((propertyname == "DetailObj.DetailMaster")) { return(System.Type.GetType("SimpleTestAuditProject.DetailMasterL,SimpleTestAuditProject(Forms)")); } throw new ICSSoft.STORMNET.UI.NoSuchContainerException("MainObjE", eventtype, dataobject, contpath, propertyname); }
/// <summary> /// Извлечение объекта данных из строки /// </summary> /// <param name="xmlEl"> Текущий элемент xml </param> /// <param name="dataObject"> Текущий объект данных </param> /// <param name="assemblies"> Необходимые сборки </param> /// <param name="DataObjectCache"> DataObjectCache </param> /// <param name="deserializedObjectsList"> Словарь десериализованных объектов с их первичными ключами </param> private static void prv_XmlElement2DataObject( XmlElement xmlEl, ICSSoft.STORMNET.DataObject dataObject, SortedList assemblies, DataObjectCache DataObjectCache, Dictionary <string, ICSSoft.STORMNET.DataObject> deserializedObjectsList) { if (!deserializedObjectsList.ContainsKey(dataObject.__PrimaryKey.ToString())) { deserializedObjectsList.Add(dataObject.__PrimaryKey.ToString(), dataObject); } var storableprops = new ArrayList(Information.GetStorablePropertyNames(dataObject.GetType())); var order = new StringCollection(); order.AddRange(Information.GetLoadingOrder(dataObject.GetType())); foreach (string propname in order) { // Прочитка в соответствии с указанным порядком prv_ReadProperty(xmlEl, dataObject, propname, assemblies, DataObjectCache, deserializedObjectsList); } XmlAttributeCollection xmlattributes = xmlEl.Attributes; XmlNodeList xmlchilds = xmlEl.ChildNodes; if (xmlattributes != null) { foreach (XmlAttribute xmlattribute in xmlattributes) { if (!order.Contains(xmlattribute.Name) && storableprops.Contains(xmlattribute.Name)) { prv_ReadAttribute(xmlattribute, dataObject); } } } if (xmlchilds != null) { foreach (XmlNode xmlchild in xmlchilds) { Type proptype = Information.GetPropertyType(dataObject.GetType(), xmlchild.Name); if (proptype.IsSubclassOf(typeof(DataObject))) { // Это мастер prv_ReadMaster(xmlchild, dataObject, assemblies, DataObjectCache, deserializedObjectsList); } else { // Это детейл if (!order.Contains(xmlchild.Name)) { var detail = (DetailArray)Information.GetPropValueByName(dataObject, xmlchild.Name); XmlNodeList xmldetailobjects = xmlchild.ChildNodes; if (xmldetailobjects != null) { prv_ReadDetail(xmldetailobjects, detail, assemblies, DataObjectCache, deserializedObjectsList); } } } } } if (xmlEl.HasAttribute("DynamicProperties")) { if (xmlEl.HasAttribute("DynamicProperties")) { string dpstr = xmlEl.GetAttribute("DynamicProperties"); if (string.IsNullOrEmpty(dpstr)) { dataObject.DynamicProperties = new NameObjectCollection(); } else { dataObject.DynamicProperties = (NameObjectCollection)ObjectFromString(dpstr); } } } dataObject.InitDataCopy(); dataObject.SetLoadingState(LoadingState.Loaded); dataObject.SetStatus(ObjectStatus.UnAltered); }
/// <summary> /// Получение XML документа из объекта данных /// </summary> /// <param name="xmlEl"> Текущий XmlElement, куда записываются данные и от которого создаются потомки </param> /// <param name="dataObject"> Сериализуемый объект данных </param> /// <param name="assemblies"> Имена сборок (будут записаны в xml) </param> /// <param name="serializeAggregators"> Следует ли сериализовать детейлы </param> /// <param name="setObjectLoadingStateLoaded"> Установить LoadingState объекта в Loaded </param> /// <param name="setObjectStatusCreated"> Установить ObjectStatus объекта в Created </param> /// <param name="serializeMasters"> Сериализовать мастеров объектов </param> /// <param name="usedPrimaryKeyList"> Вспомогательный список первичных ключей объектов, которые уже были сериализованы </param> /// <returns> Сериализованное представление объекта </returns> private static void prv_DataObject2XmlElement( XmlElement xmlEl, ICSSoft.STORMNET.DataObject dataObject, SortedList assemblies, bool serializeAggregators, bool setObjectLoadingStateLoaded, bool setObjectStatusCreated, bool serializeMasters, ICollection <string> usedPrimaryKeyList) { if (serializeMasters && usedPrimaryKeyList.Contains(dataObject.__PrimaryKey.ToString())) { // Это значит, что данный объект уже был сериализован (это надстройка для адекватной сериализации мастеров) xmlEl.SetAttribute("Type", dataObject.GetType().ToString()); xmlEl.SetAttribute("__PrimaryKey", dataObject.__PrimaryKey.ToString()); return; } if (serializeMasters) { // Надстройка для адекватной сериализации мастеров usedPrimaryKeyList.Add(dataObject.__PrimaryKey.ToString()); } string[] propNames = Information.GetStorablePropertyNames(dataObject.GetType()); for (int i = 0; i < propNames.Length; i++) { PropertyInfo propertyinfo = dataObject.GetType().GetProperty(propNames[i]); if (!prv_IsAgregator(propertyinfo) || serializeAggregators) { if (propertyinfo.PropertyType.IsSubclassOf(typeof(DetailArray))) { // Значит, это детейлы var xmlElDetailArray = (XmlElement)xmlEl.AppendChild(xmlEl.OwnerDocument.CreateElement(propNames[i])); var detailarray = (ICSSoft.STORMNET.DetailArray)Information.GetPropValueByName(dataObject, propNames[i]); if (detailarray != null) { int j = 0; while (j < detailarray.Count) { if (detailarray.ItemByIndex(j).GetStatus() != ObjectStatus.Deleted) { // Удалённые объекты сохранять не следует string strtype = detailarray.ItemByIndex(j).GetType().ToString(); var xmlElDetailObject = (XmlElement)xmlElDetailArray.AppendChild(xmlEl.OwnerDocument.CreateElement(strtype)); if (!assemblies.ContainsKey(strtype)) { assemblies.Add(strtype, detailarray.ItemByIndex(j).GetType().Assembly.FullName); } prv_DataObject2XmlElement( xmlElDetailObject, detailarray.ItemByIndex(j), assemblies, serializeAggregators, setObjectLoadingStateLoaded, setObjectStatusCreated, serializeMasters, usedPrimaryKeyList); } else { // Тогда нужно грохнуть из массива detailarray.Remove(detailarray.ItemByIndex(j)); j--; } j++; } } } else { if (propertyinfo.PropertyType.IsSubclassOf(typeof(DataObject))) { // Значит, это мастер object mastervalue = Information.GetPropValueByName(dataObject, propNames[i]); if (mastervalue != null) { string mastertype = mastervalue.GetType().ToString(); if (!assemblies.ContainsKey(mastertype)) { assemblies.Add(mastertype, mastervalue.GetType().Assembly.FullName); } var xmlElMaster = (XmlElement)xmlEl.AppendChild(xmlEl.OwnerDocument.CreateElement(propNames[i])); var masterDataObject = (DataObject)Information.GetPropValueByName(dataObject, propNames[i]); if (!serializeMasters) { // Старое поведение, которое не сериализует мастеров xmlElMaster.SetAttribute("Type", mastervalue.GetType().ToString()); xmlElMaster.SetAttribute("__PrimaryKey", masterDataObject.__PrimaryKey.ToString()); } else { // Новое поведение, которое будет сериализовать мастеров if (!usedPrimaryKeyList.Contains(masterDataObject.__PrimaryKey.ToString())) { xmlElMaster.SetAttribute("__Type", mastervalue.GetType().ToString()); } prv_DataObject2XmlElement( xmlElMaster, masterDataObject, assemblies, serializeAggregators, setObjectLoadingStateLoaded, setObjectStatusCreated, serializeMasters, usedPrimaryKeyList); } } } else { // Значит, это собственный атрибут object propvalue = Information.GetPropValueByName(dataObject, propNames[i]) ?? string.Empty; xmlEl.SetAttribute(propNames[i], propvalue.ToString()); } } } } xmlEl.SetAttribute("DynamicProperties", dataObject.DynamicProperties.Count > 0 ? ObjectToString(dataObject.DynamicProperties) : string.Empty); if (setObjectLoadingStateLoaded) { dataObject.SetLoadingState(LoadingState.Loaded); } if (setObjectStatusCreated) { dataObject.SetStatus(ObjectStatus.Created); } }
public override System.Type GetEditor(ICSSoft.STORMNET.UI.EventType eventtype, ICSSoft.STORMNET.DataObject dataobject, string contpath, string propertyname) { // *** Start programmer edit section *** (MainObjL.GetEditor(EventType, DataObject, string, string) start) // *** End programmer edit section *** (MainObjL.GetEditor(EventType, DataObject, string, string) start) System.Type objecttype = dataobject.GetType(); if ((eventtype == ICSSoft.STORMNET.UI.EventType.Edit)) { if ((objecttype == typeof(SimpleTestAuditProject.MainObj))) { return(System.Type.GetType("SimpleTestAuditProject.MainObjE,SimpleTestAuditProject(Forms)")); } } if ((eventtype == ICSSoft.STORMNET.UI.EventType.New)) { if ((objecttype == typeof(SimpleTestAuditProject.MainObj))) { return(System.Type.GetType("SimpleTestAuditProject.MainObjE,SimpleTestAuditProject(Forms)")); } } throw new ICSSoft.STORMNET.UI.NoSuchContainerException("MainObjL", eventtype, dataobject, contpath, propertyname); }
/// <summary> /// Получение XML документа из объекта данных /// </summary> /// <param name="dataObject"></param> /// <returns></returns> public static XmlDocument DataObject2XMLDocument(ref ICSSoft.STORMNET.DataObject dataObject) { return(DataObject2XMLDocument(ref dataObject, false, true, true)); }
/// <summary> /// /// </summary> /// <param name="info"></param> /// <param name="context"></param> public CantUpdateNotLoadedPropertiesException(SerializationInfo info, StreamingContext context) { dobject = null; props = (string[])info.GetValue("props", typeof(string[])); }
/// <summary> /// /// </summary> /// <param name="aDataObject"></param> /// <param name="aProps"></param> public CantUpdateNotLoadedPropertiesException(ICSSoft.STORMNET.DataObject aDataObject, System.Collections.Specialized.StringCollection aProps) { dobject = aDataObject; props = new string[aProps.Count]; aProps.CopyTo(props, 0); }
/// <summary> /// /// </summary> /// <param name="aDataObject"></param> /// <param name="aProps"></param> public CantUpdateNotLoadedPropertiesException(ICSSoft.STORMNET.DataObject aDataObject, params string[] aProps) { dobject = aDataObject; props = aProps; }
// *** Start programmer edit section *** (МодульБС CustomMembers) // *** End programmer edit section *** (МодульБС CustomMembers) // *** Start programmer edit section *** (OnUpdateМодуль CustomAttributes) // *** End programmer edit section *** (OnUpdateМодуль CustomAttributes) public virtual ICSSoft.STORMNET.DataObject[] OnUpdateМодуль(IIS.Product_58826.Модуль UpdatedObject) { // *** Start programmer edit section *** (OnUpdateМодуль) if (UpdatedObject.GetStatus() == ICSSoft.STORMNET.ObjectStatus.Deleted) { ArrayList retObjs = new ArrayList(); DataService.LoadObject(UpdatedObject); UpdatedObject.SetStatus(ICSSoft.STORMNET.ObjectStatus.Altered); UpdatedObject.Актуальность = false; var approve = ((SQLDataService)DataService).Query <ВыборПриоритета>(ВыборПриоритета.Views.ВыборПриоритетаE).Where(k => k.Модуль.__PrimaryKey == UpdatedObject.__PrimaryKey).ToArray(); foreach (var app in approve) { app.SetStatus(ICSSoft.STORMNET.ObjectStatus.Deleted); retObjs.Add(app); } var ret = new ICSSoft.STORMNET.DataObject[retObjs.Count]; retObjs.CopyTo(ret, 0); return(ret); } if (UpdatedObject.GetStatus() == ICSSoft.STORMNET.ObjectStatus.Created) { var array2 = ((SQLDataService)DataService).Query <Модуль>(Модуль.Views.МодульE).Where(k => k.Название == UpdatedObject.Название).Where(k => k.Актуальность == true).ToArray(); foreach (var arr in array2) { if (UpdatedObject.Актуальность == true) { if (arr.Название == UpdatedObject.Название) { throw new Exception("Образовательная программа с таким названием уже существует!"); } } } ArrayList retObjs = new ArrayList(); if (UpdatedObject.Актуальность == true) { var students = ((SQLDataService)DataService).Query <Студент>(Студент.Views.СтудентE).Where(k => k.Обучается == true).ToArray(); for (var z = 0; z < students.Length; z++) { var semesters = ((SQLDataService)DataService).Query <Семестр>(Семестр.Views.СеместрE).Where(k => k.Актуальность == true).Where(k => k.Номер == UpdatedObject.Семестр.Номер).ToArray(); for (var i = 0; i < semesters.Length; i++) { var moduls = ((SQLDataService)DataService).Query <Модуль>(Модуль.Views.МодульE).Where(k => k.Актуальность == true).Where(k => k.Семестр.Номер == semesters[i].Номер).ToArray(); //дополнение нового модуля в учебные планы студентов IDataService ds = DataServiceProvider.DataService; var запись = new ВыборПриоритета { Приоритет = moduls.Length + 1, Модуль = UpdatedObject, Актуальность = true, МодульВыбран = false, Студент = students[z] }; retObjs.Add(запись); } } } var ret = new ICSSoft.STORMNET.DataObject[retObjs.Count]; retObjs.CopyTo(ret, 0); return(ret); } var array = ((SQLDataService)DataService).Query <Модуль>(Модуль.Views.МодульE).Where(k => k.Название == UpdatedObject.Название).Where(k => k.Актуальность == true).Where(k => k.__PrimaryKey != UpdatedObject.__PrimaryKey).ToArray(); foreach (var arr in array) { if (UpdatedObject.Актуальность == true) { if (arr.Название == UpdatedObject.Название) { throw new Exception("Образовательная программа с таким названием уже существует!"); } } } return(new ICSSoft.STORMNET.DataObject[0]); // *** End programmer edit section *** (OnUpdateМодуль) }
/// <summary> /// Получение XML документа из объекта данных /// </summary> /// <param name="dataObject"></param> /// <param name="serializeAggregators"></param> /// <returns></returns> public static XmlDocument DataObject2XMLDocument(ref ICSSoft.STORMNET.DataObject dataObject, bool serializeAggregators) { return(DataObject2XMLDocument(ref dataObject, serializeAggregators, true, true)); }
// *** Start programmer edit section *** (СтудентБС CustomMembers) // *** End programmer edit section *** (СтудентБС CustomMembers) // *** Start programmer edit section *** (OnUpdateСтудент CustomAttributes) // *** End programmer edit section *** (OnUpdateСтудент CustomAttributes) public virtual ICSSoft.STORMNET.DataObject[] OnUpdateСтудент(IIS.Product_58826.Студент UpdatedObject) { ArrayList retObjs = new ArrayList(); // *** Start programmer edit section *** (OnUpdateСтудент) if (UpdatedObject.GetStatus() == ICSSoft.STORMNET.ObjectStatus.Created) { if (UpdatedObject.Обучается == true) { if (UpdatedObject.Пароль.Length < 8) { throw new Exception("Длина пароля должна быть не менее 8 символов!"); } var array = ((SQLDataService)DataService).Query <Студент>(Студент.Views.СтудентE).Where(k => k.__PrimaryKey != UpdatedObject.__PrimaryKey).Where(k => k.Обучается == true).ToArray(); foreach (var arr in array) { if (UpdatedObject.Обучается == true) { if (arr.Логин == UpdatedObject.Логин) { throw new Exception("Такой логин уже существует!"); } if ((arr.ФИО == UpdatedObject.ФИО) && (arr.ДатаРождения == UpdatedObject.ДатаРождения) && (arr.АдресПочты == UpdatedObject.АдресПочты)) { throw new Exception("Такой студент уже существует!"); } } } var semesters = ((SQLDataService)DataService).Query <Семестр>(Семестр.Views.СеместрE).Where(k => k.Актуальность == true).ToArray(); for (var i = 0; i < semesters.Length; i++) { var moduls = ((SQLDataService)DataService).Query <Модуль>(Модуль.Views.МодульE).Where(k => k.Актуальность == true).Where(k => k.Семестр.Номер == semesters[i].Номер).ToArray(); for (var j = 0; j < moduls.Length; j++) { IDataService ds = DataServiceProvider.DataService; var запись = new ВыборПриоритета { Приоритет = j + 1, Модуль = moduls[j], Актуальность = true, МодульВыбран = false, Студент = UpdatedObject }; retObjs.Add(запись); } } } var ret = new ICSSoft.STORMNET.DataObject[retObjs.Count]; retObjs.CopyTo(ret, 0); return(ret); } if (UpdatedObject.GetStatus() == ICSSoft.STORMNET.ObjectStatus.Deleted) { DataService.LoadObject(UpdatedObject); UpdatedObject.SetStatus(ICSSoft.STORMNET.ObjectStatus.Altered); UpdatedObject.Обучается = false; var approve = ((SQLDataService)DataService).Query <ВыборПриоритета>(ВыборПриоритета.Views.ВыборПриоритетаE).Where(k => k.Студент.__PrimaryKey == UpdatedObject.__PrimaryKey).ToArray(); foreach (var app in approve) { app.SetStatus(ICSSoft.STORMNET.ObjectStatus.Deleted); } return(approve); } if (UpdatedObject.GetStatus() == ICSSoft.STORMNET.ObjectStatus.Altered) { if (UpdatedObject.Пароль.Length < 8) { throw new Exception("Длина пароля должна быть не менее 8 символов!"); } var array = ((SQLDataService)DataService).Query <Студент>(Студент.Views.СтудентE).Where(k => k.__PrimaryKey != UpdatedObject.__PrimaryKey).Where(k => k.Обучается == true).ToArray(); foreach (var arr in array) { if (UpdatedObject.Обучается == true) { if (arr.Логин == UpdatedObject.Логин) { throw new Exception("Такой логин уже существует!"); } if ((arr.ФИО == UpdatedObject.ФИО) && (arr.ДатаРождения == UpdatedObject.ДатаРождения) && (arr.АдресПочты == UpdatedObject.АдресПочты)) { throw new Exception("Такой студент уже существует!"); } } } } return(new ICSSoft.STORMNET.DataObject[0]); // *** End programmer edit section *** (OnUpdateСтудент) }
public override System.Type GetEditor(ICSSoft.STORMNET.UI.EventType eventtype, ICSSoft.STORMNET.DataObject dataobject, string contpath, string propertyname, object tag) { // *** Start programmer edit section *** (MainObjL.GetEditor(EventType, Type, string, string, object) start) // *** End programmer edit section *** (MainObjL.GetEditor(EventType, Type, string, string, object) start) return(this.GetEditor(eventtype, dataobject, contpath, propertyname)); }
public override System.Type GetEditor(ICSSoft.STORMNET.UI.EventType eventtype, ICSSoft.STORMNET.DataObject dataobject, string contpath, string propertyname, object tag) { // *** Start programmer edit section *** (DetailMasterE.GetEditor(EventType, DataObject, string, string) start) // *** End programmer edit section *** (DetailMasterE.GetEditor(EventType, DataObject, string, string) start) throw new ICSSoft.STORMNET.UI.NoSuchContainerException("DetailMasterE", eventtype, dataobject, contpath, propertyname); }