[chronojump] Fixed bug on deleting person from session. Improved deleting



commit 31f9844edbaac012a833afa49720488b4b2d1961
Author: Xavier de Blas <xaviblas gmail com>
Date:   Sun May 5 14:43:14 2013 +0200

    Fixed bug on deleting person from session. Improved deleting

 glade/chronojump.glade      |    2 +-
 src/gui/chronojump.cs       |   17 ++++++++-----
 src/gui/encoder.cs          |    7 +++--
 src/gui/jump.cs             |    2 +-
 src/gui/pulse.cs            |    2 +-
 src/gui/run.cs              |    2 +-
 src/sqlite/main.cs          |   14 +++++++----
 src/sqlite/personSession.cs |   53 +++++++++++++++++++++++++++++++++++++++---
 src/sqlite/session.cs       |   26 +++++++++++++++++++++
 9 files changed, 102 insertions(+), 23 deletions(-)
---
diff --git a/glade/chronojump.glade b/glade/chronojump.glade
index 5d665f3..26f831d 100644
--- a/glade/chronojump.glade
+++ b/glade/chronojump.glade
@@ -11975,7 +11975,7 @@ on current Chronojump version.</property>
                                 <property name="can_focus">False</property>
                                 <property name="top_padding">4</property>
                                 <child>
-                                  <widget class="GtkNotebook" id="notebook2">
+                                  <widget class="GtkNotebook" id="notebook_encoder_sup">
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="tab_hborder">10</property>
diff --git a/src/gui/chronojump.cs b/src/gui/chronojump.cs
index 5daf766..87b2e7e 100644
--- a/src/gui/chronojump.cs
+++ b/src/gui/chronojump.cs
@@ -4814,7 +4814,7 @@ Console.WriteLine("X");
                Log.WriteLine("accept delete this jump");
                int id = myTreeViewJumps.EventSelectedID;
                
-               Sqlite.Delete(Constants.JumpTable, id);
+               Sqlite.Delete(false, Constants.JumpTable, id);
                
                myTreeViewJumps.DelEvent(id);
                showHideActionEventButtons(false, "Jump");
@@ -4840,7 +4840,7 @@ Console.WriteLine("X");
                Log.WriteLine("accept delete this jump");
                int id = myTreeViewJumpsRj.EventSelectedID;
                
-               Sqlite.Delete(Constants.JumpRjTable, id);
+               Sqlite.Delete(false, Constants.JumpRjTable, id);
                
                myTreeViewJumpsRj.DelEvent(id);
                showHideActionEventButtons(false, "JumpRj");
@@ -4897,7 +4897,7 @@ Console.WriteLine("X");
                Log.WriteLine("accept delete this run");
                int id = myTreeViewRuns.EventSelectedID;
                
-               Sqlite.Delete(Constants.RunTable, id);
+               Sqlite.Delete(false, Constants.RunTable, id);
                
                myTreeViewRuns.DelEvent(id);
                showHideActionEventButtons(false, "Run");
@@ -4919,7 +4919,7 @@ Console.WriteLine("X");
                Log.WriteLine("accept delete this run");
                int id = myTreeViewRunsInterval.EventSelectedID;
                
-               Sqlite.Delete(Constants.RunIntervalTable, id);
+               Sqlite.Delete(false, Constants.RunIntervalTable, id);
                
                myTreeViewRunsInterval.DelEvent(id);
                showHideActionEventButtons(false, "RunInterval");
@@ -4959,7 +4959,7 @@ Console.WriteLine("X");
                Log.WriteLine("accept delete this reaction time");
                int id = myTreeViewReactionTimes.EventSelectedID;
                
-               Sqlite.Delete(Constants.ReactionTimeTable, id);
+               Sqlite.Delete(false, Constants.ReactionTimeTable, id);
                
                myTreeViewReactionTimes.DelEvent(id);
                showHideActionEventButtons(false, "ReactionTime");
@@ -4996,7 +4996,7 @@ Console.WriteLine("X");
                Log.WriteLine("accept delete this pulse");
                int id = myTreeViewPulses.EventSelectedID;
                
-               Sqlite.Delete(Constants.PulseTable, id);
+               Sqlite.Delete(false, Constants.PulseTable, id);
                
                myTreeViewPulses.DelEvent(id);
                showHideActionEventButtons(false, "Pulse");
@@ -5031,7 +5031,7 @@ Console.WriteLine("X");
                Log.WriteLine("accept delete this multi chronopic");
                int id = myTreeViewMultiChronopic.EventSelectedID;
                
