شركة التطبيقات المتكاملة لتصميم النظم البرمجية الخاصة ش.ش.و.

Integrated Applications Programming Company

Skip Navigation LinksHome » Code Library » Access

Public general use code classes and xml files that we've compiled and used over the years:

Access support class for Next Generation Network (NGN) ui model.

   1:  using System;
   2:  using System.Data;
   3:  using System.IO;
   4:  using System.Linq;
   5:  using System.Text;
   6:  using System.Text.RegularExpressions;
   7:   
   8:  namespace Ia.Ngn.Cl.Model.Ui.Provision
   9:  {
  10:      ////////////////////////////////////////////////////////////////////////////
  11:   
  12:      /// <summary publish="true">
  13:      /// Access support class for Next Generation Network (NGN) ui model.
  14:      /// </summary>
  15:      /// 
  16:      /// <remarks> 
  17:      /// Copyright © 2006-2019 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
  18:      ///
  19:      /// This library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
  20:      /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
  21:      ///
  22:      /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
  23:      /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
  24:      /// 
  25:      /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
  26:      /// 
  27:      /// Copyright notice: This notice may not be removed or altered from any source distribution.
  28:      /// </remarks> 
  29:      public partial class Access
  30:      {
  31:          /// <summary/>
  32:          public Access() { }
  33:   
  34:          /////////////////////////////////////////////////////////////////////////////////
  35:   
  36:          /// <summary>
  37:          ///
  38:          /// </summary>
  39:          public static void Manage(Ia.Ngn.Cl.Model.Business.Administration.StaffContact staffContact, string opcode, string operand, out string responseSubject, out string responseContent)
  40:          {
  41:              int i;
  42:              string line, accessNameRow, accessName, odf, kuwaitNgnAreaSymbol, block, street, premisesOld, premisesNew, paci, note;
  43:              string ontEquipmentTypeString, ontSerialNumber, ip;
  44:              StringBuilder stringBuilder;
  45:              DateTime now;
  46:              Ia.Cl.Model.Result documentValidityResult;
  47:              Ia.Ngn.Cl.Model.Business.Nokia.Ont.FamilyType ontFamilyType;
  48:              Ia.Ngn.Cl.Model.Business.Huawei.Ont.EquipmentType emsOntEquipmentType;
  49:              Ia.Ngn.Cl.Model.Access access;
  50:              Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt;
  51:   
  52:              documentValidityResult = new Ia.Cl.Model.Result();
  53:   
  54:              opcode = opcode.ToLower();
  55:   
  56:              now = DateTime.UtcNow.AddHours(3);
  57:   
  58:              // subject can't have \r\n
  59:              responseSubject = "Optical Fiber Network (OFN) Access Manager (" + now.ToString("yyyy-MM-dd HH:mm") + ")";
  60:              responseContent = "Optical Fiber Network (OFN) Access Manager: " + now.ToString("yyyy-MM-dd HH:mm") + "\r\n";
  61:   
  62:              if (opcode.Contains("help"))
  63:              {
  64:                  responseContent += Ia.Ngn.Cl.Model.Data.Help.Text("mail/provision/access");
  65:                  responseContent += "\r\n";
  66:              }
  67:              else
  68:              {
  69:                  if (opcode.StartsWith("mail/provision/access/create"))
  70:                  {
  71:                      if (Ia.Ngn.Cl.Model.Business.Authority.StaffContactCanCreateReadUpdateDeleteAccessList(Ia.Ngn.Cl.Model.Business.Authority.PersistentStorageFunction.Create, staffContact))
  72:                      {
  73:                          responseContent += @"Opcode: """ + opcode + @"""." + "\r\n";
  74:                          //content += @"Operand: """ + operand + @"""." + "\r\n";
  75:                          responseContent += "\r\n";
  76:   
  77:                          stringBuilder = new StringBuilder(10000);
  78:   
  79:                          using (StringReader reader = new StringReader(operand))
  80:                          {
  81:                              if (operand.Length > 0)
  82:                              {
  83:                                  while ((line = reader.ReadLine()) != null)
  84:                                  {
  85:                                      if (!string.IsNullOrEmpty(line)) // skip empty lines
  86:                                      {
  87:                                          if (ParseLine(line, ref stringBuilder, out accessNameRow, out kuwaitNgnAreaSymbol, out block, out street, out premisesOld, out premisesNew, out ontSerialNumber, out ip, out ontEquipmentTypeString, out odf, out paci))
  88:                                          {
  89:                                              if (ontSerialNumber != "0" && !string.IsNullOrEmpty(ontSerialNumber))
  90:                                              {
  91:                                                  if (Ia.Ngn.Cl.Model.Business.Huawei.Ont.IsValidSerialNumber(ontSerialNumber) || Ia.Ngn.Cl.Model.Business.Nokia.Ont.IsValidSerialNumber(ontSerialNumber)) // to check Huawei and Nokia ONTs
  92:                                                  {
  93:                                                      block = Ia.Ngn.Cl.Model.Business.Access.NormalizeBlockEntry(block);
  94:                                                      street = Ia.Ngn.Cl.Model.Business.Access.NormalizeStreetEntry(street);
  95:                                                      premisesOld = Ia.Ngn.Cl.Model.Business.Access.NormalizePremisesEntry(premisesOld);
  96:                                                      premisesNew = Ia.Ngn.Cl.Model.Business.Access.NormalizePremisesEntry(premisesNew);
  97:                                                      paci = Ia.Ngn.Cl.Model.Business.Access.NormalizePaciEntry(paci);
  98:                                                      odf = string.Empty; // odfPort;
  99:   
 100:                                                      // temp: I will exclude SBA for now from PACI requirements
 101:                                                      if (/*kuwaitNgnAreaSymbol == "SBA" ||*/ !string.IsNullOrEmpty(paci) && int.TryParse(paci, out i))
 102:                                                      {
 103:                                                          if (!string.IsNullOrEmpty(block) /*&& int.TryParse(block, out i)*/) // there are blocks with letters like block 7B
 104:                                                          {
 105:                                                              //if (!string.IsNullOrEmpty(street) && int.TryParse(street, out i))
 106:                                                              //{
 107:                                                              if (string.IsNullOrEmpty(premisesOld) || int.TryParse(premisesOld, out i))
 108:                                                              {
 109:                                                                  //if (string.IsNullOrEmpty(premisesNew) || int.TryParse(premisesNew, out i))
 110:                                                                  //{
 111:                                                                  accessName = Ia.Ngn.Cl.Model.Business.Default.ExtractAccessNameWithValidSymbolAndLegalFormatForPonAndOntFromValue(accessNameRow);
 112:   
 113:                                                                  nddOnt = (from o in Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntList where o.Access.Name == accessName select o).SingleOrDefault();
 114:   
 115:                                                                  if (nddOnt != null)
 116:                                                                  {
 117:                                                                      if (nddOnt.Pon.PonGroup.Olt.Odf.Vendor == Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Nokia)
 118:                                                                      {
 119:                                                                          ontFamilyType = Ia.Ngn.Cl.Model.Business.Nokia.Ont.FamilyTypeFromString(ontEquipmentTypeString);
 120:   
 121:                                                                          if (ontFamilyType != Ia.Ngn.Cl.Model.Business.Nokia.Ont.FamilyType.Undefined)
 122:                                                                          {
 123:                                                                              if (string.IsNullOrEmpty(ip) || ip == nddOnt.Ip)
 124:                                                                              {
 125:                                                                                  note = ontEquipmentTypeString + ": " + Ia.Ngn.Cl.Model.Business.Access.NormalizeOntSerialNumberEntry(ontSerialNumber);
 126:   
 127:                                                                                  access = Ia.Ngn.Cl.Model.Business.Access.Create(accessName, kuwaitNgnAreaSymbol, block, street, premisesOld, premisesNew, odf, paci, note, staffContact.UserId, out documentValidityResult);
 128:   
 129:                                                                                  Ia.Ngn.Cl.Model.Data.Msmq.AccessNameQueue.ProvisionAccessQueue.Enqueue(accessName);
 130:   
 131:                                                                                  stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 132:                                                                                  stringBuilder.AppendLine(documentValidityResult.Message);
 133:                                                                                  stringBuilder.AppendLine(" ");
 134:                                                                              }
 135:                                                                              else
 136:                                                                              {
 137:                                                                                  stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 138:                                                                                  stringBuilder.AppendLine(@"Error: Submitted IP: " + ip + " does not match the Network Design Document (NDD) IP: " + nddOnt.Ip + ". ");
 139:                                                                                  stringBuilder.AppendLine(" ");
 140:                                                                              }
 141:                                                                          }
 142:                                                                          else
 143:                                                                          {
 144:                                                                              stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 145:                                                                              stringBuilder.AppendLine(@"Error: ONT family type is undefined. ");
 146:                                                                              stringBuilder.AppendLine(" ");
 147:                                                                          }
 148:                                                                      }
 149:                                                                      else if (nddOnt.Pon.PonGroup.Olt.Odf.Vendor == Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Huawei)
 150:                                                                      {
 151:                                                                          /// This is used to verify the ONT type in the contactors access submittal files 
 152:                                                                          emsOntEquipmentType = (from e in Ia.Ngn.Cl.Model.Business.Huawei.Ont.EquipmentTypeList where e.Name == ontEquipmentTypeString select e).SingleOrDefault();
 153:   
 154:                                                                          if (emsOntEquipmentType != null) //  Ia.Ngn.Cl.Model.Business.Huawei.Ont.EquipmentType.Undefined)
 155:                                                                          {
 156:                                                                              note = ontEquipmentTypeString + ": " + Ia.Ngn.Cl.Model.Business.Access.NormalizeOntSerialNumberEntry(ontSerialNumber);
 157:   
 158:                                                                              access = Ia.Ngn.Cl.Model.Business.Access.Create(accessName, kuwaitNgnAreaSymbol, block, street, premisesOld, premisesNew, odf, paci, note, staffContact.UserId, out documentValidityResult);
 159:   
 160:                                                                              Ia.Ngn.Cl.Model.Data.Msmq.AccessNameQueue.ProvisionAccessQueue.Enqueue(accessName);
 161:   
 162:                                                                              stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 163:                                                                              stringBuilder.AppendLine(documentValidityResult.Message);
 164:                                                                              stringBuilder.AppendLine(" ");
 165:                                                                          }
 166:                                                                          else
 167:                                                                          {
 168:                                                                              stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 169:                                                                              stringBuilder.AppendLine(@"Error: ONT family type is undefined. ");
 170:                                                                              stringBuilder.AppendLine(" ");
 171:                                                                          }
 172:                                                                      }
 173:                                                                      else
 174:                                                                      {
 175:                                                                          stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 176:                                                                          stringBuilder.AppendLine(@"Error: Access vendor is undefined. ");
 177:                                                                          stringBuilder.AppendLine(" ");
 178:                                                                      }
 179:                                                                  }
 180:                                                                  else
 181:                                                                  {
 182:                                                                      stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 183:                                                                      stringBuilder.AppendLine(@"Error: Network design document does not recognize the access name " + accessNameRow + ". Access vendor is undefined. ");
 184:                                                                      stringBuilder.AppendLine(" ");
 185:                                                                  }
 186:                                                              }
 187:                                                              //else
 188:                                                              //{
 189:                                                              //    stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 190:                                                              //    stringBuilder.AppendLine(@"Error: PremisesNew number is undefined or invalid. ");
 191:                                                              //    stringBuilder.AppendLine(" ");
 192:                                                              //}
 193:                                                              //}
 194:                                                              else
 195:                                                              {
 196:                                                                  stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 197:                                                                  stringBuilder.AppendLine(@"Error: PremisesOld (Parcel) number is undefined or invalid. ");
 198:                                                                  stringBuilder.AppendLine(" ");
 199:                                                              }
 200:                                                              //}
 201:                                                              //else
 202:                                                              //{
 203:                                                              //    stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 204:                                                              //    stringBuilder.AppendLine(@"Error: Street number is undefined or invalid. ");
 205:                                                              //    stringBuilder.AppendLine(" ");
 206:                                                              //}
 207:                                                          }
 208:                                                          else
 209:                                                          {
 210:                                                              stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 211:                                                              stringBuilder.AppendLine(@"Error: Block number is undefined or invalid. ");
 212:                                                              stringBuilder.AppendLine(" ");
 213:                                                          }
 214:                                                      }
 215:                                                      else
 216:                                                      {
 217:                                                          stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 218:                                                          stringBuilder.AppendLine(@"Error: PACI is undefined or invalid. ");
 219:                                                          stringBuilder.AppendLine(" ");
 220:                                                      }
 221:                                                  }
 222:                                                  else
 223:                                                  {
 224:                                                      stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 225:                                                      stringBuilder.AppendLine(@"Error: ONT serial """ + ontSerialNumber + @""" is not valid. ");
 226:                                                      stringBuilder.AppendLine(" ");
 227:                                                  }
 228:                                              }
 229:                                              else
 230:                                              {
 231:                                                  stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 232:                                                  stringBuilder.AppendLine(@"Error: ONT serial is null or zero. ");
 233:                                                  stringBuilder.AppendLine(" ");
 234:                                              }
 235:                                          }
 236:                                          else
 237:                                          {
 238:                                              // ref stringBuilder has a response
 239:                                              //stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 240:                                              //stringBuilder.AppendLine(@"Error: Line format was incorrect and was not matched. ");
 241:                                              //stringBuilder.AppendLine(" ");
 242:                                          }
 243:                                      }
 244:                                  }
 245:                              }
 246:                              else
 247:                              {
 248:                                  stringBuilder.AppendLine("Error: Operand is empty. ");
 249:                                  stringBuilder.AppendLine(" ");
 250:                              }
 251:                          }
 252:   
 253:                          responseContent += stringBuilder.ToString();
 254:                          responseContent += "\r\n";
 255:                          //content += "\r\nResult: " + result.Message;
 256:   
 257:                          responseContent += "\r\n";
 258:                          responseContent += "\r\n";
 259:                          responseContent += @"Help? Send email with subject ""mail/provision/access/help"". ";
 260:                          responseContent += "\r\n";
 261:                          responseContent += "\r\n";
 262:                      }
 263:                      else
 264:                      {
 265:                          responseContent += "\r\n";
 266:                          responseContent += "You are not authorized to modify this value. ";
 267:                          responseContent += "\r\n";
 268:                      }
 269:                  }
 270:                  else if (opcode.StartsWith("mail/provision/access/read"))
 271:                  {
 272:                      responseContent += "\r\n";
 273:                      responseContent += "This opcode is not defined yet. ";
 274:                      responseContent += "\r\n";
 275:                  }
 276:                  else if (opcode.StartsWith("mail/provision/access/delete"))
 277:                  {
 278:                      if (Ia.Ngn.Cl.Model.Business.Authority.StaffContactCanCreateReadUpdateDeleteAccessList(Ia.Ngn.Cl.Model.Business.Authority.PersistentStorageFunction.Create, staffContact))
 279:                      {
 280:                          responseContent += @"Opcode: """ + opcode + @"""." + "\r\n";
 281:                          //content += @"Operand: """ + operand + @"""." + "\r\n";
 282:                          responseContent += "\r\n";
 283:   
 284:                          stringBuilder = new StringBuilder(10000);
 285:   
 286:                          using (StringReader reader = new StringReader(operand))
 287:                          {
 288:                              if (operand.Length > 0)
 289:                              {
 290:                                  while ((line = reader.ReadLine()) != null)
 291:                                  {
 292:                                      if (!string.IsNullOrEmpty(line)) // skip empty lines
 293:                                      {
 294:                                          accessName = Ia.Ngn.Cl.Model.Business.Default.ExtractAccessNameWithValidSymbolAndLegalFormatForPonAndOntFromValue(line);
 295:   
 296:                                          nddOnt = (from o in Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntList where o.Access.Name == accessName select o).SingleOrDefault();
 297:   
 298:                                          if (nddOnt != null)
 299:                                          {
 300:                                              Ia.Ngn.Cl.Model.Business.Access.Delete(nddOnt.Access.Name, staffContact.UserId, out documentValidityResult);
 301:   
 302:                                              Ia.Ngn.Cl.Model.Data.Msmq.AccessNameQueue.ProvisionAccessQueue.Enqueue(accessName);
 303:   
 304:                                              stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 305:                                              stringBuilder.AppendLine(documentValidityResult.Message);
 306:                                              stringBuilder.AppendLine(" ");
 307:                                          }
 308:                                          else
 309:                                          {
 310:                                              stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 311:                                              stringBuilder.AppendLine(@"Error: Network design document does not recognize the access name " + line + ". Access vendor is undefined. ");
 312:                                              stringBuilder.AppendLine(" ");
 313:                                          }
 314:                                      }
 315:                                  }
 316:                              }
 317:                              else
 318:                              {
 319:                                  stringBuilder.AppendLine("Error: Operand is empty. ");
 320:                                  stringBuilder.AppendLine(" ");
 321:                              }
 322:                          }
 323:   
 324:                          responseContent += stringBuilder.ToString();
 325:                          responseContent += "\r\n";
 326:                          //content += "\r\nResult: " + result.Message;
 327:   
 328:                          responseContent += "\r\n";
 329:                          responseContent += "\r\n";
 330:                          responseContent += @"Help? Send email with subject ""mail/provision/access/help"". ";
 331:                          responseContent += "\r\n";
 332:                          responseContent += "\r\n";
 333:                      }
 334:                      else
 335:                      {
 336:                          responseContent += "\r\n";
 337:                          responseContent += "You are not authorized to delete this value. ";
 338:                          responseContent += "\r\n";
 339:                      }
 340:                  }
 341:                  else
 342:                  {
 343:                      responseContent += "\r\n";
 344:                      responseContent += "This opcode is not known. ";
 345:                      responseContent += "\r\n";
 346:                  }
 347:              }
 348:          }
 349:   
 350:          /////////////////////////////////////////////////////////////////////////////////
 351:   
 352:          /// <summary>
 353:          ///
 354:          /// </summary>
 355:          private static bool ParseLine(string line, ref StringBuilder stringBuilder, out string accessName, out string kuwaitNgnAreaSymbol, out string block, out string street, out string premisesOld, out string premisesNew, out string ontSerialNumber, out string ip, out string ontEquipmentTypeString, out string odf, out string paci)
 356:          {
 357:              bool matchSuccess;
 358:              int slNo, pon, pon2, pon3;
 359:              string accessName2, areaSymbol;
 360:              Match match;
 361:   
 362:              accessName = kuwaitNgnAreaSymbol = block = street = premisesOld = premisesNew = ontSerialNumber = ip = ontEquipmentTypeString = odf = paci = string.Empty;
 363:   
 364:              // parse Huawei submittal line
 365:              match = Regex.Match(line, @"(\d+?)\t(\d+?)\t(\w\w\w)\.(\d+?)\.(\d+?)\t(\w\w\w)\.(\d+?)\.(\d+?)\t(.*?)\t(\w\w\w)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)$");
 366:              // [5  1126  SMC.1126.002      SMC.1126.002      SHX011      SMC   1     NA    5      PUBLICSERVICCO    18032043    4857544390755A78  10.150.131.34     NA    66081089      MA5616-96]
 367:              if (match.Success)
 368:              {
 369:                  slNo = int.Parse(match.Groups[1].Value);
 370:                  pon = int.Parse(match.Groups[2].Value);
 371:                  pon2 = int.Parse(match.Groups[4].Value);
 372:                  pon3 = int.Parse(match.Groups[7].Value);
 373:   
 374:                  if (pon == pon2 && pon == pon3 && pon2 == pon3)
 375:                  {
 376:                      accessName = match.Groups[3].Value + "." + match.Groups[4].Value + "." + match.Groups[5].Value;
 377:                      accessName2 = match.Groups[6].Value + "." + match.Groups[7].Value + "." + match.Groups[8].Value;
 378:   
 379:                      kuwaitNgnAreaSymbol = match.Groups[10].Value;
 380:   
 381:                      if (accessName == accessName2 && accessName.StartsWith(kuwaitNgnAreaSymbol))
 382:                      {
 383:                          //mhNo = match.Groups[9].Value;
 384:                          block = match.Groups[11].Value;
 385:                          premisesNew = match.Groups[12].Value;
 386:                          street = match.Groups[13].Value;
 387:                          premisesOld = match.Groups[14].Value;
 388:                          paci = match.Groups[15].Value;
 389:                          ontSerialNumber = match.Groups[16].Value;
 390:                          ip = match.Groups[17].Value;
 391:                          ontEquipmentTypeString = match.Groups[20].Value;
 392:                          //odfPort = match.Groups[19].Value;
 393:                          //oltPort = match.Groups[20].Value;
 394:   
 395:                          matchSuccess = true;
 396:                      }
 397:                      else
 398:                      {
 399:                          stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 400:                          stringBuilder.AppendLine(@"Error: TB.ID, ONT ID, and/or area symbol values don't match in line. ");
 401:                          stringBuilder.AppendLine(" ");
 402:   
 403:                          matchSuccess = false;
 404:                      }
 405:                  }
 406:                  else
 407:                  {
 408:                      stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 409:                      stringBuilder.AppendLine(@"Error: Inconsistent PON, TB.ID and ONT ID values in line. ");
 410:                      stringBuilder.AppendLine(" ");
 411:   
 412:                      matchSuccess = false;
 413:                  }
 414:              }
 415:              else
 416:              {
 417:                  // parse Nokia submittal line
 418:                  match = Regex.Match(line, @"([a-zA-Z]{3})\.(\d{1,4})\.(\d{1,3})\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.+?)$");
 419:   
 420:                  if (match.Success)
 421:                  {
 422:                      areaSymbol = match.Groups[1].Value;
 423:                      kuwaitNgnAreaSymbol = areaSymbol;
 424:   
 425:                      accessName = areaSymbol + "." + match.Groups[2].Value + "." + match.Groups[3].Value;
 426:   
 427:                      premisesOld = match.Groups[6].Value;
 428:                      premisesNew = match.Groups[7].Value;
 429:                      street = match.Groups[5].Value;
 430:                      block = match.Groups[4].Value;
 431:                      paci = match.Groups[8].Value;
 432:   
 433:                      ontSerialNumber = match.Groups[9].Value;
 434:                      ip = string.Empty;
 435:                      ontEquipmentTypeString = match.Groups[10].Value;
 436:   
 437:                      matchSuccess = true;
 438:                  }
 439:                  else
 440:                  {
 441:                      stringBuilder.AppendLine(@"> [" + line.Trim() + @"]");
 442:                      stringBuilder.AppendLine(@"Error: Line format was incorrect and was not matched. ");
 443:                      stringBuilder.AppendLine(" ");
 444:   
 445:                      matchSuccess = false;
 446:                  }
 447:              }
 448:   
 449:              return matchSuccess;
 450:          }
 451:   
 452:          ////////////////////////////////////////////////////////////////////////////
 453:          ////////////////////////////////////////////////////////////////////////////
 454:      }
 455:  }