示例#1
0
        public static List <List <string> > ToCSV(bool useall, Prac.API.GenericTracker <RegisterDB> db)
        {
            List <List <string> > all = new List <List <string> > ();

            for (int i = 0; i < db.Count; i++)
            {
                var           user = db[i];
                List <string> row  = new List <string>();
                row.AddRange(new string[] { user.Email, user.FirstName, user.LastName, user.MID });
                if (useall)
                {
                    row.AddRange(new string[] { user.Code, user.Program, user.ParseDate.ToShortDateString() });
                }
                all.Add(row);
            }
            return(all);
        }
示例#2
0
        public static Prac.API.GenericTracker <RegisterDB> Parse(string data, DebugDelegate d, Prac.API.Int32Delegate progress)
        {
            Prac.API.GenericTracker <RegisterDB> db = new Prac.API.GenericTracker <RegisterDB>();
            // get token defs
            var defs = RegisterDB.GetDefs().ToArray();
            // get token stream
            var stream = tokh.GetStream <register_toks>(string.Empty, data, defs, d, progress);
            // strip out everything we don't care about
            var final = tokh.Filter_Keep <register_toks>(stream,
                                                         register_toks.endrecord, register_toks.key_reg_code, register_toks.key_reg_email,
                                                         register_toks.key_reg_firstname, register_toks.key_reg_lastname, register_toks.key_reg_mid, register_toks.key_registration_program,
                                                         register_toks.quotedstring);
            RegisterDB cur         = new RegisterDB();
            int        startrecidx = 0;

            for (int i = 0; i < final.Count; i++)
            {
                var tok  = final[i];
                var next = i < final.Count - 1 ? final[i + 1] : new GenericToken <register_toks>(register_toks.none);
                switch (tok.type)
                {
                case register_toks.key_reg_code:
                {
                    if (next.isToken(register_toks.quotedstring))
                    {
                        cur.Code = next.data.Replace("'", string.Empty);
                    }
                }
                break;

                case register_toks.key_reg_email:
                {
                    if (next.isToken(register_toks.quotedstring))
                    {
                        cur.Email = next.data.Replace("'", string.Empty);
                    }
                }
                break;

                case register_toks.key_registration_program:
                {
                    if (next.isToken(register_toks.quotedstring))
                    {
                        cur.Program = next.data.Replace("'", string.Empty);
                    }
                }
                break;

                case register_toks.key_reg_mid:
                {
                    if (next.isToken(register_toks.quotedstring))
                    {
                        cur.MID = next.data.Replace("'", string.Empty);
                    }
                }
                break;

                case register_toks.key_reg_firstname:
                {
                    if (next.isToken(register_toks.quotedstring))
                    {
                        cur.FirstName = next.data.Replace("'", string.Empty);
                    }
                }
                break;

                case register_toks.key_reg_lastname:
                {
                    if (next.isToken(register_toks.quotedstring))
                    {
                        cur.LastName = next.data.Replace("'", string.Empty);
                    }
                }
                break;

                case register_toks.endrecord:
                {
                    cur.ParseDate = DateTime.Now;
                    if (cur.isValid)
                    {
                        db.addindex(cur.Email, cur);
                        cur = new RegisterDB();
                    }
                    else
                    {
                        if (d != null)
                        {
                            var toks = tokh.ToString <register_toks>(tokh.GetTokensBetween <register_toks>(final, startrecidx, i));
                            d("error between: " + startrecidx + "-" + i + " data: " + toks);
                        }
                        startrecidx = i + 1;
                    }
                }
                break;
                }
            }
            return(db);
        }
示例#3
0
 public static List <List <string> > ToCSV(Prac.API.GenericTracker <RegisterDB> db)
 {
     return(ToCSV(false, db));
 }