예제 #1
0
        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);
        }
예제 #2
0
        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;
            }
        }