Пример #1
0
        /// <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);
        }
Пример #2
0
        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());
        }
Пример #3
0
 /// <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);
 }
Пример #4
0
        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);
        }
Пример #5
0
        /// <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);
        }