-               Sqlite.Delete(Constants.MultiChronopicTable, id);
+               Sqlite.Delete(false, Constants.MultiChronopicTable, id);
                
                myTreeViewMultiChronopic.DelEvent(id);
                showHideActionEventButtons(false, Constants.MultiChronopicName);
@@ -5408,6 +5408,7 @@ Console.WriteLine("X");
                notebook_execute.Sensitive = false;
                notebook_results.Sensitive = false;
                notebook_options.Sensitive = false;
+               notebook_encoder_sup.Sensitive = false;
                vbox_stats.Sensitive = false;
                frame_share_data.Sensitive = false;
                
@@ -5447,6 +5448,7 @@ Console.WriteLine("X");
                notebook_execute.Sensitive = false;
                notebook_results.Sensitive = false;
                notebook_options.Sensitive = false;
+               notebook_encoder_sup.Sensitive = false;
                treeview_persons.Sensitive = false;
                
                menuPersonSelectedSensitive(false);
@@ -5464,6 +5466,7 @@ Console.WriteLine("X");
                notebook_execute.Sensitive = true;
                notebook_results.Sensitive = true;
                notebook_options.Sensitive = true;
+               notebook_encoder_sup.Sensitive = true;
                treeview_persons.Sensitive = true;
                
                menuPersonSelectedSensitive(true);
diff --git a/src/gui/encoder.cs b/src/gui/encoder.cs
index eb309f6..8c8b8fb 100644
--- a/src/gui/encoder.cs
+++ b/src/gui/encoder.cs
@@ -58,6 +58,7 @@ public partial class ChronoJumpWindow
        [Widget] Gtk.Button button_encoder_update_signal;
        [Widget] Gtk.Button button_encoder_delete_signal;
        
+       [Widget] Gtk.Notebook notebook_encoder_sup;
        [Widget] Gtk.Notebook notebook_encoder_capture;
        [Widget] Gtk.DrawingArea encoder_capture_drawingarea;
        
@@ -539,7 +540,7 @@ public partial class ChronoJumpWindow
                //remove the file
                bool deletedOk = Util.FileDelete(eSQL.GetFullURL(false));       //don't convertPathToR
                if(deletedOk)  {
-                       Sqlite.Delete(Constants.EncoderTable, Convert.ToInt32(uniqueID));
+                       Sqlite.Delete(false, Constants.EncoderTable, Convert.ToInt32(uniqueID));
                        updateUserCurvesLabelsAndCombo();
                }
        }
@@ -887,7 +888,7 @@ public partial class ChronoJumpWindow
                        //remove the file
                        bool deletedOk = Util.FileDelete(eSQL.GetFullURL(false));       //don't convertPathToR
                        if(deletedOk)  
-                               Sqlite.Delete(Constants.EncoderTable, Convert.ToInt32(uniqueID));
+                               Sqlite.Delete(false, Constants.EncoderTable, Convert.ToInt32(uniqueID));
 
                        //genericWin selected row is deleted, unsensitive the "load" button
                        genericWin.SetButtonAcceptSensitive(false);
@@ -1071,7 +1072,7 @@ public partial class ChronoJumpWindow
                //remove the file
                bool deletedOk = Util.FileDelete(eSQL.GetFullURL(false));       //don't convertPathToR
                if(deletedOk) {
-                       Sqlite.Delete(Constants.EncoderTable, Convert.ToInt32(encoderSignalUniqueID));
+                       Sqlite.Delete(false, Constants.EncoderTable, Convert.ToInt32(encoderSignalUniqueID));
                        encoderSignalUniqueID = "-1";
                        image_encoder_capture.Sensitive = false;
                        treeviewEncoderCaptureRemoveColumns();
diff --git a/src/gui/jump.cs b/src/gui/jump.cs
index 77538ec..e422ea2 100644
--- a/src/gui/jump.cs
+++ b/src/gui/jump.cs
@@ -952,7 +952,7 @@ public class RepairJumpRjWindow
                }
 
                //save it deleting the old first for having the same uniqueID
