banshee r3001 - in trunk/banshee: .	src/Core/Banshee.Services/Banshee.Collection.Database	src/Core/Hyena/Hyena.Data.Sqlite
- From: scottp svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r3001 - in trunk/banshee: .	src/Core/Banshee.Services/Banshee.Collection.Database	src/Core/Hyena/Hyena.Data.Sqlite
- Date: Sun, 20 Jan 2008 07:01:46 +0000 (GMT)
Author: scottp
Date: Sun Jan 20 07:01:45 2008
New Revision: 3001
URL: http://svn.gnome.org/viewvc/banshee?rev=3001&view=rev
Log:
* src/Core/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs,
  src/Core/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs,
  src/Core/Banshee.Services/Banshee.Collection.Database/LibraryAlbumInfo.cs,
  src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs,
  src/Core/Banshee.Services/Banshee.Collection.Database/LibraryArtistInfo.cs:
  Consolidated save logic.
Modified:
   trunk/banshee/ChangeLog
   trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryAlbumInfo.cs
   trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryArtistInfo.cs
   trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs
   trunk/banshee/src/Core/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs
   trunk/banshee/src/Core/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryAlbumInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryAlbumInfo.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryAlbumInfo.cs	Sun Jan 20 07:01:45 2008
@@ -86,11 +86,7 @@
 
         public void Save ()
         {
-            if (DbId < 0) {
-                DbId = Provider.Insert (this);
-            } else {
-                Provider.Update (this);
-            }
+            Provider.Save (this);
         }
 
         [DatabaseColumn("AlbumID", Constraints = DatabaseColumnConstraints.PrimaryKey)]
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryArtistInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryArtistInfo.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryArtistInfo.cs	Sun Jan 20 07:01:45 2008
@@ -88,11 +88,7 @@
 
         public void Save ()
         {
-            if (DbId < 0) {
-                dbid = Provider.Insert (this);
-            } else {
-                Provider.Update (this);
-            }
+            Provider.Save (this);
         }
 
         private void LoadFromReader(IDataReader reader)
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs	Sun Jan 20 07:01:45 2008
@@ -62,11 +62,7 @@
 
         public override void Save ()
         {
-            if (DbId < 0) {
-                DbId = Provider.Insert (this);
-            } else {
-                Provider.Update (this);
-            }
+            Provider.Save (this);
         }
         
         [DatabaseColumn("TrackID", Constraints = DatabaseColumnConstraints.PrimaryKey)]
Modified: trunk/banshee/src/Core/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs
==============================================================================
--- trunk/banshee/src/Core/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs	(original)
+++ trunk/banshee/src/Core/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs	Sun Jan 20 07:01:45 2008
@@ -88,10 +88,15 @@
         
         public void SetValue (object target, IDataReader reader, int column)
         {
+            SetValue (target, SetValue (type, reader, column));
+        }
+        
+        public void SetValue (object target, object value)
+        {
             if (field_info != null) {
-                field_info.SetValue (target, SetValue (type, reader, column));
+                field_info.SetValue (target, value);
             } else {
-                property_info.GetSetMethod (true).Invoke (target, new object[] { SetValue (type, reader, column) });
+                property_info.GetSetMethod (true).Invoke (target, new object[] { value });
             }
         }
         
Modified: trunk/banshee/src/Core/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs
==============================================================================
--- trunk/banshee/src/Core/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs	(original)
+++ trunk/banshee/src/Core/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs	Sun Jan 20 07:01:45 2008
@@ -235,6 +235,15 @@
             }
         }
         
+        public void Save (T target)
+        {
+            if (((int)key.GetValue (target)) > 0) {
+                Update (target);
+            } else {
+                key.SetValue (target, Insert (target));
+            }
+        }
+        
         protected virtual void PrepareInsertCommand (T target)
         {
             for (int i = 0; i < columns.Count; i++) {
@@ -242,7 +251,7 @@
             }
         }
         
-        public int Insert (T target)
+        protected int Insert (T target)
         {
             PrepareInsertCommand (target);
             return connection.Execute (InsertCommand);
@@ -256,7 +265,7 @@
             UpdateCommand.Parameters[columns.Count].Value = key.GetValue (target);
         }
         
-        public void Update (T target)
+        protected void Update (T target)
         {
             PrepareUpdateCommand (target);
             connection.Execute (UpdateCommand);
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]