예제 #1
0
 /// <summary>
 /// Добавление связанной детали к уже имеющейся.
 /// Добавляет связанную деталь в таблицу LinkParts и отношение между ней и
 /// оригинальной деталью в таблицу Links.
 /// </summary>
 public static bool InsertLinkPart(String code, LinkedPart lp)
 {
     try
     {
         ExecuteCommand(String.Format(insertLinkedPartCmd, lp.code, lp.producer, lp.type));
     }
     catch (MySqlException ex)
     {
         if (ex.Number != 1062)
         {
             Console.WriteLine(">[err] Связанная запчасть " + lp.code + " не была добавлена в БД:\n" + ex.Message);
             return(false);
         }
     }
     try
     {
         ExecuteCommand(String.Format(insertLinkCmd, code, lp.code));
     }
     catch (MySqlException ex)
     {
         if (ex.Number != 1062)
         {
             Console.WriteLine(">[err] Не удалось добавить связь между " + code + " и " + lp.code + ":\n" + ex.Message);
             return(false);
         }
     }
     return(true);
 }
예제 #2
0
        /// <summary>
        /// Принимает в качестве аргумента xml-элемент, содержащий данные о связанных запчастях
        /// какой-либо запчасти. Выбирает эти данные с пом. регулярных выражений
        /// и возвращает их в виде списка.
        /// </summary>
        static List <LinkedPart> GetAllLinkedParts(String linksXml)
        {
            List <LinkedPart> linksXmls = new List <LinkedPart>();
            Regex             regex     = new Regex(Core.LinkSeparator, RegexOptions.Singleline);
            Match             match     = regex.Match(linksXml);

            foreach (Match m in regex.Matches(linksXml))
            {
                String     linkBlock = m.Groups[1].Value;
                LinkedPart lp        = new LinkedPart();
                for (int i = 0; i < Core.LinkPatterns.Length; i++)
                {
                    Match m2 = Regex.Match(linkBlock, Core.LinkPatterns[i]);
                    switch (i)
                    {
                    case 0:
                        lp.producer = m2.Groups[1].Value;
                        break;

                    case 1:
                        lp.code = Core.ClearCode(m2.Groups[1].Value);
                        break;

                    case 2:
                        lp.type = m2.Groups[1].Value;
                        break;
                    }
                }
                linksXmls.Add(lp);
            }
            return(linksXmls);
        }