/// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.EmailAddress"/>.
        /// </returns>
        public virtual CDP4Common.DTO.EmailAddress MapToDto(NpgsqlDataReader reader)
        {
            string tempModifiedOn;
            string tempVcardType;
            string tempValue;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.EmailAddress(iid, revisionNumber);

            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));
            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("VcardType", out tempVcardType))
            {
                dto.VcardType = Utils.ParseEnum <CDP4Common.SiteDirectoryData.VcardEmailAddressKind>(tempVcardType);
            }

            if (valueDict.TryGetValue("Value", out tempValue))
            {
                dto.Value = tempValue.UnEscape();
            }

            return(dto);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.ActualFiniteState"/>.
        /// </returns>
        public virtual CDP4Common.DTO.ActualFiniteState MapToDto(NpgsqlDataReader reader)
        {
            string tempKind;
            string tempModifiedOn;
            string tempThingPreference;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.ActualFiniteState(iid, revisionNumber);

            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));
            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));
            dto.PossibleState.AddRange(Array.ConvertAll((string[])reader["PossibleState"], Guid.Parse));

            if (valueDict.TryGetValue("Kind", out tempKind))
            {
                dto.Kind = Utils.ParseEnum <CDP4Common.EngineeringModelData.ActualFiniteStateKind>(tempKind);
            }

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("ThingPreference", out tempThingPreference) && tempThingPreference != null)
            {
                dto.ThingPreference = tempThingPreference.UnEscape();
            }

            return(dto);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.ParameterSubscriptionValueSet"/>.
        /// </returns>
        public virtual CDP4Common.DTO.ParameterSubscriptionValueSet MapToDto(NpgsqlDataReader reader)
        {
            string tempModifiedOn;
            string tempManual;
            string tempValueSwitch;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.ParameterSubscriptionValueSet(iid, revisionNumber);

            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));
            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));
            dto.SubscribedValueSet = Guid.Parse(reader["SubscribedValueSet"].ToString());

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("Manual", out tempManual))
            {
                dto.Manual = tempManual.FromHstoreToValueArray <string>();
            }

            if (valueDict.TryGetValue("ValueSwitch", out tempValueSwitch))
            {
                dto.ValueSwitch = Utils.ParseEnum <CDP4Common.EngineeringModelData.ParameterSwitchKind>(tempValueSwitch);
            }

            return(dto);
        }
        /// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.RelationalExpression"/>.
        /// </returns>
        public virtual CDP4Common.DTO.RelationalExpression MapToDto(NpgsqlDataReader reader)
        {
            string tempModifiedOn;
            string tempValue;
            string tempRelationalOperator;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.RelationalExpression(iid, revisionNumber);

            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));
            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));
            dto.ParameterType = Guid.Parse(reader["ParameterType"].ToString());
            dto.Scale         = reader["Scale"] is DBNull ? (Guid?)null : Guid.Parse(reader["Scale"].ToString());

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("Value", out tempValue))
            {
                dto.Value = tempValue.FromHstoreToValueArray <string>();
            }

            if (valueDict.TryGetValue("RelationalOperator", out tempRelationalOperator))
            {
                dto.RelationalOperator = Utils.ParseEnum <CDP4Common.EngineeringModelData.RelationalOperatorKind>(tempRelationalOperator);
            }

            return(dto);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.ParameterValueSet"/>.
        /// </returns>
        public virtual CDP4Common.DTO.ParameterValueSet MapToDto(NpgsqlDataReader reader)
        {
            string tempModifiedOn;
            string tempPublished;
            string tempFormula;
            string tempComputed;
            string tempManual;
            string tempReference;
            string tempValueSwitch;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.ParameterValueSet(iid, revisionNumber);

            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));
            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));
            dto.ActualState  = reader["ActualState"] is DBNull ? (Guid?)null : Guid.Parse(reader["ActualState"].ToString());
            dto.ActualOption = reader["ActualOption"] is DBNull ? (Guid?)null : Guid.Parse(reader["ActualOption"].ToString());

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("Published", out tempPublished))
            {
                dto.Published = tempPublished.FromHstoreToValueArray <string>();
            }

            if (valueDict.TryGetValue("Formula", out tempFormula))
            {
                dto.Formula = tempFormula.FromHstoreToValueArray <string>();
            }

            if (valueDict.TryGetValue("Computed", out tempComputed))
            {
                dto.Computed = tempComputed.FromHstoreToValueArray <string>();
            }

            if (valueDict.TryGetValue("Manual", out tempManual))
            {
                dto.Manual = tempManual.FromHstoreToValueArray <string>();
            }

            if (valueDict.TryGetValue("Reference", out tempReference))
            {
                dto.Reference = tempReference.FromHstoreToValueArray <string>();
            }

            if (valueDict.TryGetValue("ValueSwitch", out tempValueSwitch))
            {
                dto.ValueSwitch = Utils.ParseEnum <CDP4Common.EngineeringModelData.ParameterSwitchKind>(tempValueSwitch);
            }

            return(dto);
        }
        /// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.ModelLogEntry"/>.
        /// </returns>
        public virtual CDP4Common.DTO.ModelLogEntry MapToDto(NpgsqlDataReader reader)
        {
            string tempContent;
            string tempCreatedOn;
            string tempLanguageCode;
            string tempLevel;
            string tempModifiedOn;
            string tempThingPreference;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.ModelLogEntry(iid, revisionNumber);

            dto.AffectedDomainIid.AddRange(Array.ConvertAll((string[])reader["AffectedDomainIid"], Guid.Parse));

            dto.AffectedItemIid.AddRange(Array.ConvertAll((string[])reader["AffectedItemIid"], Guid.Parse));

            dto.Author = reader["Author"] is DBNull ? (Guid?)null : Guid.Parse(reader["Author"].ToString());
            dto.Category.AddRange(Array.ConvertAll((string[])reader["Category"], Guid.Parse));
            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));
            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));
            dto.LogEntryChangelogItem.AddRange(Array.ConvertAll((string[])reader["LogEntryChangelogItem"], Guid.Parse));

            if (valueDict.TryGetValue("Content", out tempContent))
            {
                dto.Content = tempContent.UnEscape();
            }

            if (valueDict.TryGetValue("CreatedOn", out tempCreatedOn))
            {
                dto.CreatedOn = Utils.ParseUtcDate(tempCreatedOn);
            }

            if (valueDict.TryGetValue("LanguageCode", out tempLanguageCode))
            {
                dto.LanguageCode = tempLanguageCode.UnEscape();
            }

            if (valueDict.TryGetValue("Level", out tempLevel))
            {
                dto.Level = Utils.ParseEnum <CDP4Common.CommonData.LogLevelKind>(tempLevel);
            }

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("ThingPreference", out tempThingPreference) && tempThingPreference != null)
            {
                dto.ThingPreference = tempThingPreference.UnEscape();
            }

            return(dto);
        }
        /// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.ElementUsage"/>.
        /// </returns>
        public virtual CDP4Common.DTO.ElementUsage MapToDto(NpgsqlDataReader reader)
        {
            string tempInterfaceEnd;
            string tempModifiedOn;
            string tempName;
            string tempShortName;
            string tempThingPreference;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.ElementUsage(iid, revisionNumber);

            dto.Alias.AddRange(Array.ConvertAll((string[])reader["Alias"], Guid.Parse));
            dto.Category.AddRange(Array.ConvertAll((string[])reader["Category"], Guid.Parse));
            dto.Definition.AddRange(Array.ConvertAll((string[])reader["Definition"], Guid.Parse));
            dto.ElementDefinition = Guid.Parse(reader["ElementDefinition"].ToString());
            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));
            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));
            dto.ExcludeOption.AddRange(Array.ConvertAll((string[])reader["ExcludeOption"], Guid.Parse));
            dto.HyperLink.AddRange(Array.ConvertAll((string[])reader["HyperLink"], Guid.Parse));
            dto.Owner = Guid.Parse(reader["Owner"].ToString());
            dto.ParameterOverride.AddRange(Array.ConvertAll((string[])reader["ParameterOverride"], Guid.Parse));

            if (valueDict.TryGetValue("InterfaceEnd", out tempInterfaceEnd))
            {
                dto.InterfaceEnd = Utils.ParseEnum <CDP4Common.EngineeringModelData.InterfaceEndKind>(tempInterfaceEnd);
            }

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("Name", out tempName))
            {
                dto.Name = tempName.UnEscape();
            }

            if (valueDict.TryGetValue("ShortName", out tempShortName))
            {
                dto.ShortName = tempShortName.UnEscape();
            }

            if (valueDict.TryGetValue("ThingPreference", out tempThingPreference) && tempThingPreference != null)
            {
                dto.ThingPreference = tempThingPreference.UnEscape();
            }

            return(dto);
        }
        /// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.Approval"/>.
        /// </returns>
        public virtual CDP4Common.DTO.Approval MapToDto(NpgsqlDataReader reader)
        {
            string tempClassification;
            string tempContent;
            string tempCreatedOn;
            string tempLanguageCode;
            string tempModifiedOn;
            string tempThingPreference;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.Approval(iid, revisionNumber);

            dto.Author = Guid.Parse(reader["Author"].ToString());
            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));
            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));
            dto.Owner = Guid.Parse(reader["Owner"].ToString());

            if (valueDict.TryGetValue("Classification", out tempClassification))
            {
                dto.Classification = Utils.ParseEnum <CDP4Common.ReportingData.AnnotationApprovalKind>(tempClassification);
            }

            if (valueDict.TryGetValue("Content", out tempContent))
            {
                dto.Content = tempContent.UnEscape();
            }

            if (valueDict.TryGetValue("CreatedOn", out tempCreatedOn))
            {
                dto.CreatedOn = Utils.ParseUtcDate(tempCreatedOn);
            }

            if (valueDict.TryGetValue("LanguageCode", out tempLanguageCode))
            {
                dto.LanguageCode = tempLanguageCode.UnEscape();
            }

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("ThingPreference", out tempThingPreference) && tempThingPreference != null)
            {
                dto.ThingPreference = tempThingPreference.UnEscape();
            }

            return(dto);
        }
        /// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.BuiltInRuleVerification"/>.
        /// </returns>
        public virtual CDP4Common.DTO.BuiltInRuleVerification MapToDto(NpgsqlDataReader reader)
        {
            string tempExecutedOn;
            string tempIsActive;
            string tempModifiedOn;
            string tempName;
            string tempStatus;
            string tempThingPreference;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.BuiltInRuleVerification(iid, revisionNumber);

            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));
            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));
            dto.Violation.AddRange(Array.ConvertAll((string[])reader["Violation"], Guid.Parse));

            if (valueDict.TryGetValue("ExecutedOn", out tempExecutedOn) && tempExecutedOn != null)
            {
                dto.ExecutedOn = Utils.ParseUtcDate(tempExecutedOn);
            }

            if (valueDict.TryGetValue("IsActive", out tempIsActive))
            {
                dto.IsActive = bool.Parse(tempIsActive);
            }

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("Name", out tempName))
            {
                dto.Name = tempName.UnEscape();
            }

            if (valueDict.TryGetValue("Status", out tempStatus))
            {
                dto.Status = Utils.ParseEnum <CDP4Common.EngineeringModelData.RuleVerificationStatusKind>(tempStatus);
            }

            if (valueDict.TryGetValue("ThingPreference", out tempThingPreference) && tempThingPreference != null)
            {
                dto.ThingPreference = tempThingPreference.UnEscape();
            }

            return(dto);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.LogEntryChangelogItem"/>.
        /// </returns>
        public virtual CDP4Common.DTO.LogEntryChangelogItem MapToDto(NpgsqlDataReader reader)
        {
            string tempAffectedItemIid;
            string tempChangeDescription;
            string tempChangelogKind;
            string tempModifiedOn;
            string tempThingPreference;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.LogEntryChangelogItem(iid, revisionNumber);

            dto.AffectedReferenceIid.AddRange(Array.ConvertAll((string[])reader["AffectedReferenceIid"], Guid.Parse));

            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));
            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));

            if (valueDict.TryGetValue("AffectedItemIid", out tempAffectedItemIid))
            {
                dto.AffectedItemIid = Guid.Parse(tempAffectedItemIid);
            }

            if (valueDict.TryGetValue("ChangeDescription", out tempChangeDescription) && tempChangeDescription != null)
            {
                dto.ChangeDescription = tempChangeDescription.UnEscape();
            }

            if (valueDict.TryGetValue("ChangelogKind", out tempChangelogKind))
            {
                dto.ChangelogKind = Utils.ParseEnum <CDP4Common.CommonData.LogEntryChangelogItemKind>(tempChangelogKind);
            }

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("ThingPreference", out tempThingPreference) && tempThingPreference != null)
            {
                dto.ThingPreference = tempThingPreference.UnEscape();
            }

            return(dto);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.ParticipantPermission"/>.
        /// </returns>
        public virtual CDP4Common.DTO.ParticipantPermission MapToDto(NpgsqlDataReader reader)
        {
            string tempAccessRight;
            string tempIsDeprecated;
            string tempModifiedOn;
            string tempObjectClass;
            string tempThingPreference;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.ParticipantPermission(iid, revisionNumber);

            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));
            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));

            if (valueDict.TryGetValue("AccessRight", out tempAccessRight))
            {
                dto.AccessRight = Utils.ParseEnum <CDP4Common.CommonData.ParticipantAccessRightKind>(tempAccessRight);
            }

            if (valueDict.TryGetValue("IsDeprecated", out tempIsDeprecated))
            {
                dto.IsDeprecated = bool.Parse(tempIsDeprecated);
            }

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("ObjectClass", out tempObjectClass))
            {
                dto.ObjectClass = Utils.ParseEnum <CDP4Common.CommonData.ClassKind>(tempObjectClass);
            }

            if (valueDict.TryGetValue("ThingPreference", out tempThingPreference) && tempThingPreference != null)
            {
                dto.ThingPreference = tempThingPreference.UnEscape();
            }

            return(dto);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.RequestForWaiver"/>.
        /// </returns>
        public virtual CDP4Common.DTO.RequestForWaiver MapToDto(NpgsqlDataReader reader)
        {
            string tempModifiedOn;
            string tempLanguageCode;
            string tempContent;
            string tempCreatedOn;
            string tempStatus;
            string tempTitle;
            string tempClassification;
            string tempShortName;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.RequestForWaiver(iid, revisionNumber);

            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));
            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));
            dto.RelatedThing.AddRange(Array.ConvertAll((string[])reader["RelatedThing"], Guid.Parse));
            dto.Author = Guid.Parse(reader["Author"].ToString());
            dto.PrimaryAnnotatedThing = reader["PrimaryAnnotatedThing"] is DBNull ? (Guid?)null : Guid.Parse(reader["PrimaryAnnotatedThing"].ToString());
            dto.Discussion.AddRange(Array.ConvertAll((string[])reader["Discussion"], Guid.Parse));
            dto.ApprovedBy.AddRange(Array.ConvertAll((string[])reader["ApprovedBy"], Guid.Parse));
            dto.SourceAnnotation.AddRange(Array.ConvertAll((string[])reader["SourceAnnotation"], Guid.Parse));
            dto.Owner = Guid.Parse(reader["Owner"].ToString());
            dto.Category.AddRange(Array.ConvertAll((string[])reader["Category"], Guid.Parse));

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("LanguageCode", out tempLanguageCode))
            {
                dto.LanguageCode = tempLanguageCode.UnEscape();
            }

            if (valueDict.TryGetValue("Content", out tempContent))
            {
                dto.Content = tempContent.UnEscape();
            }

            if (valueDict.TryGetValue("CreatedOn", out tempCreatedOn))
            {
                dto.CreatedOn = Utils.ParseUtcDate(tempCreatedOn);
            }

            if (valueDict.TryGetValue("Status", out tempStatus))
            {
                dto.Status = Utils.ParseEnum <CDP4Common.ReportingData.AnnotationStatusKind>(tempStatus);
            }

            if (valueDict.TryGetValue("Title", out tempTitle))
            {
                dto.Title = tempTitle.UnEscape();
            }

            if (valueDict.TryGetValue("Classification", out tempClassification))
            {
                dto.Classification = Utils.ParseEnum <CDP4Common.ReportingData.AnnotationClassificationKind>(tempClassification);
            }

            if (valueDict.TryGetValue("ShortName", out tempShortName))
            {
                dto.ShortName = tempShortName.UnEscape();
            }

            return(dto);
        }
        /// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.RatioScale"/>.
        /// </returns>
        public virtual CDP4Common.DTO.RatioScale MapToDto(NpgsqlDataReader reader)
        {
            string tempModifiedOn;
            string tempName;
            string tempShortName;
            string tempNumberSet;
            string tempMinimumPermissibleValue;
            string tempIsMinimumInclusive;
            string tempMaximumPermissibleValue;
            string tempIsMaximumInclusive;
            string tempPositiveValueConnotation;
            string tempNegativeValueConnotation;
            string tempIsDeprecated;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.RatioScale(iid, revisionNumber);

            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));
            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));
            dto.Alias.AddRange(Array.ConvertAll((string[])reader["Alias"], Guid.Parse));
            dto.Definition.AddRange(Array.ConvertAll((string[])reader["Definition"], Guid.Parse));
            dto.HyperLink.AddRange(Array.ConvertAll((string[])reader["HyperLink"], Guid.Parse));
            dto.Unit = Guid.Parse(reader["Unit"].ToString());
            dto.ValueDefinition.AddRange(Array.ConvertAll((string[])reader["ValueDefinition"], Guid.Parse));
            dto.MappingToReferenceScale.AddRange(Array.ConvertAll((string[])reader["MappingToReferenceScale"], Guid.Parse));

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("Name", out tempName))
            {
                dto.Name = tempName.UnEscape();
            }

            if (valueDict.TryGetValue("ShortName", out tempShortName))
            {
                dto.ShortName = tempShortName.UnEscape();
            }

            if (valueDict.TryGetValue("NumberSet", out tempNumberSet))
            {
                dto.NumberSet = Utils.ParseEnum <CDP4Common.SiteDirectoryData.NumberSetKind>(tempNumberSet);
            }

            if (valueDict.TryGetValue("MinimumPermissibleValue", out tempMinimumPermissibleValue) && tempMinimumPermissibleValue != null)
            {
                dto.MinimumPermissibleValue = tempMinimumPermissibleValue.UnEscape();
            }

            if (valueDict.TryGetValue("IsMinimumInclusive", out tempIsMinimumInclusive))
            {
                dto.IsMinimumInclusive = bool.Parse(tempIsMinimumInclusive);
            }

            if (valueDict.TryGetValue("MaximumPermissibleValue", out tempMaximumPermissibleValue) && tempMaximumPermissibleValue != null)
            {
                dto.MaximumPermissibleValue = tempMaximumPermissibleValue.UnEscape();
            }

            if (valueDict.TryGetValue("IsMaximumInclusive", out tempIsMaximumInclusive))
            {
                dto.IsMaximumInclusive = bool.Parse(tempIsMaximumInclusive);
            }

            if (valueDict.TryGetValue("PositiveValueConnotation", out tempPositiveValueConnotation) && tempPositiveValueConnotation != null)
            {
                dto.PositiveValueConnotation = tempPositiveValueConnotation.UnEscape();
            }

            if (valueDict.TryGetValue("NegativeValueConnotation", out tempNegativeValueConnotation) && tempNegativeValueConnotation != null)
            {
                dto.NegativeValueConnotation = tempNegativeValueConnotation.UnEscape();
            }

            if (valueDict.TryGetValue("IsDeprecated", out tempIsDeprecated))
            {
                dto.IsDeprecated = bool.Parse(tempIsDeprecated);
            }

            return(dto);
        }
        /// <summary>
        /// Construct and log the SQL command as string
        /// </summary>
        /// <param name="command">
        /// The <see cref="NpgsqlCommand"/> to log from
        /// </param>
        internal void ExtractAndLogSql(NpgsqlCommand command)
        {
            var hasSqlParameters = command.Parameters != null && command.Parameters.Count > 0;

            // log sql before execution
            var sql = command.CommandText;

            if (hasSqlParameters)
            {
                foreach (var param in command.Parameters.ToList())
                {
                    var isArrayType = param.NpgsqlDbType < 0;

                    var dbType = isArrayType
                        ? Utils.ParseEnum <NpgsqlDbType>((param.NpgsqlDbType - NpgsqlDbType.Array).ToString())
                        : param.NpgsqlDbType;

                    string stringValue;
                    switch (dbType)
                    {
                    case NpgsqlDbType.Uuid:
                    {
                        stringValue = isArrayType ? RetrieveValueString <Guid>(dbType, true, param.NpgsqlValue) : RetrieveValueString <string>(dbType, false, param.NpgsqlValue);
                        break;
                    }

                    case NpgsqlDbType.Hstore:
                    {
                        stringValue = RetrieveValueString <string>(dbType, false, this.ReadHstore((Dictionary <string, string>)param.NpgsqlValue));
                        break;
                    }

                    case NpgsqlDbType.Bigint:
                    {
                        stringValue = RetrieveValueString <float>(dbType, isArrayType, param.NpgsqlValue);
                        break;
                    }

                    case NpgsqlDbType.Integer:
                    {
                        stringValue = RetrieveValueString <int>(dbType, isArrayType, param.NpgsqlValue);
                        break;
                    }

                    case NpgsqlDbType.Real:
                    {
                        stringValue = RetrieveValueString <double>(dbType, isArrayType, param.NpgsqlValue);
                        break;
                    }

                    case NpgsqlDbType.Text:
                    {
                        stringValue = RetrieveValueString <string>(dbType, isArrayType, param.NpgsqlValue.ToString().Replace("'", "''"));
                        break;
                    }

                    case NpgsqlDbType.Boolean:
                    {
                        stringValue = RetrieveValueString <bool>(dbType, isArrayType, param.NpgsqlValue);
                        break;
                    }

                    default:
                    {
                        stringValue = RetrieveValueString <string>(
                            NpgsqlDbType.Varchar,
                            isArrayType,
                            param.NpgsqlValue.ToString().Replace("'", "''"));
                        break;
                    }
                    }

                    sql = sql.Replace(string.Format(":{0}", param.ParameterName), stringValue);
                }
            }

            this.storedSqlCommands.Add(sql);
        }
        /// <summary>
        /// The mapping from a database record to data transfer object.
        /// </summary>
        /// <param name="reader">
        /// An instance of the SQL reader.
        /// </param>
        /// <returns>
        /// A deserialized instance of <see cref="CDP4Common.DTO.EngineeringModelSetup"/>.
        /// </returns>
        public virtual CDP4Common.DTO.EngineeringModelSetup MapToDto(NpgsqlDataReader reader)
        {
            string tempModifiedOn;
            string tempName;
            string tempShortName;
            string tempKind;
            string tempStudyPhase;
            string tempEngineeringModelIid;
            string tempSourceEngineeringModelSetupIid;

            var valueDict      = (Dictionary <string, string>)reader["ValueTypeSet"];
            var iid            = Guid.Parse(reader["Iid"].ToString());
            var revisionNumber = int.Parse(valueDict["RevisionNumber"]);

            var dto = new CDP4Common.DTO.EngineeringModelSetup(iid, revisionNumber);

            dto.ExcludedPerson.AddRange(Array.ConvertAll((string[])reader["ExcludedPerson"], Guid.Parse));
            dto.ExcludedDomain.AddRange(Array.ConvertAll((string[])reader["ExcludedDomain"], Guid.Parse));
            dto.Alias.AddRange(Array.ConvertAll((string[])reader["Alias"], Guid.Parse));
            dto.Definition.AddRange(Array.ConvertAll((string[])reader["Definition"], Guid.Parse));
            dto.HyperLink.AddRange(Array.ConvertAll((string[])reader["HyperLink"], Guid.Parse));
            dto.Participant.AddRange(Array.ConvertAll((string[])reader["Participant"], Guid.Parse));
            dto.ActiveDomain.AddRange(Array.ConvertAll((string[])reader["ActiveDomain"], Guid.Parse));
            dto.RequiredRdl.AddRange(Array.ConvertAll((string[])reader["RequiredRdl"], Guid.Parse));
            dto.IterationSetup.AddRange(Array.ConvertAll((string[])reader["IterationSetup"], Guid.Parse));

            if (valueDict.TryGetValue("ModifiedOn", out tempModifiedOn))
            {
                dto.ModifiedOn = Utils.ParseUtcDate(tempModifiedOn);
            }

            if (valueDict.TryGetValue("Name", out tempName))
            {
                dto.Name = tempName.UnEscape();
            }

            if (valueDict.TryGetValue("ShortName", out tempShortName))
            {
                dto.ShortName = tempShortName.UnEscape();
            }

            if (valueDict.TryGetValue("Kind", out tempKind))
            {
                dto.Kind = Utils.ParseEnum <CDP4Common.SiteDirectoryData.EngineeringModelKind>(tempKind);
            }

            if (valueDict.TryGetValue("StudyPhase", out tempStudyPhase))
            {
                dto.StudyPhase = Utils.ParseEnum <CDP4Common.SiteDirectoryData.StudyPhaseKind>(tempStudyPhase);
            }

            if (valueDict.TryGetValue("EngineeringModelIid", out tempEngineeringModelIid))
            {
                dto.EngineeringModelIid = Guid.Parse(tempEngineeringModelIid);
            }

            if (valueDict.TryGetValue("SourceEngineeringModelSetupIid", out tempSourceEngineeringModelSetupIid) && tempSourceEngineeringModelSetupIid != null)
            {
                dto.SourceEngineeringModelSetupIid = Guid.Parse(tempSourceEngineeringModelSetupIid);
            }

            return(dto);
        }