[chronojump] Deleting signals deletes related curves (both SQL and files)
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] Deleting signals deletes related curves (both SQL and files)
- Date: Tue, 20 May 2014 17:08:11 +0000 (UTC)
commit c068f1f8fe962f13c9c3019d86892d5f4255125e
Author: Xavier de Blas <xaviblas gmail com>
Date: Tue May 20 19:07:37 2014 +0200
Deleting signals deletes related curves (both SQL and files)
src/gui/encoder.cs | 75 ++++++++++++++++++++++++++++++++++---------------
src/sqlite/encoder.cs | 1 +
src/sqlite/main.cs | 15 ++++++++++
src/util.cs | 8 ++++-
4 files changed, 74 insertions(+), 25 deletions(-)
---
diff --git a/src/gui/encoder.cs b/src/gui/encoder.cs
index 36c14b3..1035a05 100644
--- a/src/gui/encoder.cs
+++ b/src/gui/encoder.cs
@@ -1315,7 +1315,7 @@ public partial class ChronoJumpWindow
protected void on_encoder_load_signal_row_delete_pre (object o, EventArgs args) {
if(askDeletion) {
ConfirmWindow confirmWin = ConfirmWindow.Show(Catalog.GetString(
- "Are you sure you want to delete this signal?"), "", "");
+ "Are you sure you want to delete this signal?"),
Catalog.GetString("Related curves will also be deleted."), "");
confirmWin.Button_accept.Clicked += new
EventHandler(on_encoder_load_signal_row_delete);
} else
on_encoder_load_signal_row_delete (o, args);
@@ -1324,25 +1324,55 @@ public partial class ChronoJumpWindow
protected void on_encoder_load_signal_row_delete (object o, EventArgs args) {
Log.WriteLine("row delete at load signal");
- int uniqueID = genericWin.TreeviewSelectedUniqueID;
- Log.WriteLine(uniqueID.ToString());
+ int signalID = genericWin.TreeviewSelectedUniqueID;
+ Log.WriteLine(signalID.ToString());
//if it's current signal use the delete signal from the gui interface that updates gui
- if(uniqueID == Convert.ToInt32(encoderSignalUniqueID))
+ if(signalID == Convert.ToInt32(encoderSignalUniqueID))
on_button_encoder_delete_signal_accepted (o, args);
else {
EncoderSQL eSQL = (EncoderSQL) SqliteEncoder.Select(
- false, uniqueID, 0, 0, "", false, true)[0];
- //remove the file
- bool deletedOk = Util.FileDelete(eSQL.GetFullURL(false)); //don't convertPathToR
- if(deletedOk)
- Sqlite.Delete(false, Constants.EncoderTable, Convert.ToInt32(uniqueID));
+ false, signalID, 0, 0, "signal", false, true)[0];
+
+ //delete signal and related curves (both from SQL and files)
+ encoderSignalDelete(eSQL.GetFullURL(false), signalID); //don't convertPathToR
//genericWin selected row is deleted, unsensitive the "load" button
genericWin.SetButtonAcceptSensitive(false);
}
genericWin.Delete_row_accepted();
}
+
+ void encoderSignalDelete (string signalURL, int signalID)
+ {
+ //remove signal file
+ bool deletedOk = Util.FileDelete(signalURL);
+
+ //delete signal from encoder table
+ Sqlite.Delete(false, Constants.EncoderTable, signalID);
+
+ //find related curves using encoderSignalCurve table
+ ArrayList linkedCurves = SqliteEncoder.SelectSignalCurve(
+ false, signalID, -1, -1, -1); //DBopened, signal, curve, msStart, msEnd
+
+ //delete related curves: files and records from encoder table
+ foreach(EncoderSignalCurve esc in linkedCurves)
+ {
+ //select related curves to find URL
+ EncoderSQL eSQL = (EncoderSQL) SqliteEncoder.Select(
+ false, esc.curveID, -1, -1, "curve", false, true)[0];
+
+ //delete file
+ Util.FileDelete(eSQL.GetFullURL(false)); //don't convertPathToR
+
+ //delete curve from encoder table
+ Sqlite.Delete(false, Constants.EncoderTable, esc.curveID);
+ }
+
+ //delete related records from encoderSignalCurve table
+ Sqlite.DeleteSelectingField(false, Constants.EncoderSignalCurveTable,
+ "signalID", signalID.ToString());
+ }
void on_button_encoder_export_all_curves_clicked (object o, EventArgs args)
{
@@ -1516,7 +1546,7 @@ public partial class ChronoJumpWindow
{
if(askDeletion) {
ConfirmWindow confirmWin = ConfirmWindow.Show(Catalog.GetString(
- "Are you sure you want to delete this signal?"), "", "");
+ "Are you sure you want to delete this signal?"),
Catalog.GetString("Related curves will also be deleted."), "");
confirmWin.Button_accept.Clicked += new
EventHandler(on_button_encoder_delete_signal_accepted);
} else
on_button_encoder_delete_signal_accepted (o, args);
@@ -1525,19 +1555,18 @@ public partial class ChronoJumpWindow
void on_button_encoder_delete_signal_accepted (object o, EventArgs args)
{
EncoderSQL eSQL = (EncoderSQL) SqliteEncoder.Select(
- false, Convert.ToInt32(encoderSignalUniqueID), 0, 0, "", false, true)[0];
- //remove the file
- bool deletedOk = Util.FileDelete(eSQL.GetFullURL(false)); //don't convertPathToR
- if(deletedOk) {
- Sqlite.Delete(false, Constants.EncoderTable, Convert.ToInt32(encoderSignalUniqueID));
- encoderSignalUniqueID = "-1";
- image_encoder_capture.Sensitive = false;
- treeviewEncoderCaptureRemoveColumns();
- UtilGtk.ErasePaint(encoder_capture_curves_bars_drawingarea,
encoder_capture_curves_bars_pixmap);
- encoderButtonsSensitive(encoderSensEnum.DONENOSIGNAL);
- encoder_pulsebar_capture.Text = Catalog.GetString("Signal deleted");
- //entry_encoder_signal_comment.Text = "";
- }
+ false, Convert.ToInt32(encoderSignalUniqueID), 0, 0, "signal", false,
true)[0];
+
+ //delete signal and related curves (both from SQL and files)
+ encoderSignalDelete(eSQL.GetFullURL(false), Convert.ToInt32(encoderSignalUniqueID));
+
+ encoderSignalUniqueID = "-1";
+ image_encoder_capture.Sensitive = false;
+ treeviewEncoderCaptureRemoveColumns();
+ UtilGtk.ErasePaint(encoder_capture_curves_bars_drawingarea,
encoder_capture_curves_bars_pixmap);
+ encoderButtonsSensitive(encoderSensEnum.DONENOSIGNAL);
+ encoder_pulsebar_capture.Text = Catalog.GetString("Signal deleted");
+ //entry_encoder_signal_comment.Text = "";
}
private int getActiveCurvesNum(ArrayList curvesArray) {
diff --git a/src/sqlite/encoder.cs b/src/sqlite/encoder.cs
index e20068b..4d67438 100644
--- a/src/sqlite/encoder.cs
+++ b/src/sqlite/encoder.cs
@@ -140,6 +140,7 @@ class SqliteEncoder : Sqlite
//pass uniqueID value and then will return one record. do like this:
//EncoderSQL eSQL = (EncoderSQL) SqliteEncoder.Select(false, myUniqueID, 0, 0, "")[0];
+ //don't care for the 0, 0 , because selection will be based on the myUniqueID and only one row will
be returned
//or
//pass uniqueID==-1 and personID, sessionID, signalOrCurve values, and will return some records
//personID can be -1 to get all on that session
diff --git a/src/sqlite/main.cs b/src/sqlite/main.cs
index 6589a24..377fef7 100644
--- a/src/sqlite/main.cs
+++ b/src/sqlite/main.cs
@@ -2519,6 +2519,21 @@ Console.WriteLine("5" + tableName);
if( ! dbconOpened)
dbcon.Close();
}
+
+ public static void DeleteSelectingField(bool dbconOpened, string tableName, string fieldName, string
id)
+ {
+ if( ! dbconOpened)
+ dbcon.Open();
+
+ dbcmd.CommandText = "Delete FROM " + tableName +
+ " WHERE " + fieldName + " == " + id;
+ Log.WriteLine(dbcmd.CommandText.ToString());
+ dbcmd.ExecuteNonQuery();
+
+ if( ! dbconOpened)
+ dbcon.Close();
+ }
+
public static void DeleteFromName(bool dbconOpened, string tableName, string name)
{
diff --git a/src/util.cs b/src/util.cs
index 63a68c7..c815957 100644
--- a/src/util.cs
+++ b/src/util.cs
@@ -15,7 +15,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
- * Copyright (C) 2004-2012 Xavier de Blas <xaviblas gmail com>
+ * Copyright (C) 2004-2014 Xavier de Blas <xaviblas gmail com>
*/
using System;
@@ -887,10 +887,14 @@ public class Util
public static bool FileDelete(string fileName) {
try {
if(File.Exists(fileName)) {
+ Log.WriteLine("Deleting " + fileName + " ...");
File.Delete(fileName);
+ Log.WriteLine("Deleted");
return true;
}
- } catch {}
+ } catch {
+ Log.WriteLine("Problem deleting");
+ }
return false;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]