/// <summary> /// Read data from file /// </summary> /// <param name="addBlankLineInEmptyTable">if add line in blank data table</param> /// <returns></returns> internal Data_Schema.ArriveWebDataTable ArriveReadHistoryFromFile(bool addBlankLineInEmptyTable) { string fileName = Utils.CreatePhysicalFileName(Constants.FileName.ArriveShow); Data_Schema.ArriveWebDataTable history = Utils.DataTableReadFromFile(fileName, new Data_Schema.ArriveWebDataTable()) as Data_Schema.ArriveWebDataTable; if ((history == null) && addBlankLineInEmptyTable) { history = new Data_Schema.ArriveWebDataTable(); history.AddArriveWebRow(0L, DateTime.MaxValue, "", "", "", "", "", "", "", "", 0L, 0, "", DateTime.MaxValue, "", "", DateTime.MaxValue, ""); } return(history); }
public Data_Schema.ArriveWebDataTable GetAllArrival() { string fileName = Utils.CreatePhysicalFileName(Constants.FileName.ArriveActualTimeStamp); DateTime latestTimestamp = Utils.TimeStampRead(fileName); if (latestTimestamp.AddSeconds(_refreshTime) > DateTime.Now) { Data_Schema.ArriveWebDataTable dataFromCache = ArriveReadHistoryFromFile(false); if (dataFromCache != null) { return(dataFromCache); } } string dataXMLFromWeb = ReadSourceData(true); if (!string.IsNullOrWhiteSpace(dataXMLFromWeb)) { return(ArriveAppendHistoryToActualReadData(ConvertToArrive(dataXMLFromWeb))); } return(new Data_Schema.ArriveWebDataTable()); }
/// <summary> /// Append history data and new data /// </summary> /// <param name="actualDataReadFromService">actual read data from service</param> /// <returns></returns> internal Data_Schema.ArriveWebDataTable ArriveAppendHistoryToActualReadData(Data_Schema.ArriveWebDataTable actualDataReadFromService) { Data_Schema.ArriveWebDataTable ArriveHistoryDataFromFile; lock (arriveLock) { ArriveHistoryDataFromFile = ArriveReadHistoryFromFile(false); if (ArriveHistoryDataFromFile == null) { ArriveHistoryDataFromFile = new Data_Schema.ArriveWebDataTable(); } /// delete olders then Hist time stamp DateTime minimalDateForRemember = DateTime.Now.AddHours(-_history); List <long> ListOfFlightID = actualDataReadFromService.AsEnumerable().Select(Selrow => Selrow.Field <long>("FLIGHTID")).ToList(); if (ListOfFlightID == null) { ListOfFlightID = new List <long>(); } Data_Schema.ArriveWebRow rowForShowOnWeb; for (int i = ArriveHistoryDataFromFile.Rows.Count; i > 0; i--) { rowForShowOnWeb = ArriveHistoryDataFromFile.Rows[i - 1] as Data_Schema.ArriveWebRow; if (rowForShowOnWeb != null) { if (ListOfFlightID.Contains(rowForShowOnWeb.FLIGHTID)) { ArriveHistoryDataFromFile.Rows.RemoveAt(i - 1); } else if (rowForShowOnWeb.TIME_LT < minimalDateForRemember) { ArriveHistoryDataFromFile.Rows.RemoveAt(i - 1); } } } foreach (Data_Schema.ArriveWebRow rowActualReadFromService in actualDataReadFromService.Rows) { rowForShowOnWeb = ArriveHistoryDataFromFile.NewArriveWebRow(); rowForShowOnWeb.FLIGHTID = rowActualReadFromService.FLIGHTID; rowForShowOnWeb.TIME_LT = rowActualReadFromService.TIME_LT; rowForShowOnWeb.ICAO_AIR = rowActualReadFromService.ICAO_AIR; rowForShowOnWeb.IATAICAO = rowActualReadFromService.IATAICAO; rowForShowOnWeb.PARID = rowActualReadFromService.PARID; rowForShowOnWeb.FLGTNUM = rowActualReadFromService.FLGTNUM; rowForShowOnWeb.S1 = rowActualReadFromService.S1; rowForShowOnWeb.S1CIT = rowActualReadFromService.S1CIT; if (!rowActualReadFromService.IsAIRCRFTNull()) { rowForShowOnWeb.AIRCRFT = rowActualReadFromService.AIRCRFT; } if (!rowActualReadFromService.IsATA_LTNull()) { rowForShowOnWeb.ATA_LT = rowActualReadFromService.ATA_LT; } if (!rowActualReadFromService.IsETA_LTNull()) { rowForShowOnWeb.ETA_LT = rowActualReadFromService.ETA_LT; } if (!rowActualReadFromService.IsHALNull()) { rowForShowOnWeb.HAL = rowActualReadFromService.HAL; } if (!rowActualReadFromService.IsHDGNull()) { rowForShowOnWeb.HDG = rowActualReadFromService.HDG; } if (!rowActualReadFromService.IsORDERNull()) { rowForShowOnWeb.ORDER = rowActualReadFromService.ORDER; } if (!rowActualReadFromService.IsREMARKNull()) { rowForShowOnWeb.REMARK = rowActualReadFromService.REMARK; } if (!rowActualReadFromService.IsS2CITNull()) { rowForShowOnWeb.S2CIT = rowActualReadFromService.S2CIT; } if (!rowActualReadFromService.IsS2Null()) { rowForShowOnWeb.S2 = rowActualReadFromService.S2; } if (!rowActualReadFromService.IsSTANDNull()) { rowForShowOnWeb.STAND = rowActualReadFromService.STAND; } ArriveHistoryDataFromFile.AddArriveWebRow(rowForShowOnWeb); } string fileName = Utils.CreatePhysicalFileName(Constants.FileName.ArriveShow); Utils.DataTableWriteToFile(fileName, ArriveHistoryDataFromFile); } return(ArriveHistoryDataFromFile); }
public Data_Schema.ArriveShowDataTable ArriveData() { Data_Schema.ArriveShowDataTable tableToShow = new Data_Schema.ArriveShowDataTable(); Dictionary <long, ShareCodeArrive> shareCodeDictionary = new Dictionary <long, ShareCodeArrive>(); Hashtable ht = new Hashtable(); Data_Schema.ArriveWebDataTable sourceTableFromWebAndCache = GetAllArrival(); if (sourceTableFromWebAndCache == null) { logger.Error(Constants.LoggerMessages.ProxyWebSourceError, Constants.CommonConst.TextArrive); sourceTableFromWebAndCache = ArriveReadHistoryFromFile(true); } Data_Schema.ArriveShowRow rowToShow; foreach (Data_Schema.ArriveWebRow rowSourceTableFromWebAndCache in sourceTableFromWebAndCache.Rows) { switch (rowSourceTableFromWebAndCache.ORDER) { case 1: rowToShow = tableToShow.NewArriveShowRow(); if (shareCodeDictionary.ContainsKey(rowSourceTableFromWebAndCache.FLIGHTID)) { shareCodeDictionary[rowSourceTableFromWebAndCache.FLIGHTID].MASTERROW = rowToShow; } else { shareCodeDictionary.Add(rowSourceTableFromWebAndCache.FLIGHTID, new ShareCodeArrive(rowToShow)); } tableToShow.AddArriveShowRow(CopyLineDeparture(rowSourceTableFromWebAndCache, rowToShow)); break; case 0: tableToShow.AddArriveShowRow(CopyLineDeparture(rowSourceTableFromWebAndCache, tableToShow.NewArriveShowRow())); break; case 2: if (shareCodeDictionary.ContainsKey(rowSourceTableFromWebAndCache.PARID)) { shareCodeDictionary[rowSourceTableFromWebAndCache.PARID].IATAICAO.Add(rowSourceTableFromWebAndCache.IATAICAO); shareCodeDictionary[rowSourceTableFromWebAndCache.PARID].ICAO_AIR.Add(rowSourceTableFromWebAndCache.ICAO_AIR); shareCodeDictionary[rowSourceTableFromWebAndCache.PARID].FLGTNUM.Add(rowSourceTableFromWebAndCache.FLGTNUM); } else { shareCodeDictionary.Add(rowSourceTableFromWebAndCache.PARID, new ShareCodeArrive(rowSourceTableFromWebAndCache.IATAICAO, rowSourceTableFromWebAndCache.ICAO_AIR, rowSourceTableFromWebAndCache.FLGTNUM)); } break; default: logger.Warn(Constants.LoggerMessages.ProxyOrderBadValue, Constants.CommonConst.TextDeparture, rowSourceTableFromWebAndCache.PARID); break; } } foreach (ShareCodeArrive shareCode in shareCodeDictionary.Values) { if (shareCode.MASTERROW != null) { shareCode.MASTERROW.FLGTSHARE = Utils.ConvertListToString(shareCode.FLGTNUM, Constants.CommonConst.SelectorNewLine); shareCode.MASTERROW.ICAO_AIR = Utils.ConvertListToStringICAO(shareCode.MASTERROW.IATAICAO, shareCode.MASTERROW.ICAO_AIR, shareCode.IATAICAO, shareCode.ICAO_AIR, Constants.CommonConst.SelectorDash, Constants.CommonConst.SelectorNewLine); } } tableToShow.AddArriveShowRow(-1, "", "", "", DateTime.Now, DateTime.Now, DateTime.Now, "", "", "", "", "", "", "", "", "", "", "", ""); tableToShow.DefaultView.Sort = "TIME_LT"; tableToShow.DefaultView.ApplyDefaultSort = true; return(tableToShow); }
/// <summary> /// Convert arrival string to desired DataTable /// </summary> /// <param name="dataReadFromWebInXMLFormat">Incoming stream</param> /// <returns>DataTable or DataTable.Empty when no data to parse or error ocure</returns> internal Data_Schema.ArriveWebDataTable ConvertToArrive(string dataReadFromWebInXMLFormat) { Data_Schema.ArriveWebDataTable tableConvertedFromXML = new Data_Schema.ArriveWebDataTable(); Data_Schema.ArriveWebRow rowCinvertedFromXML; XmlDocument xmlDocumentReadFromService = new XmlDocument(); xmlDocumentReadFromService.LoadXml(dataReadFromWebInXMLFormat); XmlNode xRoot = xmlDocumentReadFromService.DocumentElement; XmlNodeList xListContentFromSourceXML = xRoot.SelectNodes("/*/Content"); string actualDate = DateTime.Now.ToString("dd.MM.yyyy"); foreach (XmlNode nodeInContentPartXML in xListContentFromSourceXML) { rowCinvertedFromXML = tableConvertedFromXML.NewArriveWebRow(); if (nodeInContentPartXML.SelectNodes("DATE_LT").Count > 0) { actualDate = nodeInContentPartXML.SelectSingleNode("DATE_LT").InnerText; } foreach (XmlNode xOneRecordInContentPartXML in nodeInContentPartXML.ChildNodes) { switch (xOneRecordInContentPartXML.Name.ToUpper()) { case "FLIGHTID": rowCinvertedFromXML.FLIGHTID = Utils.ConvertStringToLong(xOneRecordInContentPartXML.InnerText, 0L); break; case "TIME_LT": rowCinvertedFromXML.TIME_LT = Utils.ConvertHHMM(xOneRecordInContentPartXML.InnerText, rowCinvertedFromXML.TIME_LT); break; case "DATE_LT": rowCinvertedFromXML.TIME_LT = Utils.ConvertDDMMYYY(xOneRecordInContentPartXML.InnerText, rowCinvertedFromXML.TIME_LT); break; case "ICAO_AIR": rowCinvertedFromXML.ICAO_AIR = xOneRecordInContentPartXML.InnerText; break; case "IATAICAO": rowCinvertedFromXML.IATAICAO = xOneRecordInContentPartXML.InnerText; break; case "FLGTNUM": rowCinvertedFromXML.FLGTNUM = xOneRecordInContentPartXML.InnerText; break; case "ORDER": rowCinvertedFromXML.ORDER = Utils.ConvertStringToInt(xOneRecordInContentPartXML.InnerText, 0); break; case "S1": rowCinvertedFromXML.S1 = xOneRecordInContentPartXML.InnerText; break; case "S1CIT": rowCinvertedFromXML.S1CIT = xOneRecordInContentPartXML.InnerText; break; case "S2": rowCinvertedFromXML.S2 = xOneRecordInContentPartXML.InnerText; break; case "S2CIT": rowCinvertedFromXML.S2CIT = xOneRecordInContentPartXML.InnerText; break; case "HAL": rowCinvertedFromXML.HAL = xOneRecordInContentPartXML.InnerText; break; case "REMARK": rowCinvertedFromXML.REMARK = xOneRecordInContentPartXML.InnerText; break; case "ETA_LT": rowCinvertedFromXML.ETA_LT = Utils.ConvertHHMM(xOneRecordInContentPartXML.InnerText, DateTime.Now); rowCinvertedFromXML.ETA_LT = Utils.ConvertDDMMYYY(actualDate, rowCinvertedFromXML.ETA_LT); break; case "HDG": rowCinvertedFromXML.HDG = xOneRecordInContentPartXML.InnerText; break; case "AIRCRFT": rowCinvertedFromXML.AIRCRFT = xOneRecordInContentPartXML.InnerText; break; case "ATA_LT": rowCinvertedFromXML.ATA_LT = Utils.ConvertHHMM(xOneRecordInContentPartXML.InnerText, DateTime.Now); rowCinvertedFromXML.ATA_LT = Utils.ConvertDDMMYYY(actualDate, rowCinvertedFromXML.ATA_LT); break; case "PARID": rowCinvertedFromXML.PARID = Utils.ConvertStringToLong(xOneRecordInContentPartXML.InnerText, 0L); break; case "STAND": rowCinvertedFromXML.STAND = xOneRecordInContentPartXML.InnerText; break; default: logger.Warn(Constants.LoggerMessages.ProxyXmlNodeName, xOneRecordInContentPartXML.Name, xOneRecordInContentPartXML.InnerText); break; } } tableConvertedFromXML.AddArriveWebRow(rowCinvertedFromXML); } return(tableConvertedFromXML); }