Ejemplo n.º 1
0
        // Установить значение любого объекта GR
        public static void SetAttributeValueRegular(this IgObject obj
                                                    , bool isUDA
                                                    , string name
                                                    , MxDataType type
                                                    , object value
                                                    , string description = ""
                                                    , string engUnits    = ""
                                                    )
        {
            if (obj == null)
            {
                throw new ArgumentNullException("IgObject is null");
            }
            //Все типы MxString* сводятся только в тип MxInternationalizedString
            if (type == MxDataType.MxString || type == MxDataType.MxInternationalizedString || type == MxDataType.MxBigString)
            {
                type = MxDataType.MxInternationalizedString;
            }

            if (SystemAttributes.TryGetValue(name, out var act))
            {
                obj.CheckOutWithCheckStatus();
                try
                {
                    act(obj, value?.ToString());
                    obj.SaveAndCheckIn($"System attribute {name} = {(value == null ? "null" : $"\"{value}\"")}");
                }
Ejemplo n.º 2
0
        //установка значения атриибутов
        public void SetValueAttributes(IgObject gobj, AttributesDictionary source)
        {
            if (gobj == null)
            {
                throw new IgObjectsNullReferenceExceptions();
            }
            if (source == null)
            {
                throw new ArgumentNullException($"Класс-слоаварь равен null");
            }
            gobj.CheckOutWithCheckStatus();

            foreach (var item in source)
            {
                IAttribute attr = gobj.GetAttributesAny()[item.Key];
                if (attr.CommandResult.Successful && attr != null)
                {
                    attr.SetValue(item.Value);
                }
            }
            gobj.SaveAndCheckIn();
            if (!gobj.CommandResult.Successful)
            {
                throw new GalaxyExceptions($"Не удается охранить объект {gobj.Tagname}.");
            }
        }
Ejemplo n.º 3
0
        //Проверить, существует ли такой атрибут.
        public static bool IsExistAttribute(this IgObject gobj, string attrname)
        {
            if (gobj == null)
            {
                throw new ArgumentNullException($" Объект {gobj.Tagname} не существует или NULL");
            }
            if (string.IsNullOrWhiteSpace(attrname))
            {
                throw new Exception($"Имя атрибутта {nameof(attrname)} не может быть пустым");
            }
            try
            {
                var attrs = gobj.GetAttributesAny();// TODO: проверить нужно ли брать на редактирвоание
                var attr  = attrs[attrname];
                if (attr == null)
                {
                    return(false);
                }
                return(true);
            }
            catch (Exception)
            {
                return(false);

                throw; //TODO: может и не надо прокидывать дальше
            }
        }
Ejemplo n.º 4
0
 // Проверяем статус редактирования и берем на редактирвоание в противном случае
 public static void CheckOutWithCheckStatus(this IgObject gobj)
 {
     if (gobj.CheckoutStatus != ECheckoutStatus.notCheckedOut)
     {
         throw new GalaxyObjectAlreadyCheckOutedException(gobj.Tagname);
     }
     gobj.CheckOut();
 }
Ejemplo n.º 5
0
        // возвращает значение атрибта в MX
        public IMxValue GetMxValueAttribute(IgObject gobj, string attr_name)
        {
            if (string.IsNullOrEmpty(attr_name))
            {
                throw new AttributeNullReferenceException();
            }
            var attrs = gobj.GetAttributesAny();

            return(attrs[attr_name].value);
        }
Ejemplo n.º 6
0
 public static void SaveAndCheckIn(this IgObject obj, string comment = null)
 {
     obj.Save();
     if (comment == null)
     {
         obj.CheckIn(comment);
     }
     else
     {
         obj.CheckIn();
     }
 }
Ejemplo n.º 7
0
        public static string[] GetInhScriptsName(this IgObject gobj)
        {
            if (gobj == null)
            {
                throw new IgObjectsNullReferenceExceptions();
            }
            var           attrStringXml_mine = gobj.GetAttributesAny(false)["_InheritedExtensions"].value.GetString();
            XmlSerializer xmlExtension_mine  = new XmlSerializer(typeof(ExtensionInfo));
            var           attrString         = new StringReader(attrStringXml_mine);
            var           attrDeserialize    = (ExtensionInfo)xmlExtension_mine.Deserialize(attrString);
            var           res_mine           = attrDeserialize.ObjectExtension.Extension.Select(x => x.Name).ToArray();

            return(res_mine);
        }
Ejemplo n.º 8
0
        public static string[] GetInheritsUDANames(this IgObject gobj)
        {
            if (gobj == null)
            {
                throw new IgObjectsNullReferenceExceptions();
            }
            var           attrStringXML_inh    = gobj.Attributes["_InheritedUDAs"].value.GetString();
            XmlSerializer makeXML_inh          = new XmlSerializer(typeof(UDAInfo));
            var           attrString_inh       = new StringReader(attrStringXML_inh);
            var           attrUDeserialize_inh = (UDAInfo)makeXML_inh.Deserialize(attrString_inh);
            var           res_inh = attrUDeserialize_inh.Attribute.Select(x => x.Name);

            return(res_inh.ToArray());
        }
Ejemplo n.º 9
0
 // Чекиним объект
 public void CheckIn(IgObject igobj, DateTime dt = default(DateTime))
 {
     if (igobj == null)
     {
         throw new ArgumentNullException($"Объект не может быть NULL");
     }
     if (dt == null)
     {
         igobj.CheckIn(DateTime.Now.ToString("yyyyMMdd HH:mm:ss")); //TODO: проверить как передается время
     }
     else
     {
         igobj.CheckIn(dt.ToString("yyyyMMdd HH:mm:ss"));
     }
 }
Ejemplo n.º 10
0
 //Получить коллекцию атрибутов в IgObject( IsConfigurable - конфигурируемые или все)
 public static IAttributes GetAttributesAny(this IgObject gobj, bool IsConfigurable = false)
 {
     if (gobj == null)
     {
         throw new ArgumentNullException($" Объект {gobj.Tagname} не существует или NULL");
     }
     if (IsConfigurable)
     {
         return(gobj.ConfigurableAttributes);
     }
     else
     {
         return(gobj.Attributes);
     }
 }
Ejemplo n.º 11
0
        // Получаем знаения UDA
        public static Dictionary <string, string> GetUDAValues(this IgObject gobj)
        {
            if (gobj == null)
            {
                throw new IgObjectsNullReferenceExceptions();
            }
            Dictionary <string, string> udas = new Dictionary <string, string>();
            var attrs     = gobj?.GetAttributesAny();
            var uda_names = gobj?.GetInheritsUDANames().Concat(gobj?.GetMineUDANames().ToArray());

            foreach (var name in uda_names)
            {
                udas.Add(name, attrs[name].value.GetString());
            }
            return(udas);
        }
Ejemplo n.º 12
0
 //Полчучаем значение атрибута
 public static string GetAttributeValue(this IgObject gobj, string attrname)
 {
     if (gobj == null)
     {
         throw new ArgumentNullException($" Объект {gobj.Tagname} не существует или NULL");
     }
     if (string.IsNullOrWhiteSpace(attrname))
     {
         throw new Exception($"Имя атрибута {nameof(attrname)} не может быть пустым");
     }
     if (gobj.IsExistAttribute(attrname))
     {
         var attrs = gobj.GetAttributesAny();
         return(attrs[attrname]?.value?.GetString());
     }
     else
     {
         return(null);
     }
 }
Ejemplo n.º 13
0
        /// <summary>
        /// Backup a Single GObject to a File
        /// </summary>
        /// <param name="ExportType"></param>
        /// <param name="GalaxyObject"></param>
        /// <param name="BackupFileName"></param>
        /// <returns></returns>
        public int BackupToFile(EExportType ExportType, IgObject GalaxyObject, String BackupFileName)
        {
            IgObjects GalaxyObjects;

            String[] SingleItemName = new String[1];

            try
            {
                // first verify connection
                if (!this.Connected)
                {
                    throw new Exception("Galaxy not connected");
                }

                SingleItemName[0] = GalaxyObject.Tagname;

                if (SingleItemName[0].Substring(0, 1) == "$")
                {
                    //Template
                    GalaxyObjects = this.Galaxy.QueryObjectsByName(EgObjectIsTemplateOrInstance.gObjectIsTemplate, ref SingleItemName);
                }
                else
                {
                    // Instance
                    GalaxyObjects = this.Galaxy.QueryObjectsByName(EgObjectIsTemplateOrInstance.gObjectIsInstance, ref SingleItemName);
                }

                if (GalaxyObjects.count > 0)
                {
                    return(BackupToFile(ExportType, GalaxyObjects, BackupFileName));
                }

                return(0);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 14
0
        //Получить тип
        // если вернулось MxNoData - значит атрибута не существует
        // TODO: проверить нужен ли check out
        public static MxDataType GetAttributeMxDataType(this IgObject gobj, string attrname)
        {
            if (gobj == null)
            {
                throw new ArgumentNullException($" Объект {gobj.Tagname} не существует или NULL");
            }
            if (string.IsNullOrWhiteSpace(attrname))
            {
                throw new Exception($"Имя атрибута {nameof(attrname)} не может быть пустым");
            }
            MxDataType type = MxDataType.MxNoData;

            gobj.CheckOutWithCheckStatus();
            if (gobj.IsExistAttribute(attrname))
            {
                type = gobj.ConfigurableAttributes[attrname].DataType;
                gobj.SaveAndCheckIn($"Получение типа атрибута {attrname} для объекта {gobj}.");
            }
            else
            {
                throw new AttributeNullReferenceException();
            }
            return(type);
        }