-               Sqlite.Delete(Constants.JumpRjTable, jumpRj.UniqueID);
+               Sqlite.Delete(false, Constants.JumpRjTable, jumpRj.UniqueID);
                jumpRj.InsertAtDB(false, Constants.JumpRjTable); 
                /*
                SqliteJump.InsertRj("jumpRj", jumpRj.UniqueID.ToString(), jumpRj.PersonID, jumpRj.SessionID, 
diff --git a/src/gui/pulse.cs b/src/gui/pulse.cs
index bfc55cc..a760835 100644
--- a/src/gui/pulse.cs
+++ b/src/gui/pulse.cs
@@ -462,7 +462,7 @@ public class RepairPulseWindow
                myPulse.TimesString = timeString;
 
                //save it deleting the old first for having the same uniqueID
-               Sqlite.Delete(Constants.PulseTable,myPulse.UniqueID);
+               Sqlite.Delete(false, Constants.PulseTable,myPulse.UniqueID);
 
                myPulse.InsertAtDB(false, Constants.PulseTable);
                /*
diff --git a/src/gui/run.cs b/src/gui/run.cs
index e167c39..2f366e8 100644
--- a/src/gui/run.cs
+++ b/src/gui/run.cs
@@ -841,7 +841,7 @@ public class RepairRunIntervalWindow
                }
 
                //save it deleting the old first for having the same uniqueID
-               Sqlite.Delete(Constants.RunIntervalTable, runInterval.UniqueID);
+               Sqlite.Delete(false, Constants.RunIntervalTable, runInterval.UniqueID);
                runInterval.InsertAtDB(false, Constants.RunIntervalTable); 
                /*
                SqliteRun.InsertInterval(false, Constants.RunIntervalTable, runInterval.UniqueID.ToString(), 
diff --git a/src/sqlite/main.cs b/src/sqlite/main.cs
index af87036..3747010 100644
--- a/src/sqlite/main.cs
+++ b/src/sqlite/main.cs
@@ -1749,8 +1749,8 @@ class Sqlite
 
                foreach(int personID in myArray) {
                        //if person is not in other sessions, delete it from DB
-                       if(! SqlitePersonSession.PersonExistsInPS(personID))
-                               Delete(Constants.PersonTable, personID);
+                       if(! SqlitePersonSession.PersonExistsInPS(true, personID))
+                               Delete(true, Constants.PersonTable, personID);
                }
        }
                                
@@ -2150,14 +2150,18 @@ Console.WriteLine("5" + tableName);
                return myReturn;
        }
 
-       public static void Delete(string tableName, int uniqueID)
+       public static void Delete(bool dbconOpened, string tableName, int uniqueID)
        {
-               dbcon.Open();
+               if( ! dbconOpened)
+                       dbcon.Open();
+
                dbcmd.CommandText = "Delete FROM " + tableName +
                        " WHERE uniqueID == " + uniqueID.ToString();
                Log.WriteLine(dbcmd.CommandText.ToString());
                dbcmd.ExecuteNonQuery();
-               dbcon.Close();
+               
+               if( ! dbconOpened)
+                       dbcon.Close();
        }
 
 
diff --git a/src/sqlite/personSession.cs b/src/sqlite/personSession.cs
index b2c03db..3228c56 100644
--- a/src/sqlite/personSession.cs
+++ b/src/sqlite/personSession.cs
@@ -350,14 +350,20 @@ class SqlitePersonSession : Sqlite
        {
                dbcon.Open();
 
+               //1.- first delete in personSession77 at this session
+
                //delete relations (existance) within persons and sessions in this session
-               dbcmd.CommandText = "Delete FROM " + Constants.PersonSessionTable +" WHERE sessionID == " + 
sessionID +
+               dbcmd.CommandText = "Delete FROM " + Constants.PersonSessionTable + 
+                       " WHERE sessionID == " + sessionID +
                        " AND personID == " + personID;
                dbcmd.ExecuteNonQuery();
 
+               //2.- Now, it's not in this personSession77 in other sessions, delete if from DB
+
                //if person is not in other sessions, delete it from DB
-               if(! PersonExistsInPS(Convert.ToInt32(personID))) {
-                       Delete(Constants.PersonTable, Convert.ToInt32(personID));
+               if(! PersonExistsInPS(true, Convert.ToInt32(personID))) {
+                       //this will open and close DB connection
+                       Delete(true, Constants.PersonTable, Convert.ToInt32(personID));
 
                        //delete photos if any
                        if(File.Exists(Util.GetPhotoFileName(false, Convert.ToInt32(personID))))
@@ -365,6 +371,8 @@ class SqlitePersonSession : Sqlite
                        if(File.Exists(Util.GetPhotoFileName(true, Convert.ToInt32(personID))))
                                File.Delete(Util.GetPhotoFileName(true, Convert.ToInt32(personID)));
                }
+
+               //3.- Delete tests
                                
                //delete normal jumps
                dbcmd.CommandText = "Delete FROM jump WHERE sessionID == " + sessionID +
@@ -406,13 +414,46 @@ class SqlitePersonSession : Sqlite
                        " AND personID == " + personID;
                        
                dbcmd.ExecuteNonQuery();
+       
+               //delete from encoder
+               dbcmd.CommandText = "Delete FROM " + Constants.EncoderTable + " WHERE sessionID == " + 
sessionID +
+                       " AND personID == " + personID;
+                       
+               dbcmd.ExecuteNonQuery();
                
+
+               //delete encoder signal and curves (and it's videos)
+               ArrayList encoderArray = SqliteEncoder.Select(true, -1, 
+                               Convert.ToInt32(personID), Convert.ToInt32(sessionID), "signal", false);
+               foreach(EncoderSQL eSQL in encoderArray) {
+                       Util.FileDelete(eSQL.GetFullURL(false));        //signal, don't convertPathToR
+                       if(eSQL.future2 != "")
+                               Util.FileDelete(eSQL.future2);          //video
+                       Sqlite.Delete(true, Constants.EncoderTable, Convert.ToInt32(eSQL.uniqueID));
+               }
+               encoderArray = SqliteEncoder.Select(true, -1, 
+                               Convert.ToInt32(personID), Convert.ToInt32(sessionID), "curve", false);
+               foreach(EncoderSQL eSQL in encoderArray) {
+                       Util.FileDelete(eSQL.GetFullURL(false));        //don't convertPathToR
+                       /* commented: curve has no video
+                       if(eSQL.future2 != "")
+                               Util.FileDelete(eSQL.future2);
+                       */
+                       Sqlite.Delete(true, Constants.EncoderTable, Convert.ToInt32(eSQL.uniqueID));
+               }
+                               
                
