[chronojump] Less open/close db after jump



commit b8412ea1e7184b8b391ccee45bf8b02d6c1f1625
Author: Xavier de Blas <xaviblas gmail com>
Date:   Mon Nov 11 13:58:43 2013 +0100

    Less open/close db after jump

 src/exportSession.cs     |    2 +-
 src/gui/chronojump.cs    |    3 ++-
 src/gui/eventExecute.cs  |   16 ++++++++--------
 src/gui/jump.cs          |    2 +-
 src/gui/person.cs        |    2 +-
 src/gui/usefulObjects.cs |   20 ++++++++++++--------
 src/report.cs            |    2 +-
 src/server.cs            |    2 +-
 src/sqlite/jump.cs       |   12 ++++++++----
 src/sqlite/session.cs    |   10 +++++++---
 10 files changed, 42 insertions(+), 29 deletions(-)
---
diff --git a/src/exportSession.cs b/src/exportSession.cs
index 8be303c..c3d75b3 100644
--- a/src/exportSession.cs
+++ b/src/exportSession.cs
@@ -152,7 +152,7 @@ public class ExportSession
        protected virtual void getData() 
        {
                myPersons = SqlitePersonSession.SelectCurrentSessionPersons(mySession.UniqueID);
-               myJumps= SqliteJump.SelectJumps(mySession.UniqueID, -1, "", "");
+               myJumps= SqliteJump.SelectJumps(false, mySession.UniqueID, -1, "", "");
                myJumpsRj = SqliteJumpRj.SelectJumps(mySession.UniqueID, -1, "", "");
                myRuns= SqliteRun.SelectRuns(mySession.UniqueID, -1, "");
                myRunsInterval = SqliteRunInterval.SelectRuns(mySession.UniqueID, -1, "");
diff --git a/src/gui/chronojump.cs b/src/gui/chronojump.cs
index 3c51282..4247c5a 100644
--- a/src/gui/chronojump.cs
+++ b/src/gui/chronojump.cs
@@ -1458,7 +1458,7 @@ public partial class ChronoJumpWindow
        private void fillTreeView_jumps (string filter) {
                string [] myJumps;
        
-               myJumps = SqliteJump.SelectJumps(currentSession.UniqueID, -1, "", "");
+               myJumps = SqliteJump.SelectJumps(false, currentSession.UniqueID, -1, "", "");
                myTreeViewJumps.Fill(myJumps, filter);
 
                expandOrMinimizeTreeView((TreeViewEvent) myTreeViewJumps, treeview_jumps);
@@ -5574,6 +5574,7 @@ Log.WriteLine("7");
                button_activate_chronopics.Sensitive = true;
 Log.WriteLine("8");
                notebook_options.Sensitive = true;
+Log.WriteLine("8.5");
                event_execute_button_update.Sensitive = true;
 
 Log.WriteLine("9");
diff --git a/src/gui/eventExecute.cs b/src/gui/eventExecute.cs
index a747da4..50beb39 100644
--- a/src/gui/eventExecute.cs
+++ b/src/gui/eventExecute.cs
@@ -715,18 +715,18 @@ Log.WriteLine("Preparing reactive A");
                //obtain data
                string [] runs = SqliteRun.SelectRuns(currentSession.UniqueID, event_execute_personID, 
event_execute_eventType);
 
-               double timePersonAVG = SqliteSession.SelectAVGEventsOfAType(currentSession.UniqueID, 
event_execute_personID, event_execute_tableName, event_execute_eventType, "time");
-               double timeSessionAVG = SqliteSession.SelectAVGEventsOfAType(currentSession.UniqueID, -1, 
event_execute_tableName, event_execute_eventType, "time");
+               double timePersonAVG = SqliteSession.SelectAVGEventsOfAType(false, currentSession.UniqueID, 
event_execute_personID, event_execute_tableName, event_execute_eventType, "time");
+               double timeSessionAVG = SqliteSession.SelectAVGEventsOfAType(false, currentSession.UniqueID, 
-1, event_execute_tableName, event_execute_eventType, "time");
 
-               //double distancePersonAVG = SqliteSession.SelectAVGEventsOfAType(currentSession.UniqueID, 
event_execute_personID, event_execute_tableName, event_execute_eventType, "distance");
-               //double distanceSessionAVG = SqliteSession.SelectAVGEventsOfAType(currentSession.UniqueID, 
-1, event_execute_tableName, event_execute_eventType, "distance");
+               //double distancePersonAVG = SqliteSession.SelectAVGEventsOfAType(false, 
currentSession.UniqueID, event_execute_personID, event_execute_tableName, event_execute_eventType, 
"distance");
+               //double distanceSessionAVG = SqliteSession.SelectAVGEventsOfAType(false, 
currentSession.UniqueID, -1, event_execute_tableName, event_execute_eventType, "distance");
                //better to know speed like:
                //SELECT AVG(distance/time) from run; than 
                //SELECT AVG(distance) / SELECT AVG(time) 
                //first is ok, because is the speed AVG
                //2nd is not good because it tries to do an AVG of all distances and times
