public static ResultDataType MapResult(NamedNullMappingDataReader readerEx) { ResultDataType result = new ResultDataType(); result.RecordId = readerEx.GetString("RECORDID"); result.ResultDescription = new ResultDescriptionDataType(); result.ResultDescription.DataLoggerLineName = readerEx.GetNullString("DATALOGGERLINENAME"); result.ResultDescription.ResultDetectionConditionText = readerEx.GetNullString("RESULTDETECTIONCONDITION"); result.ResultDescription.CharacteristicName = readerEx.GetNullString("CHARACTERISTICNAME"); result.ResultDescription.MethodSpeciationName = readerEx.GetNullString("METHODSPECIATIONNAME"); result.ResultDescription.ResultSampleFractionText = readerEx.GetNullString("RESULTSAMPFRACTION"); result.ResultDescription.ResultMeasure = new MeasureDataType(); result.ResultDescription.ResultMeasure.ResultMeasureValue = readerEx.GetNullString("RESULTMEASURE"); result.ResultDescription.ResultMeasure.MeasureUnitCode = readerEx.GetNullString("RESULTMEASUREUNIT"); result.ResultDescription.ResultMeasure.MeasureQualifierCode = readerEx.GetNullString("RESULTMEASUREQUALIFIERCODE"); result.ResultDescription.ResultStatusIdentifier = readerEx.GetNullString("STATUSID"); result.ResultDescription.StatisticalBaseCode = readerEx.GetNullString("STATISTICALBASECODE"); result.ResultDescription.ResultValueTypeName = readerEx.GetNullString("VALUETYPE"); result.ResultDescription.ResultWeightBasisText = readerEx.GetNullString("WEIGHTBASIS"); result.ResultDescription.ResultTimeBasisText = readerEx.GetNullString("TIMEBASIS"); result.ResultDescription.ResultTemperatureBasisText = readerEx.GetNullString("TEMPERATUREBASIS"); result.ResultDescription.ResultParticleSizeBasisText = readerEx.GetNullString("PARTICLESIZEBASIS"); result.ResultDescription.DataQuality = new DataQualityDataType(); result.ResultDescription.DataQuality.PrecisionValue = readerEx.GetNullString("PRECISIONVALUE"); result.ResultDescription.DataQuality.BiasValue = readerEx.GetNullString("BIASVALUE"); result.ResultDescription.DataQuality.ConfidenceIntervalValue = readerEx.GetNullString("CONFIDENCEINTERVALVALUE"); result.ResultDescription.DataQuality.UpperConfidenceLimitValue = readerEx.GetNullString("UPPERCONFIDENCELIMITVALUE"); result.ResultDescription.DataQuality.LowerConfidenceLimitValue = readerEx.GetNullString("LOWERCONFIDENCELIMITVALUE"); result.ResultDescription.ResultCommentText = readerEx.GetNullString("RESULTCOMMENT"); result.ResultDescription.ResultDepthHeightMeasure = GetNullMeasureCompactData(readerEx, "DEPTHHEIGHTMEASURE", "DEPTHHEIGHTMEASUREUNIT"); result.ResultDescription.ResultDepthAltitudeReferencePointText = readerEx.GetNullString("DEPTHALTITUDEREFPOINT"); result.ResultDescription.ResultSamplingPointName = readerEx.GetNullString("RESULTSAMPPOINT"); if (!readerEx.IsDBNull("BIORESULTINTENT") || !readerEx.IsDBNull("BIORESULTSUBJECTTAXONOMIC")) { result.BiologicalResultDescription = new BiologicalResultDescriptionDataType(); result.BiologicalResultDescription.BiologicalIntentName = readerEx.GetString("BIORESULTINTENT"); result.BiologicalResultDescription.BiologicalIndividualIdentifier = readerEx.GetNullString("BIORESULTINDIVIDUALID"); result.BiologicalResultDescription.SubjectTaxonomicName = readerEx.GetString("BIORESULTSUBJECTTAXONOMIC"); result.BiologicalResultDescription.UnidentifiedSpeciesIdentifier = readerEx.GetNullString("BIORESULTUNIDENTIFIEDSPECIESID"); result.BiologicalResultDescription.SampleTissueAnatomyName = readerEx.GetNullString("BIORESULTSAMPTISSUEANATOMY"); result.BiologicalResultDescription.GroupSummaryCountWeight = GetNullMeasureCompactData(readerEx, "GRPSUMMCOUNTWEIGHTMEASURE", "GRPSUMMCOUNTWEIGHTMEASUREUNIT"); result.BiologicalResultDescription.TaxonomicDetails = new TaxonomicDetailsDataType(); result.BiologicalResultDescription.TaxonomicDetails.CellFormName = readerEx.GetNullString("TAXDETAILSCELLFORM"); result.BiologicalResultDescription.TaxonomicDetails.CellShapeName = readerEx.GetNullString("TAXDETAILSCELLSHAPE"); if (!readerEx.IsDBNull("TAXDETAILSHABITNAME")) { result.BiologicalResultDescription.TaxonomicDetails.HabitName = WQXDataHelper.PipedStringToStrings(readerEx.GetString("TAXDETAILSHABITNAME")); } result.BiologicalResultDescription.TaxonomicDetails.VoltinismName = readerEx.GetNullString("TAXDETAILSVOLTINISM"); result.BiologicalResultDescription.TaxonomicDetails.TaxonomicPollutionTolerance = readerEx.GetNullString("TAXDETAILSPOLLTOLERANCE"); result.BiologicalResultDescription.TaxonomicDetails.TaxonomicPollutionToleranceScaleText = readerEx.GetNullString("TAXDETAILSPOLLTOLERANCESCALE"); result.BiologicalResultDescription.TaxonomicDetails.TrophicLevelName = readerEx.GetNullString("TAXDETAILSTROPHICLEVEL"); if (!readerEx.IsDBNull("TAXDETAILSFUNCFEEDINGGROUP")) { result.BiologicalResultDescription.TaxonomicDetails.FunctionalFeedingGroupName = WQXDataHelper.PipedStringToStrings(readerEx.GetString("TAXDETAILSFUNCFEEDINGGROUP")); } if (!readerEx.IsDBNull("CITATIONRESOURCETITLE") || !readerEx.IsDBNull("CITATIONRESOURCEID")) { result.BiologicalResultDescription.TaxonomicDetails.TaxonomicDetailsCitation = new BibliographicReferenceDataType(); result.BiologicalResultDescription.TaxonomicDetails.TaxonomicDetailsCitation.ResourceTitleName = readerEx.GetString("CITATIONRESOURCETITLE"); result.BiologicalResultDescription.TaxonomicDetails.TaxonomicDetailsCitation.ResourceCreatorName = readerEx.GetNullString("CITATIONRESOURCECREATOR"); result.BiologicalResultDescription.TaxonomicDetails.TaxonomicDetailsCitation.ResourceSubjectText = readerEx.GetNullString("CITATIONRESOURCESUBJECT"); result.BiologicalResultDescription.TaxonomicDetails.TaxonomicDetailsCitation.ResourcePublisherName = readerEx.GetNullString("CITATIONRESOURCEPUBLISHER"); result.BiologicalResultDescription.TaxonomicDetails.TaxonomicDetailsCitation.ResourceDate = readerEx.GetDateTime("CITATIONRESOURCEDATE"); result.BiologicalResultDescription.TaxonomicDetails.TaxonomicDetailsCitation.ResourceIdentifier = readerEx.GetString("CITATIONRESOURCEID"); } if (!readerEx.IsDBNull("FREQCLASSDESCCODE")) { result.BiologicalResultDescription.FrequencyClassInformation = new FrequencyClassInformationDataType(); result.BiologicalResultDescription.FrequencyClassInformation.FrequencyClassDescriptorCode = readerEx.GetString("FREQCLASSDESCCODE"); result.BiologicalResultDescription.FrequencyClassInformation.FrequencyClassDescriptorUnitCode = readerEx.GetNullString("FREQCLASSDESCUNITCODE"); result.BiologicalResultDescription.FrequencyClassInformation.LowerClassBoundValue = readerEx.GetNullString("FREQCLASSLOWERBOUNDVALUE"); result.BiologicalResultDescription.FrequencyClassInformation.UpperClassBoundValue = readerEx.GetNullString("FREQCLASSUPPERBOUNDVALUE"); } } if (!readerEx.IsDBNull("ANALYTICALMETHODID") || !readerEx.IsDBNull("ANALYTICALMETHODIDCONTEXT")) { result.ResultAnalyticalMethod = new ResultAnalyticalMethodDataType(); result.ResultAnalyticalMethod.MethodIdentifier = readerEx.GetString("ANALYTICALMETHODID"); result.ResultAnalyticalMethod.MethodIdentifierContext = readerEx.GetString("ANALYTICALMETHODIDCONTEXT"); result.ResultAnalyticalMethod.MethodName = readerEx.GetNullString("ANALYTICALMETHODNAME"); result.ResultAnalyticalMethod.MethodQualifierTypeName = readerEx.GetNullString("ANALYTICALMETHODQUALIFIERTYPE"); result.ResultAnalyticalMethod.MethodDescriptionText = readerEx.GetNullString("ANALYTICALMETHODDESC"); } result.ResultLabInformation = new ResultLabInformationDataType(); result.ResultLabInformation.LaboratoryName = readerEx.GetNullString("LABNAME"); result.ResultLabInformation.AnalysisStartDateSpecified = !readerEx.IsDBNull("LABANALYSISSTARTDATE"); if (result.ResultLabInformation.AnalysisStartDateSpecified) { result.ResultLabInformation.AnalysisStartDate = readerEx.GetDateTime("LABANALYSISSTARTDATE"); } result.ResultLabInformation.AnalysisStartTime = GetNullTimeData(readerEx, "LABANALYSISSTARTTIME", "LABANALYSISSTARTTIMEZONECODE"); result.ResultLabInformation.AnalysisEndDateSpecified = !readerEx.IsDBNull("LABANALYSISENDDATE"); if (result.ResultLabInformation.AnalysisEndDateSpecified) { result.ResultLabInformation.AnalysisEndDate = readerEx.GetDateTime("LABANALYSISENDDATE"); } result.ResultLabInformation.AnalysisEndTime = GetNullTimeData(readerEx, "LABANALYSISENDTIME", "LABANALYSISENDTIMEZONECODE"); result.ResultLabInformation.ResultLaboratoryCommentCode = readerEx.GetNullString("RESULTLABCOMMENTCODE"); result.ResultLabInformation.LaboratoryAccreditationIndicatorSpecified = !readerEx.IsDBNull("LABACCIND"); if (result.ResultLabInformation.LaboratoryAccreditationIndicatorSpecified) { result.ResultLabInformation.LaboratoryAccreditationIndicator = ToBool(readerEx.GetString("LABACCIND")); } result.ResultLabInformation.LaboratoryAccreditationAuthorityName = readerEx.GetNullString("LABACCAUTHORITYNAME"); result.ResultLabInformation.TaxonomistAccreditationIndicatorSpecified = !readerEx.IsDBNull("LABTAXACCIND"); if (result.ResultLabInformation.TaxonomistAccreditationIndicatorSpecified) { result.ResultLabInformation.TaxonomistAccreditationIndicator = ToBool(readerEx.GetString("LABTAXACCIND")); } result.ResultLabInformation.TaxonomistAccreditationAuthorityName = readerEx.GetNullString("LABTAXACCAUTHORITYNAME"); #if NO // TODO result.BiologicalResultDescription.FrequencyClassInformation result.LabSamplePreparation #endif return(result); }
private void InsertResults(IDbCommand dbCommand, WQXDataType organization) { const string RSLT_UPDATE_COLUMNS = "ActivityIdentifier;DataLoggerLineName;SampleDateTime;ResultDetectionConditionText;CharacteristicName;ResultSampleFractionText;ResultMeasureValue;" + "ResultMeasureUnitCode;ResultStatusIdentifier;StatisticalBaseCode;ResultValueTypeName;ResultWeightBasisText;ResultTimeBasisText;ResultTemperatureBasisText;" + "ResultParticleSizeBasisText;ResultCommentText;BiologicalIntentName;BiologicalIndividualIdentifier;SubjectTaxonomicName;UnidentifiedSpeciesIdentifier;" + "SampleTissueAnatomyName;RGSCWMeasureValue;RGSCWMeasureUnitCode;ResAMMethodIdentifier;ResAMMethodIdentifierContext;ResAMMethodName;LaboratoryName;" + "AnalysisStartDate;AnalysisEndDate;ResultLaboratoryCommentCode;DetectionQuantitationLimitTypeName;RDQLMTMeasureValue;RDQLMTMeasureUnitCode;RLSPRPMethodIdentifier;" + "RLSPRPMethodIdentifierContext;RLSPRPMethodName;LastChangeDate;SubmitToEPA;SubmitToNWIFC;Delete"; const string RSLT_TABLE_NAME = "Result"; const string CHARACTERISTIC_TABLE_NAME = "Characteristic"; const string RESULT_STATUS_TABLE_NAME = "ResultStatus"; if (CollectionUtils.IsNullOrEmpty(organization.Organization.Activity)) { return; } List <ResultDataType> results = new List <ResultDataType>(128); CollectionUtils.ForEach(organization.Organization.Activity, delegate(ActivityDataType activity) { ExceptionUtils.ThrowIfNull(activity, "activity"); CollectionUtils.ForEach(activity.Result, delegate(ResultDataType result) { result.ParentId = activity.ActivityDescription.ActivityIdentifier; // Will be used below results.Add(result); }); }); if (results.Count == 0) { return; } int count = (int)_dao.DoJDBCExecuteScalar("SELECT COUNT(*) FROM " + CHARACTERISTIC_TABLE_NAME, null); Dictionary <string, string> characteristicNames = new Dictionary <string, string>(count); DoSimpleQueryWithRowCallbackDelegate(dbCommand, CHARACTERISTIC_TABLE_NAME, null, null, "CName", delegate(IDataReader reader) { string cName = reader.GetString(0); characteristicNames.Add(cName, cName); }); count = (int)_dao.DoJDBCExecuteScalar("SELECT COUNT(*) FROM " + RESULT_STATUS_TABLE_NAME, null); Dictionary <string, string> resultStatusIds = new Dictionary <string, string>(count); DoSimpleQueryWithRowCallbackDelegate(dbCommand, RESULT_STATUS_TABLE_NAME, null, null, "RSName", delegate(IDataReader reader) { string rsName = reader.GetString(0); resultStatusIds.Add(rsName, rsName); }); int maxColCount = RSLT_UPDATE_COLUMNS.Split(';').Length; object[] values = new object[maxColCount]; try { DoBulkInsert(dbCommand, RSLT_TABLE_NAME, RSLT_UPDATE_COLUMNS, delegate(int currentInsertIndex) { if (currentInsertIndex < results.Count) { ResultDataType result = results[currentInsertIndex]; int valueIndex = 0; values[valueIndex++] = result.ParentId; if (result.ResultDescription != null) { values[valueIndex++] = result.ResultDescription.DataLoggerLineName; values[valueIndex++] = null; // SampleDateTime? values[valueIndex++] = result.ResultDescription.ResultDetectionConditionText; if (string.IsNullOrEmpty(result.ResultDescription.CharacteristicName)) { throw new ArgException("A result is missing a CharacteristicName for Activity: {0}", result.ParentId); } if (!characteristicNames.ContainsKey(result.ResultDescription.CharacteristicName)) { throw new ArgException("A result has an unrecognized CharacteristicName: {0}", result.ResultDescription.CharacteristicName); } values[valueIndex++] = result.ResultDescription.CharacteristicName; values[valueIndex++] = result.ResultDescription.ResultSampleFractionText; if (result.ResultDescription.ResultMeasure != null) { values[valueIndex++] = result.ResultDescription.ResultMeasure.ResultMeasureValue; values[valueIndex++] = result.ResultDescription.ResultMeasure.MeasureUnitCode; } else { values[valueIndex++] = null; values[valueIndex++] = null; } if (string.IsNullOrEmpty(result.ResultDescription.ResultStatusIdentifier)) { throw new ArgException("A result is missing a ResultStatusIdentifier for Activity: {0}", result.ParentId); } if (!resultStatusIds.ContainsKey(result.ResultDescription.ResultStatusIdentifier)) { throw new ArgException("A result has an unrecognized ResultStatusIdentifier: {0}", result.ResultDescription.ResultStatusIdentifier); } values[valueIndex++] = result.ResultDescription.ResultStatusIdentifier; values[valueIndex++] = result.ResultDescription.StatisticalBaseCode; values[valueIndex++] = result.ResultDescription.ResultValueTypeName; values[valueIndex++] = result.ResultDescription.ResultWeightBasisText; values[valueIndex++] = result.ResultDescription.ResultTimeBasisText; values[valueIndex++] = result.ResultDescription.ResultTemperatureBasisText; values[valueIndex++] = result.ResultDescription.ResultParticleSizeBasisText; values[valueIndex++] = result.ResultDescription.ResultCommentText; } else { throw new ArgException("A result is missing a ResultDescription element"); } if (result.BiologicalResultDescription != null) { values[valueIndex++] = result.BiologicalResultDescription.BiologicalIntentName; values[valueIndex++] = result.BiologicalResultDescription.BiologicalIndividualIdentifier; values[valueIndex++] = result.BiologicalResultDescription.SubjectTaxonomicName; values[valueIndex++] = result.BiologicalResultDescription.UnidentifiedSpeciesIdentifier; values[valueIndex++] = result.BiologicalResultDescription.SampleTissueAnatomyName; if (result.BiologicalResultDescription.GroupSummaryCountWeight != null) { values[valueIndex++] = result.BiologicalResultDescription.GroupSummaryCountWeight.MeasureValue; values[valueIndex++] = result.BiologicalResultDescription.GroupSummaryCountWeight.MeasureUnitCode; } else { values[valueIndex++] = null; values[valueIndex++] = null; } } else { values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; } if (result.ResultAnalyticalMethod != null) { values[valueIndex++] = result.ResultAnalyticalMethod.MethodIdentifier; values[valueIndex++] = result.ResultAnalyticalMethod.MethodIdentifierContext; values[valueIndex++] = result.ResultAnalyticalMethod.MethodName; } else { values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; } if (result.ResultLabInformation != null) { values[valueIndex++] = result.ResultLabInformation.LaboratoryName; if (result.ResultLabInformation.AnalysisStartDateSpecified) { values[valueIndex++] = result.ResultLabInformation.AnalysisStartDate; } else { values[valueIndex++] = null; } if (result.ResultLabInformation.AnalysisEndDateSpecified) { values[valueIndex++] = result.ResultLabInformation.AnalysisEndDate; } else { values[valueIndex++] = null; } values[valueIndex++] = result.ResultLabInformation.ResultLaboratoryCommentCode; if (!CollectionUtils.IsNullOrEmpty(result.ResultLabInformation.ResultDetectionQuantitationLimit)) { DetectionQuantitationLimitDataType detectionQuantitationLimitDataType = result.ResultLabInformation.ResultDetectionQuantitationLimit[0]; values[valueIndex++] = detectionQuantitationLimitDataType.DetectionQuantitationLimitTypeName; if (detectionQuantitationLimitDataType.DetectionQuantitationLimitMeasure != null) { values[valueIndex++] = detectionQuantitationLimitDataType.DetectionQuantitationLimitMeasure.MeasureValue; values[valueIndex++] = detectionQuantitationLimitDataType.DetectionQuantitationLimitMeasure.MeasureUnitCode; } else { values[valueIndex++] = null; values[valueIndex++] = null; } } else { values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; } } else { values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; } if (!CollectionUtils.IsNullOrEmpty(result.LabSamplePreparation)) { LabSamplePreparationDataType labSamplePreparationDataType = result.LabSamplePreparation[0]; if (labSamplePreparationDataType.LabSamplePreparationMethod != null) { values[valueIndex++] = labSamplePreparationDataType.LabSamplePreparationMethod.MethodIdentifier; values[valueIndex++] = labSamplePreparationDataType.LabSamplePreparationMethod.MethodIdentifierContext; values[valueIndex++] = labSamplePreparationDataType.LabSamplePreparationMethod.MethodName; } else { values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; } } else { values[valueIndex++] = null; values[valueIndex++] = null; values[valueIndex++] = null; } if (_setLastUpdatedDateTime) { values[valueIndex++] = _lastUpdatedDateTime; } else { values[valueIndex++] = null; } values[valueIndex++] = _submitToEpa ? 1 : 0; values[valueIndex++] = 0; values[valueIndex++] = 0; IncInsertCount(RSLT_TABLE_NAME); return(values); } else { return(null); } }); } catch (Exception) { throw; } }