/// <summary> /// Register a new oid /// </summary> public void Register(OidData oidData) { using (DataContext dataContext = this.m_configuration.Provider.GetWriteConnection()) { try { dataContext.Open(); using (var tx = dataContext.BeginTransaction()) { try { // First attempt to find the oid var dba = new DbAssigningAuthority() { Description = oidData.Description, Name = oidData.Name, Oid = oidData.Oid, Url = oidData.Ref.ToString(), DomainName = oidData.Mnemonic }; // Add attributes var regex = oidData.Attributes.FirstOrDefault(o => o.Key == "ValidationRegex"); var asgnDev = oidData.Attributes.FirstOrDefault(o => o.Key == "AssigningDevice"); dba.ValidationRegex = regex.Value; if (!String.IsNullOrEmpty(asgnDev.Value)) { var device = ApplicationContext.Current.GetService <ISecurityRepositoryService>().FindDevices(o => o.Name == asgnDev.Value).FirstOrDefault(); dba.AssigningDeviceKey = device?.Key; } dataContext.Insert(dba); tx.Commit(); } catch { tx.Rollback(); throw; } } } catch (Exception e) { this.m_tracer.TraceEvent(TraceEventType.Error, e.HResult, "Error inserting OID {0} : {1}", oidData, e); throw; } } }
/// <summary> /// Parse oid data /// </summary> private OidData ParseOidData(DbAssigningAuthority oid) { var retVal = new OidData() { Description = oid.Description, Mnemonic = oid.DomainName, Name = oid.Name, Oid = oid.Oid, Ref = !String.IsNullOrEmpty(oid.Url) ? new Uri(oid.Url) : null }; if (!String.IsNullOrEmpty(oid.ValidationRegex)) { retVal.Attributes.Add(new KeyValuePair <string, string>("ValidationRegex", oid.ValidationRegex)); } return(retVal); }