-               double speedPersonAVG = SqliteSession.SelectAVGEventsOfAType(currentSession.UniqueID, 
event_execute_personID, event_execute_tableName, event_execute_eventType, "distance/time");
-               double speedSessionAVG = SqliteSession.SelectAVGEventsOfAType(currentSession.UniqueID, -1, 
event_execute_tableName, event_execute_eventType, "distance/time");
+               double speedPersonAVG = SqliteSession.SelectAVGEventsOfAType(false, currentSession.UniqueID, 
event_execute_personID, event_execute_tableName, event_execute_eventType, "distance/time");
+               double speedSessionAVG = SqliteSession.SelectAVGEventsOfAType(false, currentSession.UniqueID, 
-1, event_execute_tableName, event_execute_eventType, "distance/time");
 
                double maxValue = 0;
                double minValue = 0;
@@ -909,9 +909,9 @@ Log.WriteLine("Preparing reactive A");
                string [] rts = SqliteReactionTime.SelectReactionTimes(currentSession.UniqueID, 
event_execute_personID);
 
                double timePersonAVG = SqliteSession.SelectAVGEventsOfAType(
-                               currentSession.UniqueID, event_execute_personID, event_execute_tableName, 
event_execute_eventType, "time");
+                               false, currentSession.UniqueID, event_execute_personID, 
event_execute_tableName, event_execute_eventType, "time");
                double timeSessionAVG = SqliteSession.SelectAVGEventsOfAType(
-                               currentSession.UniqueID, -1, event_execute_tableName, 
event_execute_eventType, "time");
+                               false, currentSession.UniqueID, -1, event_execute_tableName, 
event_execute_eventType, "time");
 
                double maxValue = 0;
                double minValue = 0;
diff --git a/src/gui/jump.cs b/src/gui/jump.cs
index e422ea2..0d47af3 100644
--- a/src/gui/jump.cs
+++ b/src/gui/jump.cs
@@ -1669,7 +1669,7 @@ public class JumpsMoreWindow : EventMoreWindow
        }
 
        protected override string [] findTestTypesInSessions() {
-               return SqliteJump.SelectJumps(-1, -1, "", selectedEventName); 
+               return SqliteJump.SelectJumps(false, -1, -1, "", selectedEventName); 
        }
        
        void on_button_cancel_clicked (object o, EventArgs args)
