public AirQualitySubmissionType GetAirQualityData(string imputPath, AqsFileType fileType, string format, IAppendAuditLogEvent appendAuditLogProvider) { try { IAbstractHeader <AirQualitySubmissionType> mappedParser = GetAqsHeader(fileType, format) .Materialize(GetValueMappings(format)) .Materialize(GetColumnMappings(format)); Windsor.Commons.Core.CommaSeparatedFileParser parser = new Windsor.Commons.Core.CommaSeparatedFileParser(imputPath); while (parser.NextLine()) { mappedParser.ConsumeRow(parser); } return(mappedParser.Resolve()); } catch (Exception x) { appendAuditLogProvider.AppendAuditLogEvent(x.Message); throw; } }
public void ConsumeRow(Windsor.Commons.Core.CommaSeparatedFileParser parser) { Func <string, string> unmap = (c) => base[c](parser, c); string substance = unmap("SUBST_ID"); if (!_monitorList.ContainsKey(substance)) { MonitorListType monitor = new MonitorListType(); monitor.BasicMonitoringInformation = new BasicMonitoringInformationType(); //Don't delete monitors, since they may have results from other files. monitor.BasicMonitoringInformation.ActionCode = unmap("MONITOR.ACTION_CD"); #if !V_3 monitor.BasicMonitoringInformation.ApplicableNAAQSIndicator = unmap("APPLICABLE_NAAQS_IND"); #endif // !V_3 monitor.BasicMonitoringInformation.CommunityMonitoringZoneCode = unmap("CMNTY_MONITOR_ZONE"); monitor.BasicMonitoringInformation.DominantSourceText = unmap("DOMINANT_SCR_TXT"); monitor.BasicMonitoringInformation.HorizontalDistanceMeasure = unmap("HORIZ_DIST_MSR"); monitor.BasicMonitoringInformation.MeasurementScaleIdentifier = unmap("MEASUREMENT_SCALE_ID"); monitor.BasicMonitoringInformation.MonitorCloseDate = unmap("MONITOR_CLOSE_DATE"); monitor.BasicMonitoringInformation.OpenPathIdentifier = unmap("OPEN_PATH_ID"); //monitor.BasicMonitoringInformation.PollutantAreaCode=; monitor.BasicMonitoringInformation.ProbeHeightMeasure = unmap("PROBE_HEIGHT_MSR"); monitor.BasicMonitoringInformation.ProbeLocationCode = unmap("PROBE_LOC_CODE"); monitor.BasicMonitoringInformation.ProjectClassCode = unmap("PROJECT_CLASS_CD"); monitor.BasicMonitoringInformation.SampleResidenceTime = unmap("SAMPLE_RESID_TIME"); monitor.BasicMonitoringInformation.ScheduleExemptionIndicator = unmap("SCHED_EXEMPT_IND"); monitor.BasicMonitoringInformation.SpatialAverageIndicator = unmap("SPACIAL_AVG_IND"); monitor.BasicMonitoringInformation.SurrogateIndicator = unmap("SURROGATE_IND"); monitor.BasicMonitoringInformation.UnrestrictedAirFlowIndicator = unmap("UNRESTR_AIR_FLOW_IND"); monitor.BasicMonitoringInformation.VerticalDistanceMeasure = unmap("VERT_DIST_MSR"); monitor.BasicMonitoringInformation.WorstSiteTypeCode = unmap("WORST_SITE_TYPE_CD"); monitor.MonitorIdentifierDetails = new MonitorIdentifierDetailsType(); monitor.MonitorIdentifierDetails.SubstanceIdentifier = new SubstanceIdentifierDataType(); monitor.MonitorIdentifierDetails.SubstanceIdentifier.Value = substance; monitor.MonitorIdentifierDetails.SubstanceOccurrenceCode = unmap("SUBST_OCCURENCE_CD"); _monitorList.Add(substance, monitor); } string unit = unmap("MEASURE_UNIT_CD"); string datumKey = substance + ",measure:" + unit; if (!_rawDataList.ContainsKey(datumKey)) { RawDataListType datum = new RawDataListType(); datum.TransactionProtocolDetails = new TransactionProtocolDetailsType(); datum.TransactionProtocolDetails.MeasureUnitCode = unit; datum.TransactionProtocolDetails.MethodIdentifierCode = unmap("METHOD_ID_CD"); datum.TransactionProtocolDetails.AlternateMDLValue = unmap("ALTERNATE_MDL_VALUE"); #if !V_3 var items = new List <object>(); var itemNames = new List <ItemsChoiceType2>(); var item = unmap("COMPOSITE_TYPE_ID"); if (item != null) { items.Add(item); itemNames.Add(ItemsChoiceType2.CompositeTypeIdentifier); } item = unmap("DURATION_CD"); if (item != null) { items.Add(item); itemNames.Add(ItemsChoiceType2.DurationCode); } item = unmap("FREQUENCY_CD"); if (item != null) { items.Add(item); itemNames.Add(ItemsChoiceType2.FrequencyCode); } datum.TransactionProtocolDetails.Items = items.ToArray(); datum.TransactionProtocolDetails.ItemsElementName = itemNames.ToArray(); #else // !V_3 datum.TransactionProtocolDetails.CompositeTypeIdentifier = unmap("COMPOSITE_TYPE_ID"); datum.TransactionProtocolDetails.DurationCode = unmap("DURATION_CD"); #endif // !V_3 _rawDataList.Add(datumKey, datum); } string startDate = unmap("SMPL_COLL_START_DATE"); string startTime = unmap("SMPL_COLL_START_TIME"); string resultKey = datumKey + ",datetime:" + startDate + startTime; if (!_rawDataResultsList.ContainsKey(resultKey)) { RawResultsType result = new RawResultsType(); result.ActionCode = unmap("RESULT.ACTION_CD");//Enum.GetName(typeof(ActionType), _action).Substring(0, 1).ToUpper(); result.SampleCollectionStartDate = startDate; result.SampleCollectionStartTime = startTime; result.RawValueDetails = new RawValueDetailsType(); result.RawValueDetails.DataApprovalIndicator = unmap("DATA_APPROVAL_IND"); result.RawValueDetails.DataValidityCode = unmap("DATA_VALIDITY_CD"); var items = new List <object>(); var itemNames = new List <ItemsChoiceType3>(); var item = unmap("MEASURE_VALUE"); if (item != null) { items.Add(item); itemNames.Add(ItemsChoiceType3.MeasureValue); } item = unmap("NULL_DATA_CD"); if (item != null) { items.Add(item); itemNames.Add(ItemsChoiceType3.NullDataCode); } item = unmap("UNCERTAINTY_VALUE"); if (item != null) { items.Add(item); itemNames.Add(ItemsChoiceType3.UncertaintyValue); } result.RawValueDetails.Items = items.ToArray(); result.RawValueDetails.ItemsElementName = itemNames.ToArray(); _rawDataResultsList.Add(resultKey, result); } }