Example #1
0
        /// <summary>
        /// Query the airport statistics: top destinations and airline share
        /// </summary>
        /// <param name="dataSrc">The data source for the query: T100, TwData, KrData, etc.</param>
        public static string QueryAirportStat(string dataSrc, string year, string airport, string locale)
        {
            // Get the meta data of specific data source
            ADataSourceMetaData metaData = null;

            if (!DataSourceRegister.Register.TryGetValue(dataSrc, out metaData))
            {
                return("");
            }

            NpgsqlConnection conn = null;
            string           res  = "";

            try {
                conn = new NpgsqlConnection(ASTDatabase.connStr2);
                conn.Open();

                string[]      fields   = new string[] { Utils.DoubleQuoteStr("AIRLINE"), Utils.DoubleQuoteStr("DEST"), Utils.DoubleQuoteStr("PAX"), Utils.DoubleQuoteStr("FREIGHT") };
                string        fieldStr = String.Join(",", fields);
                string        sql      = String.Format(@"SELECT {0} FROM ""{1}"" WHERE {2}", fieldStr, metaData.SummaryTableName, ASTDatabase.MakeWhere(year, "", airport, ""));
                NpgsqlCommand command  = new NpgsqlCommand(sql, conn);

                NpgsqlDataReader dr     = command.ExecuteReader();
                List <RouteStat> routes = new List <RouteStat>();

                while (dr.Read())
                {
                    RouteStat route = new RouteStat();
                    route.Airline = dr["AIRLINE"].ToString();
                    route.Dest    = dr["DEST"].ToString();
                    route.Pax     = metaData.HasPaxData ? Convert.ToInt32(dr["PAX"]) : 0;
                    route.Freight = metaData.HasFreightData ? Convert.ToInt32(dr["FREIGHT"]) : 0;
                    routes.Add(route);
                }

                string[] regions = new string[] { "All", "International", "Domestic" };
                foreach (string region in regions)
                {
                    if (res != "")
                    {
                        res += ",";
                    }
                    res += Utils.DoubleQuoteStr(region) + ":" + CreateRankByRegion(routes, region, metaData, locale);
                }
                return("{" + res + "}");
            }  finally {
                conn.Close();
            }
            return("");
        }
Example #2
0
        private static void AddFlowToDict(Dictionary <string, int> dictDest, Dictionary <string, int> dictAirline, RouteStat route, Func <RouteStat, int> getFlow)
        {
            if (getFlow(route) > 0)
            {
                if (!dictDest.ContainsKey(route.Dest))
                {
                    dictDest[route.Dest] = 0;
                }
                dictDest[route.Dest] += getFlow(route);

                if (!dictAirline.ContainsKey(route.Airline))
                {
                    dictAirline[route.Airline] = 0;
                }
                dictAirline[route.Airline] += getFlow(route);
            }
        }