예제 #1
0
        /// <summary>
        /// Creates remote filename on vms server
        /// </summary>
        /// <param name="user"></param>
        /// <param name="db"></param>
        /// <param name="autoImport">use path to automated importing</param>
        /// <returns></returns>
        public static string CreateRemoteFileName(string user, HydrometDataBase db, bool autoImport = false)
        {
            string prefix = "huser1:[edits]";

            if (autoImport)
            {
                prefix = "huser1:[edits.import]";
            }

            string t = DateTime.Now.ToString("MMMdyyyyHHmmss");
            string remoteFilename = prefix + "edits_" + user + t + ".txt";

            if (db == HydrometDataBase.MPoll)
            {
                remoteFilename = prefix + "month_" + user + t + ".txt";
            }
            if (db == HydrometDataBase.Dayfiles)
            {
                remoteFilename = prefix + "instant_" + user + t + ".txt";
            }
            if (db == HydrometDataBase.Archives)
            {
                remoteFilename = prefix + "daily_" + user + t + ".txt";
            }
            return(remoteFilename.ToLower());
        }
예제 #2
0
        private void ParseCommand(string cmd, HydrometDataBase defaultDataBase)
        {
            if (defaultDataBase == HydrometDataBase.Archives)
            {
                defaultInterval = "daily";
            }
            if (defaultDataBase == HydrometDataBase.Dayfiles)
            {
                defaultInterval = "instant";
            }
            if (defaultDataBase == HydrometDataBase.MPoll)
            {
                defaultInterval = "mpoll";
            }

            // look for title prefixed with #
            Title = "";
            var idx = cmd.IndexOf("#");

            if (idx >= 0)
            {
                Title = cmd.Substring(idx + 1);
                cmd   = cmd.Substring(0, idx);
            }

            string pattern = "((?<prefix>\\w+)\\:\\s*)?(?<cbtt>\\w+)\\s+(?<pcode>[A-Za-z0-9\\-_\\.]+)(\\s*\\,|\\s*$)";
            var    mc      = Regex.Matches(cmd, pattern, RegexOptions.IgnorePatternWhitespace);

            for (int i = 0; i < mc.Count; i++)
            {
                m_cbtt.Add(mc[i].Groups["cbtt"].ToString());

                var prefix = mc[i].Groups["prefix"].ToString().Trim();
                if (prefix == "")
                {
                    prefix = defaultInterval;
                }

                m_interval.Add(prefix);

                m_pcode.Add(mc[i].Groups["pcode"].ToString());
            }
        }
예제 #3
0
        private static string[] GetParameters(string cbtt, HydrometDataBase db)
        {
            var rval = new string[] { };

            if (db == HydrometDataBase.Archives)
            {
                rval = HydrometInfoUtility.ArchiveParameters(cbtt);
            }
            if (db == HydrometDataBase.Dayfiles)
            {
                rval = DayfileParameters(cbtt);
                if (rval.Length == 0)
                {
                    return(GetParameters(cbtt, TimeInterval.Irregular));
                }
            }
            if (db == HydrometDataBase.MPoll)
            {
                rval = MpollParameters(cbtt);
            }


            return(rval);
        }
예제 #4
0
        /// <summary>
        /// Expand simplified query
        /// BOII MX,MN,MM
        /// is translated to
        /// BOII MX, BOII MN, BOII MM
        ///
        /// GREY
        /// is translated to
        /// GREY GH, GREY Q
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public static string ExpandQuery(string query, HydrometDataBase db)
        {
            var rval = new List <string>();


            string title = "";
            var    idx   = query.IndexOf("#");

            if (idx >= 0)
            {
                title = query.Substring(idx);
                query = query.Substring(0, idx);
            }

            if (CbttOnly(query))
            {
                string[] pcodes = GetParameters(query, db);
                if (pcodes.Length > 0)
                {
                    query = query + " " + String.Join(",", pcodes);
                    //   return query;
                }
            }

            string[] pairs = query.Split(',');
            string   cbtt  = "";
            var      pc    = "";

            for (int i = 0; i < pairs.Length; i++)
            {
                string s = pairs[i];
                s = s.Replace(": ", ":");
                var tokens = s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                if (i == 0 && tokens.Length != 2)
                {
                    Logger.WriteLine("query syntax Error: first pair must have cbtt and pcode");
                    return(query);
                }

                if (tokens.Length == 2)
                {
                    cbtt = tokens[0];
                    pc   = tokens[1];
                }
                else if (tokens.Length == 1)
                {
                    pc = tokens[0];
                }
                else if (tokens.Length == 0)
                {
                    continue;
                }

                rval.Add(cbtt + " " + pc);
            }
            string r = String.Join(",", rval.ToArray());

            if (r.Trim() != query.Trim())
            {
                Logger.WriteLine("query expanded to '" + r + "'");
            }
            return(r + title);
        }
예제 #5
0
 public CommandLine(string cmd, HydrometDataBase defaultDataBase)
 {
     this.cmd = cmd;
     ParseCommand(cmd, defaultDataBase);
 }