SqlitePerson.SelectAllPersonEvents C# (CSharp) Method

SelectAllPersonEvents() public static method

public static SelectAllPersonEvents ( int personID ) : ArrayList
personID int
return ArrayList
    public static ArrayList SelectAllPersonEvents(int personID)
    {
        SqliteDataReader reader;
        ArrayList arraySessions = new ArrayList(2);
        ArrayList arrayJumps = new ArrayList(2);
        ArrayList arrayJumpsRj = new ArrayList(2);
        ArrayList arrayRuns = new ArrayList(2);
        ArrayList arrayRunsInterval = new ArrayList(2);
        ArrayList arrayRTs = new ArrayList(2);
        ArrayList arrayPulses = new ArrayList(2);
        ArrayList arrayMCs = new ArrayList(2);
        ArrayList arrayEncS = new ArrayList(2);
        ArrayList arrayEncC = new ArrayList(2);

        string tps = Constants.PersonSessionTable;

        Sqlite.Open();

        //session where this person is loaded
        dbcmd.CommandText = "SELECT sessionID, session.Name, session.Place, session.Date " +
            " FROM " + tps + ", session " +
            " WHERE personID = " + personID + " AND session.uniqueID == " + tps + ".sessionID " +
            " ORDER BY sessionID";
        LogB.SQL(dbcmd.CommandText.ToString());

        reader = dbcmd.ExecuteReader();
        while(reader.Read()) {
            arraySessions.Add ( reader[0].ToString() + ":" + reader[1].ToString() + ":" +
                    reader[2].ToString() + ":" +
                    UtilDate.FromSql(reader[3].ToString()).ToShortDateString()
                    );
        }
        reader.Close();

        //jumps
        dbcmd.CommandText = "SELECT sessionID, count(*) FROM jump WHERE personID = " + personID +
            " GROUP BY sessionID ORDER BY sessionID";
        LogB.SQL(dbcmd.CommandText.ToString());

        reader = dbcmd.ExecuteReader();
        while(reader.Read()) {
            arrayJumps.Add ( reader[0].ToString() + ":" + reader[1].ToString() );
        }
        reader.Close();

        //jumpsRj
        dbcmd.CommandText = "SELECT sessionID, count(*) FROM jumpRj WHERE personID = " + personID +
            " GROUP BY sessionID ORDER BY sessionID";
        LogB.SQL(dbcmd.CommandText.ToString());

        reader = dbcmd.ExecuteReader();
        while(reader.Read()) {
            arrayJumpsRj.Add ( reader[0].ToString() + ":" + reader[1].ToString() );
        }
        reader.Close();

        //runs
        dbcmd.CommandText = "SELECT sessionID, count(*) FROM run WHERE personID = " + personID +
            " GROUP BY sessionID ORDER BY sessionID";
        LogB.SQL(dbcmd.CommandText.ToString());

        reader = dbcmd.ExecuteReader();
        while(reader.Read()) {
            arrayRuns.Add ( reader[0].ToString() + ":" + reader[1].ToString() );
        }
        reader.Close();

        //runsInterval
        dbcmd.CommandText = "SELECT sessionID, count(*) FROM runInterval WHERE personID = " + personID +
            " GROUP BY sessionID ORDER BY sessionID";
        LogB.SQL(dbcmd.CommandText.ToString());

        reader = dbcmd.ExecuteReader();
        while(reader.Read()) {
            arrayRunsInterval.Add ( reader[0].ToString() + ":" + reader[1].ToString() );
        }
        reader.Close();

        //reaction time
        dbcmd.CommandText = "SELECT sessionID, count(*) FROM reactiontime WHERE personID = " + personID +
            " GROUP BY sessionID ORDER BY sessionID";
        LogB.SQL(dbcmd.CommandText.ToString());

        reader = dbcmd.ExecuteReader();
        while(reader.Read()) {
            arrayRTs.Add ( reader[0].ToString() + ":" + reader[1].ToString() );
        }
        reader.Close();

        //pulses
        dbcmd.CommandText = "SELECT sessionID, count(*) FROM pulse WHERE personID = " + personID +
            " GROUP BY sessionID ORDER BY sessionID";
        LogB.SQL(dbcmd.CommandText.ToString());

        reader = dbcmd.ExecuteReader();
        while(reader.Read()) {
            arrayPulses.Add ( reader[0].ToString() + ":" + reader[1].ToString() );
        }
        reader.Close();

        //MC
        dbcmd.CommandText = "SELECT sessionID, count(*) FROM multiChronopic WHERE personID = " + personID +
            " GROUP BY sessionID ORDER BY sessionID";
        LogB.SQL(dbcmd.CommandText.ToString());

        reader = dbcmd.ExecuteReader();
        while(reader.Read()) {
            arrayMCs.Add ( reader[0].ToString() + ":" + reader[1].ToString() );
        }
        reader.Close();

        //EncS (encoder signal)
        dbcmd.CommandText = "SELECT sessionID, count(*) FROM " + Constants.EncoderTable +
               " WHERE personID == " + personID +
               " AND signalOrCurve == \"signal\" " +
            " GROUP BY sessionID ORDER BY sessionID";
        LogB.SQL(dbcmd.CommandText.ToString());

        reader = dbcmd.ExecuteReader();
        while(reader.Read()) {
            arrayEncS.Add ( reader[0].ToString() + ":" + reader[1].ToString() );
        }
        reader.Close();

        //EncC (encoder curve)
        dbcmd.CommandText = "SELECT sessionID, count(*) FROM " + Constants.EncoderTable +
               " WHERE personID == " + personID +
               " AND signalOrCurve == \"curve\" " +
            " GROUP BY sessionID ORDER BY sessionID";
        LogB.SQL(dbcmd.CommandText.ToString());

        reader = dbcmd.ExecuteReader();
        while(reader.Read()) {
            arrayEncC.Add ( reader[0].ToString() + ":" + reader[1].ToString() );
        }
        reader.Close();

        Sqlite.Close();

        ArrayList arrayAll = new ArrayList(2);
        string tempJumps;
        string tempJumpsRj;
        string tempRuns;
        string tempRunsInterval;
        string tempRTs;
        string tempPulses;
        string tempMCs;
        string tempEncS;
        string tempEncC;
        bool found; 	//using found because a person can be loaded in a session
                //but whithout having done any event yet

        //foreach session where this jumper it's loaded, check which events has
        foreach (string mySession in arraySessions) {
            string [] myStrSession = mySession.Split(new char[] {':'});
            tempJumps = "";
            tempJumpsRj = "";
            tempRuns = "";
            tempRunsInterval = "";
            tempRTs = "";
            tempPulses = "";
            tempMCs = "";
            tempEncS = "";
            tempEncC = "";
            found = false;

            foreach (string myJumps in arrayJumps) {
                string [] myStr = myJumps.Split(new char[] {':'});
                if(myStrSession[0] == myStr[0]) {
                    tempJumps = myStr[1];
                    found = true;
                    break;
                }
            }

            foreach (string myJumpsRj in arrayJumpsRj) {
                string [] myStr = myJumpsRj.Split(new char[] {':'});
                if(myStrSession[0] == myStr[0]) {
                    tempJumpsRj = myStr[1];
                    found = true;
                    break;
                }
            }

            foreach (string myRuns in arrayRuns) {
                string [] myStr = myRuns.Split(new char[] {':'});
                if(myStrSession[0] == myStr[0]) {
                    tempRuns = myStr[1];
                    found = true;
                    break;
                }
            }

            foreach (string myRunsInterval in arrayRunsInterval) {
                string [] myStr = myRunsInterval.Split(new char[] {':'});
                if(myStrSession[0] == myStr[0]) {
                    tempRunsInterval = myStr[1];
                    found = true;
                    break;
                }
            }

            foreach (string myRTs in arrayRTs) {
                string [] myStr = myRTs.Split(new char[] {':'});
                if(myStrSession[0] == myStr[0]) {
                    tempRTs = myStr[1];
                    found = true;
                    break;
                }
            }

            foreach (string myPulses in arrayPulses) {
                string [] myStr = myPulses.Split(new char[] {':'});
                if(myStrSession[0] == myStr[0]) {
                    tempPulses = myStr[1];
                    found = true;
                    break;
                }
            }

            foreach (string myMCs in arrayMCs) {
                string [] myStr = myMCs.Split(new char[] {':'});
                if(myStrSession[0] == myStr[0]) {
                    tempMCs = myStr[1];
                    found = true;
                    break;
                }
            }

            foreach (string myEncS in arrayEncS) {
                string [] myStr = myEncS.Split(new char[] {':'});
                if(myStrSession[0] == myStr[0]) {
                    tempEncS = myStr[1];
                    found = true;
                    break;
                }
            }

            foreach (string myEncC in arrayEncC) {
                string [] myStr = myEncC.Split(new char[] {':'});
                if(myStrSession[0] == myStr[0]) {
                    tempEncC = myStr[1];
                    found = true;
                    break;
                }
            }

            //if has events, write it's data
            if (found) {
                arrayAll.Add (myStrSession[1] + ":" + myStrSession[2] + ":" + 	//session name, place
                        myStrSession[3] + ":" + tempJumps + ":" + 	//sessionDate, jumps
                        tempJumpsRj + ":" + tempRuns + ":" + 		//jumpsRj, Runs
                        tempRunsInterval + ":" + tempRTs + ":" + 	//runsInterval, Reaction times
                        tempPulses + ":" + tempMCs + ":" +		//pulses, MultiChronopic
                        tempEncS + ":" + tempEncC			//encoder signal, encoder curve
                        );
            }
        }

        return arrayAll;
    }