+               //4.- TODO: delete videos
+
+
                dbcon.Close();
        }
 
-       public static bool PersonExistsInPS(int personID)
+       public static bool PersonExistsInPS(bool dbconOpened, int personID)
        {
+               if( ! dbconOpened)
+                       dbcon.Open();
+
                dbcmd.CommandText = "SELECT * FROM " + Constants.PersonSessionTable + 
                        " WHERE personID == " + personID;
                //Log.WriteLine(dbcmd.CommandText.ToString());
@@ -429,6 +470,10 @@ class SqlitePersonSession : Sqlite
                //Log.WriteLine(string.Format("personID exists = {0}", exists.ToString()));
 
                reader.Close();
+               
+               if( ! dbconOpened)
+                       dbcon.Close();
+
                return exists;
        }
 
diff --git a/src/sqlite/session.cs b/src/sqlite/session.cs
index afe5714..0a33ca9 100644
--- a/src/sqlite/session.cs
+++ b/src/sqlite/session.cs
@@ -618,6 +618,32 @@ class SqliteSession : Sqlite
                dbcmd.CommandText = "Delete FROM " + Constants.MultiChronopicTable + " WHERE sessionID == " + 
uniqueID;
                dbcmd.ExecuteNonQuery();
                
+               //delete from encoder
+               dbcmd.CommandText = "Delete FROM " + Constants.EncoderTable + " WHERE sessionID == " + 
uniqueID;
+                       
+               dbcmd.ExecuteNonQuery();
+               
+
+               //delete encoder signal and curves (and it's videos)
+               ArrayList encoderArray = SqliteEncoder.Select(true, -1, -1, 
+                               Convert.ToInt32(uniqueID), "signal", false);
+               foreach(EncoderSQL eSQL in encoderArray) {
+                       Util.FileDelete(eSQL.GetFullURL(false));        //signal, don't convertPathToR
+                       if(eSQL.future2 != "")
+                               Util.FileDelete(eSQL.future2);          //video
+                       Sqlite.Delete(true, Constants.EncoderTable, Convert.ToInt32(eSQL.uniqueID));
+               }
+               encoderArray = SqliteEncoder.Select(true, -1, -1, 
+                               Convert.ToInt32(uniqueID), "curve", false);
+               foreach(EncoderSQL eSQL in encoderArray) {
+                       Util.FileDelete(eSQL.GetFullURL(false));        //don't convertPathToR
+                       /* commented: curve has no video
+                       if(eSQL.future2 != "")
+                               Util.FileDelete(eSQL.future2);
+                       */
+                       Sqlite.Delete(true, Constants.EncoderTable, Convert.ToInt32(eSQL.uniqueID));
+               }
+                               
                
                dbcon.Close();
        }


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