Пример #1
0
        protected virtual void DoImport()
        {
            AppendAuditLogEvent("Importing CSV file \"{0}\" ...", _csvFilePath);

            try
            {
                AqsDeserializeCsv cdr = new AqsDeserializeCsv(_baseDao);

                AppendAuditLogEvent("Generating AQS data from CSV file \"{0}\" ...", _csvFilePath);
                AirQualitySubmissionType data =
                    cdr.GetAirQualityData(_csvFilePath, Windsor.Node2008.WNOSPlugin.AQS2.AqsDeserializeCsv.AqsFileType.rawResults,
                                          _mappingTemplateName, this);

                AppendAuditLogEvent("Importing AQS data into database ...");

                AQSPersistDataToDatabase dataPersister = new AQSPersistDataToDatabase(_baseDao, _clearMetadata);
                dataPersister.UpsertAirQualityData(data, this);

                AppendAuditLogEvent("Successfully imported CSV file");
            }
            catch (Exception e)
            {
                AppendAuditLogEvent("Failed to import CSV file with error: {0}",
                                    ExceptionUtils.GetDeepExceptionMessage(e));
                throw;
            }
        }
Пример #2
0
        public virtual PaginatedContentResult ProcessQuery(string requestId)
        {
            LazyInit();

            ValidateRequest(requestId);

            PrepareToGetData();

            var dataProvider = new AQSGetDataFromDatabase(_baseDao, _clearMetadataBeforeRun, _startDate, _endDate, _siteId,
                                                          _countyCode, _commaSeparatedActionCodes, !_includeRawResultsOnly,
                                                          _filterByImportedDate);

            AirQualitySubmissionType data = dataProvider.GetAirQualityData(this);

            data.Version = _aqsSchemaVersionType;

            AppendAuditLogEvent("Generating serialized xml results for query");

            _dataFilePath = AddExchangeDocumentHeader(data, true, _dataRequest.TransactionId);

            PaginatedContentResult result =
                new PaginatedContentResult(_dataRequest.RowIndex, _dataRequest.MaxRowCount, true, CommonContentType.ZIP,
                                           File.ReadAllBytes(_dataFilePath));

            return(result);
        }
Пример #3
0
        public virtual void ProcessSolicit(string requestId)
        {
            LazyInit();

            ValidateRequest(requestId);

            PrepareToGetData();

            var dataProvider = new AQSGetDataFromDatabase(_baseDao, _clearMetadataBeforeRun, _startDate, _endDate, _siteId,
                                                          _countyCode, _commaSeparatedActionCodes, !_includeRawResultsOnly,
                                                          _filterByImportedDate);

            AirQualitySubmissionType data = dataProvider.GetAirQualityData(this);

            data.Version = _aqsSchemaVersionType;

            AppendAuditLogEvent("Generating submission file from results");

            _dataFilePath = AddExchangeDocumentHeader(data, true, _dataRequest.TransactionId);
        }