diff --git a/src/gui/person.cs b/src/gui/person.cs
index 13aa9a6..2b72337 100644
--- a/src/gui/person.cs
+++ b/src/gui/person.cs
@@ -1607,7 +1607,7 @@ public class PersonAddModifyWindow
                        //if weight has changed
                        if(!adding && (double) spinbutton_weight.Value != weightIni) {
                                //see if this person has done jumps with weight
-                               string [] myJumpsNormal = SqliteJump.SelectJumps(currentSession.UniqueID, 
currentPerson.UniqueID, "withWeight", "");
+                               string [] myJumpsNormal = SqliteJump.SelectJumps(false, 
currentSession.UniqueID, currentPerson.UniqueID, "withWeight", "");
                                string [] myJumpsReactive = SqliteJumpRj.SelectJumps(currentSession.UniqueID, 
currentPerson.UniqueID, "withWeight", "");
 
                                if(myJumpsNormal.Length > 0 || myJumpsReactive.Length > 0) {
diff --git a/src/gui/usefulObjects.cs b/src/gui/usefulObjects.cs
index d20086b..6c09d85 100644
--- a/src/gui/usefulObjects.cs
+++ b/src/gui/usefulObjects.cs
@@ -71,41 +71,45 @@ public class PrepareEventGraphJumpSimple {
 
        public PrepareEventGraphJumpSimple(double tv, double tc, int sessionID, int personID, string table, 
string type) 
        {
+
+               Sqlite.Open();
+
                //select data from SQL to update graph  
-               jumpsAtSQL = SqliteJump.SelectJumps(
-                               sessionID, personID, "", type);
+               jumpsAtSQL = SqliteJump.SelectJumps(true, sessionID, personID, "", type);
 
                tvPersonAVGAtSQL = SqliteSession.SelectAVGEventsOfAType(
-                               sessionID, personID, 
+                               true, sessionID, personID, 
                                table, type, "TV");
                tvSessionAVGAtSQL = SqliteSession.SelectAVGEventsOfAType(
-                               sessionID, -1, table, type, "TV");
+                               true, sessionID, -1, table, type, "TV");
 
                //need to calculate height also, because:
                //it's different to have mean of tv and then calculate height of that mean
                //than have every height and then calculate the mean
 
                heightPersonAVGAtSQL = SqliteSession.SelectAVGEventsOfAType(
-                               sessionID, personID, 
+                               true, sessionID, personID, 
                                table, type, "100*4.9*(TV/2)*(TV/2)");
                heightSessionAVGAtSQL = SqliteSession.SelectAVGEventsOfAType(
-                               sessionID, -1, table, type, "100*4.9*(TV/2)*(TV/2)");
+                               true, sessionID, -1, table, type, "100*4.9*(TV/2)*(TV/2)");
 
 
                tcPersonAVGAtSQL = 0; 
                tcSessionAVGAtSQL = 0; 
                if(tc > 0) {
                        tcPersonAVGAtSQL = SqliteSession.SelectAVGEventsOfAType(
-                                       sessionID, personID, 
+                                       true, sessionID, personID, 
                                        table, type, "TC");
                        tcSessionAVGAtSQL = SqliteSession.SelectAVGEventsOfAType(
-                                       sessionID, -1, table, type, "TC");
+                                       true, sessionID, -1, table, type, "TC");
                }
 
                //end of select data from SQL to update graph   
                        
                this.tv = tv;
                this.tc = tc;
+               
+               Sqlite.Close();
        }
 
        ~PrepareEventGraphJumpSimple() {}
diff --git a/src/report.cs b/src/report.cs
index d8634f3..cf4ce9c 100644
--- a/src/report.cs
+++ b/src/report.cs
@@ -120,7 +120,7 @@ public class Report : ExportSession
                        myPersons = SqlitePersonSession.SelectCurrentSessionPersons(sessionID);
                }
                if(ShowSimpleJumps) {
-                       myJumps= SqliteJump.SelectJumps(sessionID, -1, "", "");
+                       myJumps= SqliteJump.SelectJumps(false, sessionID, -1, "", "");
                }
                if(ShowReactiveJumps) {
                        myJumpsRj = SqliteJumpRj.SelectJumps(sessionID, -1, "", "");
diff --git a/src/server.cs b/src/server.cs
index 570724e..648f37f 100644
--- a/src/server.cs
+++ b/src/server.cs
@@ -252,7 +252,7 @@ public class Server
                                int countE = 0;                                 
                                int countS = 0;                                 
 
-                               string [] jumps = SqliteJump.SelectJumps(currentSession.UniqueID, 
person.UniqueID, "", "");
+                               string [] jumps = SqliteJump.SelectJumps(false, currentSession.UniqueID, 
person.UniqueID, "", "");
                                Sqlite.Open();
                                foreach(string myJump in jumps) {
                                        string [] js = myJump.Split(new char[] {':'});
diff --git a/src/sqlite/jump.cs b/src/sqlite/jump.cs
index 7ebd7a4..79f7464 100644
--- a/src/sqlite/jump.cs
+++ b/src/sqlite/jump.cs
@@ -97,8 +97,11 @@ class SqliteJump : Sqlite
        //if all sessions, put -1 in sessionID
        //if all persons, put -1 in personID
        //if all types put, "" in filterType
-       public static string[] SelectJumps(int sessionID, int personID, string filterWeight, string 
filterType) 
+       public static string[] SelectJumps(bool dbconOpened, int sessionID, int personID, string 
filterWeight, string filterType) 
        {
+               if(!dbconOpened)
+                       dbcon.Open();
+
                string tp = Constants.PersonTable;
                string tps = Constants.PersonSessionTable;
 
@@ -118,7 +121,6 @@ class SqliteJump : Sqlite
                if(filterType != "")
                        filterTypeString = " AND jump.type == '" + filterType + "' ";
 
-               dbcon.Open();
                dbcmd.CommandText = "SELECT " + tp + ".name, jump.*, " + tps + ".weight " +
                        " FROM " + tp + ", jump, " + tps + 
                        " WHERE " + tp + ".uniqueID == jump.personID " + 
@@ -140,7 +142,6 @@ class SqliteJump : Sqlite
 
                int count = new int();
                count = 0;
-
                
                while(reader.Read()) {
 
@@ -162,7 +163,10 @@ class SqliteJump : Sqlite
                }
 
                reader.Close();
-               dbcon.Close();
+               
+               if(!dbconOpened)
+                       dbcon.Close();
+
 
                string [] myJumps = new string[count];
                count =0;
diff --git a/src/sqlite/session.cs b/src/sqlite/session.cs
index 0a33ca9..ef5b055 100644
--- a/src/sqlite/session.cs
+++ b/src/sqlite/session.cs
@@ -537,8 +537,11 @@ class SqliteSession : Sqlite
 
        //called from gui/event.cs for doing the graph
        //we need to know the avg of events of a type (SJ, CMJ, free (pulse).. of a person, or of all persons 
on the session
-       public static double SelectAVGEventsOfAType(int sessionID, int personID, string table, string type, 
string valueToSelect) 
+       public static double SelectAVGEventsOfAType(bool dbconOpened, int sessionID, int personID, string 
table, string type, string valueToSelect) 
        {
+               if(!dbconOpened)
+                       dbcon.Open();
+
                //if personIDString == -1, the applies for all persons
                
                string personIDString = "";
@@ -546,7 +549,6 @@ class SqliteSession : Sqlite
                        personIDString = " AND personID == " + personID; 
 
                
-               dbcon.Open();
                dbcmd.CommandText = "SELECT AVG(" + valueToSelect + ")" +
                        " FROM " + table +                              
                        " WHERE sessionID == " + sessionID + 
@@ -566,7 +568,9 @@ class SqliteSession : Sqlite
                        myReturn = Convert.ToDouble(Util.ChangeDecimalSeparator(reader[0].ToString()));
                }
                reader.Close();
-               dbcon.Close();
+               
+               if(!dbconOpened)
+                       dbcon.Close();
 
                if (found) {
                        return myReturn;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]