Пример #4
0
        protected virtual void DoImport()
        {
            try
            {
                AppendAuditLogEvent("Deserializing AQS XML from file \"{0}\" ...", _xmlFilePath);
                AirQualitySubmissionType data = _serializationHelper.Deserialize <AirQualitySubmissionType>(_xmlFilePath);

                AppendAuditLogEvent("Importing AQS data into database ...");

                AQSPersistDataToDatabase dataPersister = new AQSPersistDataToDatabase(_baseDao, _clearMetadata);
                dataPersister.UpsertAirQualityData(data, this);

                AppendAuditLogEvent("Successfully imported AQS XML into database.");
            }
            catch (Exception e)
            {
                AppendAuditLogEvent("Failed to import AQS XML into database with error: {0}",
                                    ExceptionUtils.GetDeepExceptionMessage(e));
                throw;
            }
        }
        public void UpsertAirQualityData(AirQualitySubmissionType data, IAppendAuditLogEvent appendAuditLogProvider)
        {
            IList <object> args;

            System.Text.StringBuilder argNames;

            foreach (FacilitySiteListType site in data.FacilitySiteList)
            {
                args     = new List <object>();
                argNames = new System.Text.StringBuilder();
                if (site.BasicSiteInformation != null)
                {
                    argNames.Append("ACTION_CD;AQCR_CD;CENSUS_BLOCK_CD;CENSUS_BLOCK_GRP_CD;CENSUS_TRACT_CD;CITY_CD;CLASS_AREA_CD;CONG_DIST_CODE;DIR_FROM_CITY_CD;DIR_TO_MET_SITE_CODE;DIST_FROM_CITY_MSR;DIST_TO_MET_SITE_MSR;HORIZ_COL_MTHD;HORIZ_REF_DATUM;HORIZONTAL_ACCURACY;HQ_EVAL_DATE;LAND_USE_ID;LOC_ADDR_TEXT;LOC_SETTING_ID;LOCAL_ID;LOCAL_NAME;LOCAL_REGION_CD;MET_SITE_ID;MET_SITE_TYPE_CD;POSTAL_CODE;REG_EVAL_DATE;SITE_EST_DATE;SITE_TERM_DATE;SRC_MAP_SCALE_NBR;SUPPORT_AGENCY_CD;TIME_ZONE_NAME;URBAN_AREA_CD;VERTICAL_ACCR_MSR;VERTICAL_DATUM_ID;VERTICAL_MEASURE;VERTICAL_MTHD_CD;");
                    args.Add(site.BasicSiteInformation.ActionCode);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.AQCRCode);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.CensusBlockCode);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.CensusBlockGroupCode);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.CensusTractCode);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.CityCode);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.ClassIAreaCode);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.CongressionalDistrictCode);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.DirectionFromCityCode);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.DirectionToMetSiteCode);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.DistanceFromCityMeasure);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.DistanceToMetSiteMeasure);
                    args.Add(site.BasicSiteInformation.GeographicMonitoringLocation.HorizontalCollectionMethodCode);
                    args.Add(site.BasicSiteInformation.GeographicMonitoringLocation.HorizontalReferenceDatumName);
                    args.Add(site.BasicSiteInformation.GeographicMonitoringLocation.HorizontalAccuracyMeasure);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.HQEvaluationDate);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.LandUseIdentifier);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.LocationAddressText);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.LocationSettingIdentifier);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.LocalIdentifier);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.LocalName);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.LocalRegionCode);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.MetSiteIdentifier);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.MetSiteTypeCode);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.AddressPostalCode.Value);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.RegionalEvaluationDate);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.SiteEstablishedDate);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.SiteTerminatedDate);
                    args.Add(site.BasicSiteInformation.GeographicMonitoringLocation.SourceMapScaleNumber);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.SupportAgencyCode);
                    args.Add(site.BasicSiteInformation.GeographicMonitoringLocation.TimeZoneName);
                    args.Add(site.BasicSiteInformation.FacilitySiteDetails.UrbanAreaCode);
                    args.Add(site.BasicSiteInformation.GeographicMonitoringLocation.VerticalAccuracyMeasure);
                    args.Add(site.BasicSiteInformation.GeographicMonitoringLocation.VerticalDatumIdentifier);
                    args.Add(site.BasicSiteInformation.GeographicMonitoringLocation.VerticalMeasure);
                    args.Add(site.BasicSiteInformation.GeographicMonitoringLocation.VerticalMethodCode);

                    for (int i = site.BasicSiteInformation.GeographicMonitoringLocation.Items.Length; i-- > 0;)
                    {
                        switch (site.BasicSiteInformation.GeographicMonitoringLocation.ItemsElementName[i])
                        {
                        case ItemsChoiceType1.LatitudeMeasure:
                            argNames.Append(';').Append("LATITUDE");
                            break;

                        case ItemsChoiceType1.LongitudeMeasure:
                            argNames.Append(';').Append("LONGITUDE");
                            break;

                        case ItemsChoiceType1.UTMEastingMeasure:
                            argNames.Append(';').Append("UTM_EASTING");
                            break;

                        case ItemsChoiceType1.UTMNorthingMeasure:
                            argNames.Append(';').Append("UTM_NORTHING");
                            break;

                        case ItemsChoiceType1.UTMZoneCode:
                            argNames.Append(';').Append("UTM_ZONE_CD");
                            break;

                        default:
                            continue;                                    //don't pass unused parameters
                        }
                        args.Add(site.BasicSiteInformation.GeographicMonitoringLocation.Items[i]);
                    }
                }
                argNames.Append("FACILITY_SITE_ID");
                args.Add(site.SiteIdentifierDetails.FacilitySiteIdentifier.Value);
                for (int i = site.SiteIdentifierDetails.Items.Length; i-- > 0;)
                {
                    switch (site.SiteIdentifierDetails.ItemsElementName[i])
                    {
                    case ItemsChoiceType.TribalCode:
                        argNames.Append(';').Append("TRIBAL_CD");
                        break;

                    case ItemsChoiceType.StateCode:
                        argNames.Append(';').Append("STATE_CD");
                        break;

                    case ItemsChoiceType.NonStateCode:
                        argNames.Append(';').Append("NON_STATE_CD");
                        break;

                    case ItemsChoiceType.CountyCode:
                        argNames.Append(';').Append("COUNTY_CD");
                        break;

                    default:
                        continue;
                    }
                    args.Add(site.SiteIdentifierDetails.Items[i]);
                }
                int siteID;
                using (System.Data.DataTable dt = new System.Data.DataTable())
                {
                    _baseDao.FillTableFromStoredProc(dt, "aqs_FacilitySiteUpsert", argNames.ToString(), args.ToArray());
                    siteID = (int)dt.Rows[0]["AQS_SITE_ID_PK"];
                }
                foreach (MonitorListType monitor in site.MonitorList)
                {
                    argNames = new System.Text.StringBuilder("AQS_SITE_ID_FK;SUBST_ID;SUBST_OCCURENCE_CD;");
                    args     = new List <object>();
                    args.Add(siteID);
                    args.Add(monitor.MonitorIdentifierDetails.SubstanceIdentifier.Value);
                    args.Add(monitor.MonitorIdentifierDetails.SubstanceOccurrenceCode);
                    if (monitor.BasicMonitoringInformation != null)
                    {
                        argNames.Append("ACTION_CD;APPLICABLE_NAAQS_IND;CMNTY_MONITOR_ZONE;DOMINANT_SCR_TXT;HORIZ_DIST_MSR;MEASUREMENT_SCALE_ID;MONITOR_CLOSE_DATE;OPEN_PATH_ID;PROBE_HEIGHT_MSR;PROBE_LOC_CODE;PROJECT_CLASS_CD;SAMPLE_RESID_TIME;SCHED_EXEMPT_IND;SPACIAL_AVG_IND;SURROGATE_IND;UNRESTR_AIR_FLOW_IND;VERT_DIST_MSR;WORST_SITE_TYPE_CD");
                        args.Add(monitor.BasicMonitoringInformation.ActionCode);
                        args.Add(monitor.BasicMonitoringInformation.ApplicableNAAQSIndicator);
                        args.Add(monitor.BasicMonitoringInformation.CommunityMonitoringZoneCode);
                        args.Add(monitor.BasicMonitoringInformation.DominantSourceText);
                        args.Add(monitor.BasicMonitoringInformation.HorizontalDistanceMeasure);
                        args.Add(monitor.BasicMonitoringInformation.MeasurementScaleIdentifier);
                        args.Add(monitor.BasicMonitoringInformation.MonitorCloseDate);
                        args.Add(monitor.BasicMonitoringInformation.OpenPathIdentifier);
                        //args.Add(monitor.BasicMonitoringInformation.PollutantAreaCode);
                        args.Add(monitor.BasicMonitoringInformation.ProbeHeightMeasure);
                        args.Add(monitor.BasicMonitoringInformation.ProbeLocationCode);
                        args.Add(monitor.BasicMonitoringInformation.ProjectClassCode);
                        args.Add(monitor.BasicMonitoringInformation.SampleResidenceTime);
                        args.Add(monitor.BasicMonitoringInformation.ScheduleExemptionIndicator);
                        args.Add(monitor.BasicMonitoringInformation.SpatialAverageIndicator);
                        args.Add(monitor.BasicMonitoringInformation.SurrogateIndicator);
                        args.Add(monitor.BasicMonitoringInformation.UnrestrictedAirFlowIndicator);
                        args.Add(monitor.BasicMonitoringInformation.VerticalDistanceMeasure);
                        args.Add(monitor.BasicMonitoringInformation.WorstSiteTypeCode);
                    }
                    int monitorID;
                    using (System.Data.DataTable dt = new System.Data.DataTable())
                    {
                        _baseDao.FillTableFromStoredProc(dt, "aqs_MonitorUpsert", argNames.ToString(), args.ToArray());
                        monitorID = (int)dt.Rows[0]["AQS_MONITOR_ID_PK"];
                    }

                    foreach (RawDataListType datum in monitor.RawDataList)
                    {
                        args     = new List <object>();
                        argNames = new System.Text.StringBuilder("ALTERNATE_MDL_VALUE;AQS_MONITOR_ID_FK;MEASURE_UNIT_CD;METHOD_ID_CD");
                        args.Add(datum.TransactionProtocolDetails.AlternateMDLValue);
                        args.Add(monitorID);
                        args.Add(datum.TransactionProtocolDetails.MeasureUnitCode);
                        args.Add(datum.TransactionProtocolDetails.MethodIdentifierCode);
                        for (int i = datum.TransactionProtocolDetails.Items.Length; i-- > 0;)
                        {
                            switch (datum.TransactionProtocolDetails.ItemsElementName[i])
                            {
                            case ItemsChoiceType2.CompositeTypeIdentifier:
                                argNames.Append(';').Append("COMPOSITE_TYPE_ID");
                                break;

                            case ItemsChoiceType2.DurationCode:
                                argNames.Append(';').Append("DURATION_CD");
                                break;

                            case ItemsChoiceType2.FrequencyCode:
                                argNames.Append(';').Append("FREQUENCY_CD");
                                break;

                            default:
                                continue;
                            }
                            args.Add(datum.TransactionProtocolDetails.Items[i]);
                        }

                        int protocolID;
                        using (System.Data.DataTable dt = new System.Data.DataTable())
                        {
                            _baseDao.FillTableFromStoredProc(dt, "aqs_TransactionProtocolUpsert", argNames.ToString(), args.ToArray());
                            protocolID = (int)dt.Rows[0]["AQS_TRANS_PROTOCOL_PK"];
                        }
                        foreach (object item in datum.Items)
                        {
                            var result = item as RawResultsType;
                            if (result != null)
                            {
                                args     = new List <object>();
                                argNames = new System.Text.StringBuilder("ACTION_CD;AQS_TRANS_PROTOCOL_FK;DATA_APPROVAL_IND;DATA_VALIDITY_CD;SMPL_COLL_START_DATE;SMPL_COLL_START_TIME");
                                args.Add(result.ActionCode);
                                args.Add(protocolID);
                                args.Add(result.RawValueDetails.DataApprovalIndicator);
                                args.Add(result.RawValueDetails.DataValidityCode);
                                args.Add(result.SampleCollectionStartDate);
                                args.Add(result.SampleCollectionStartTime);
                                for (int i = result.RawValueDetails.Items.Length; i-- > 0;)
                                {
                                    switch (result.RawValueDetails.ItemsElementName[i])
                                    {
                                    case ItemsChoiceType3.MeasureValue:
                                        argNames.Append(';').Append("MEASURE_VALUE");
                                        break;

                                    case ItemsChoiceType3.NullDataCode:
                                        argNames.Append(';').Append("NULL_DATA_CD");
                                        break;

                                    case ItemsChoiceType3.UncertaintyValue:
                                        argNames.Append(';').Append("UNCERTAINTY_VALUE");
                                        break;

                                    default:
                                        continue;
                                    }
                                    args.Add(result.RawValueDetails.Items[i]);
                                }
                                _baseDao.DoStoredProcWithArgs("aqs_RawResultUpsert", argNames.ToString(), args);
                            }
                            else
                            {
                                var blankResult = item as BlankInformationType;
                                if (blankResult != null)
                                {
                                    args     = new List <object>();
                                    argNames = new System.Text.StringBuilder("ACTION_CD;AQS_TRANS_PROTOCOL_FK;DATA_APPROVAL_IND;DATA_VALIDITY_CD;SMPL_COLL_START_DATE;SMPL_COLL_START_TIME");
                                    args.Add(blankResult.ActionCode);
                                    args.Add(protocolID);
                                    args.Add(blankResult.RawValueDetails.DataApprovalIndicator);
                                    args.Add(blankResult.RawValueDetails.DataValidityCode);
                                    args.Add(blankResult.SampleCollectionStartDate);
                                    args.Add(blankResult.SampleCollectionStartTime);
                                    for (int i = blankResult.RawValueDetails.Items.Length; i-- > 0;)
                                    {
                                        switch (blankResult.RawValueDetails.ItemsElementName[i])
                                        {
                                        case ItemsChoiceType3.MeasureValue:
                                            argNames.Append(';').Append("MEASURE_VALUE");
                                            break;

                                        case ItemsChoiceType3.NullDataCode:
                                            argNames.Append(';').Append("NULL_DATA_CD");
                                            break;

                                        case ItemsChoiceType3.UncertaintyValue:
                                            argNames.Append(';').Append("UNCERTAINTY_VALUE");
                                            break;

                                        default:
                                            continue;
                                        }
                                        args.Add(blankResult.RawValueDetails.Items[i]);
                                    }
                                    argNames.Append(';').Append("BLANK_TYPE_CD");
                                    args.Add(blankResult.BlankTypeCode);
                                    _baseDao.DoStoredProcWithArgs("aqs_BlankResultUpsert", argNames.ToString(), args);
                                }
                            }
                        }
                    }
                }
            }

            //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
            // ExecuteMetaDataValidation - Executes SP that inserts the metadata
            //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
            Data.ExecuteMetaDataValidation(_baseDao, _clearMetadataBeforeRun);
        }