[folks] Remove AliasDetails support from Trf.Persona



commit 4c027da00b91723c04ce0195dbcdcf334483b02b
Author: Philip Withnall <philip withnall collabora co uk>
Date:   Sat Jun 25 10:13:01 2011 +0100

    Remove  AliasDetails support from Trf.Persona
    
    The persona's alias was being stored as its nickname. Since we want to make
    nicknames writeable (bgo#652048) we have to store the nickname there
    instead. There's no ontology for storing aliases, so AliasDetails support
    has to be dropped.
    
    Closes: bgo#652048 â Make Individual.nickname writeable

 NEWS                                               |    2 +
 backends/tracker/lib/trf-persona-store.vala        |   18 +++---
 backends/tracker/lib/trf-persona.vala              |   38 ++++---------
 tests/tracker/Makefile.am                          |    8 +-
 tests/tracker/add-persona.vala                     |   16 +++---
 .../tracker/{set-alias.vala => set-nickname.vala}  |   62 +++++++++-----------
 6 files changed, 62 insertions(+), 82 deletions(-)
---
diff --git a/NEWS b/NEWS
index 23c9eea..78c3bfe 100644
--- a/NEWS
+++ b/NEWS
@@ -16,11 +16,13 @@ Bugs fixed:
 * Bug 653746 â mismatch between hash and equals in Note
 * Bug 638281 â Add an EDS backend
 * Bug 654509 â Folks master not building
+* Bug 652048 â Make nickname writable
 
 API changes:
 * Swf.Persona retains and exposes its libsocialweb Contact
 * Add a PresenceDetails.presence_status property
 * Make NameDetails.nickname settable
+* Drop AliasDetails support from Trf.Persona
 
 Overview of changes from libfolks 0.5.1 to libfolks 0.5.2
 =========================================================
diff --git a/backends/tracker/lib/trf-persona-store.vala b/backends/tracker/lib/trf-persona-store.vala
index 8cc10f2..47b4c29 100644
--- a/backends/tracker/lib/trf-persona-store.vala
+++ b/backends/tracker/lib/trf-persona-store.vala
@@ -38,7 +38,7 @@ internal enum Trf.Fields
   ADDITIONAL_NAMES,
   PREFIXES,
   SUFFIXES,
-  ALIAS,
+  NICKNAME,
   BIRTHDAY,
   AVATAR_URL,
   IM_ADDRESSES,
@@ -380,7 +380,7 @@ public class Trf.PersonaStore : Folks.PersonaStore
    *
    * Accepted keys for `details` are:
    * - PersonaStore.detail_key (PersonaDetail.IM_ADDRESSES)
-   * - PersonaStore.detail_key (PersonaDetail.ALIAS)
+   * - PersonaStore.detail_key (PersonaDetail.NICKNAME)
    * - PersonaStore.detail_key (PersonaDetail.FULL_NAME)
    * - PersonaStore.detail_key (PersonaDetail.IS_FAVOURITE)
    * - PersonaStore.detail_key (PersonaDetail.STRUCTURED_NAME)
@@ -410,7 +410,7 @@ public class Trf.PersonaStore : Folks.PersonaStore
       foreach (var k in details.get_keys ())
         {
           Value? v = details.lookup (k);
-          if (k == Folks.PersonaStore.detail_key (PersonaDetail.ALIAS))
+          if (k == Folks.PersonaStore.detail_key (PersonaDetail.NICKNAME))
             {
               builder.subject ("_:p");
               builder.predicate (Trf.OntologyDefs.NCO_NICKNAME);
@@ -1319,14 +1319,14 @@ public class Trf.PersonaStore : Folks.PersonaStore
       else if (e.pred_id ==
                this._prefix_tracker_id.get (Trf.OntologyDefs.NCO_NICKNAME))
         {
-          string alias = "";
+          string nickname = "";
           if (adding)
             {
-              alias =
+              nickname =
                 yield this._get_property (
                     e.subject_id, Trf.OntologyDefs.NCO_NICKNAME);
             }
-          p._update_alias (alias);
+          p._update_nickname (nickname);
         }
       else if (e.pred_id ==
                this._prefix_tracker_id.get (Trf.OntologyDefs.NCO_FAMILY))
@@ -1823,7 +1823,7 @@ public class Trf.PersonaStore : Folks.PersonaStore
       return yield this._single_value_query (query.printf (tracker_id));
     }
 
-  internal async void _set_alias (Trf.Persona persona, string alias)
+  internal async void _set_nickname (Trf.Persona persona, string nickname)
     {
       const string query_t = "DELETE { "+
         " ?p " + Trf.OntologyDefs.NCO_NICKNAME + " ?n  " +
@@ -1841,10 +1841,10 @@ public class Trf.PersonaStore : Folks.PersonaStore
         "FILTER (tracker:id(?p) = %s) " +
         "} ";
 
-      string query = query_t.printf (persona.tracker_id (), alias,
+      string query = query_t.printf (persona.tracker_id (), nickname,
           persona.tracker_id ());
 
-      yield this._tracker_update (query, "change_alias");
+      yield this._tracker_update (query, "change_nickname");
     }
 
   internal async void _set_local_ids (Trf.Persona persona,
diff --git a/backends/tracker/lib/trf-persona.vala b/backends/tracker/lib/trf-persona.vala
index 5db69c6..654c1e3 100644
--- a/backends/tracker/lib/trf-persona.vala
+++ b/backends/tracker/lib/trf-persona.vala
@@ -30,7 +30,6 @@ using Tracker.Sparql;
  * A persona subclass which represents a single nco:Contact.
  */
 public class Trf.Persona : Folks.Persona,
-    AliasDetails,
     AvatarDetails,
     BirthdayDetails,
     EmailDetails,
@@ -46,7 +45,7 @@ public class Trf.Persona : Folks.Persona,
     UrlDetails,
     WebServiceDetails
 {
-  private string _alias;
+  private string _nickname;
   private bool _is_favourite;
   private const string[] _linkable_properties =
       {"im-addresses", "local-ids", "web-service-addresses"};
@@ -58,21 +57,21 @@ public class Trf.Persona : Folks.Persona,
   private string _tracker_id;
 
   /**
-   * An alias for the Persona.
+   * A nickname for the Persona.
    *
-   * See { link Folks.AliasDetails.alias}.
+   * See { link Folks.NameDetails.nickname}.
    */
-  public string alias
+  public string nickname
     {
-      get { return this._alias; }
+      get { return this._nickname; }
 
       set
         {
-          if (this._alias == value)
+          if (this._nickname == value)
             return;
-          this._alias = value;
-          this.notify_property ("alias");
-          ((Trf.PersonaStore) this.store)._set_alias (this, value);
+          this._nickname = value;
+          this.notify_property ("nickname");
+          ((Trf.PersonaStore) this.store)._set_nickname (this, value);
         }
     }
 
@@ -149,12 +148,6 @@ public class Trf.Persona : Folks.Persona,
         }
     }
 
-  private string _nickname;
-  /**
-   * { inheritDoc}
-   */
-  public string nickname { get { return this._nickname; } }
-
   private Gender _gender;
   /**
    * { inheritDoc}
@@ -466,15 +459,6 @@ public class Trf.Persona : Folks.Persona,
         }
     }
 
-  internal void _update_alias (string? alias)
-    {
-      if (alias != null && this._alias != alias)
-        {
-          this._alias = alias;
-          this.notify_property ("alias");
-        }
-    }
-
   internal void _update_family_name (string? family_name)
     {
       if (family_name != null)
@@ -771,8 +755,8 @@ public class Trf.Persona : Folks.Persona,
       string fullname = this._cursor.get_string (Trf.Fields.FULL_NAME).dup ();
       this._update_full_name (fullname);
 
-      string alias = this._cursor.get_string (Trf.Fields.ALIAS).dup ();
-      this._update_alias (alias);
+      string nickname = this._cursor.get_string (Trf.Fields.NICKNAME).dup ();
+      this._update_nickname (nickname);
 
       string family_name = this._cursor.get_string (
           Trf.Fields.FAMILY_NAME).dup ();
diff --git a/tests/tracker/Makefile.am b/tests/tracker/Makefile.am
index bb11fd0..c09a1a3 100644
--- a/tests/tracker/Makefile.am
+++ b/tests/tracker/Makefile.am
@@ -75,7 +75,7 @@ noinst_PROGRAMS = \
 	avatar-updates  \
 	add-persona  \
 	remove-persona  \
-	set-alias  \
+	set-nickname  \
 	set-favourite  \
 	set-phones  \
 	set-emails  \
@@ -243,8 +243,8 @@ remove_persona_SOURCES = \
 	remove-persona.vala \
 	$(NULL)
 
-set_alias_SOURCES = \
-	set-alias.vala \
+set_nickname_SOURCES = \
+	set-nickname.vala \
 	$(NULL)
 
 set_favourite_SOURCES = \
@@ -387,7 +387,7 @@ MAINTAINERCLEANFILES = \
         avatar_updates_vala.stamp \
         add_persona_vala.stamp \
         remove_persona_vala.stamp \
-        set_alias_vala.stamp \
+        set_nickname_vala.stamp \
         set_favourite_vala.stamp \
         set_phones_vala.stamp \
         set_emails_vala.stamp \
diff --git a/tests/tracker/add-persona.vala b/tests/tracker/add-persona.vala
index cd67287..3c6fb36 100644
--- a/tests/tracker/add-persona.vala
+++ b/tests/tracker/add-persona.vala
@@ -29,7 +29,7 @@ public class AddPersonaTests : Folks.TestCase
   private TrackerTest.Backend _tracker_backend;
   private IndividualAggregator _aggregator;
   private string _persona_fullname;
-  private string _persona_alias;
+  private string _persona_nickname;
   private string _family_name;
   private string _given_name;
   private HashTable<string, bool> _properties_found;
@@ -80,7 +80,7 @@ public class AddPersonaTests : Folks.TestCase
     {
       this._main_loop = new GLib.MainLoop (null, false);
       this._persona_fullname = "persona #1";
-      this._persona_alias = "alias";
+      this._persona_nickname = "nickname";
       this._family_name = "family";
       this._given_name = "given";
       this._persona_iid = "";
@@ -108,7 +108,7 @@ public class AddPersonaTests : Folks.TestCase
       this._properties_found = new HashTable<string, bool>
           (str_hash, str_equal);
       this._properties_found.insert ("full_name", false);
-      this._properties_found.insert ("alias", false);
+      this._properties_found.insert ("nickname", false);
       this._properties_found.insert ("is_favourite", false);
       this._properties_found.insert ("structured_name", false);
       this._properties_found.insert ("avatar", false);
@@ -184,8 +184,8 @@ public class AddPersonaTests : Folks.TestCase
           (owned) v1);
 
       Value? v2 = Value (typeof (string));
-      v2.set_string (this._persona_alias);
-      details.insert (Folks.PersonaStore.detail_key (PersonaDetail.ALIAS),
+      v2.set_string (this._persona_nickname);
+      details.insert (Folks.PersonaStore.detail_key (PersonaDetail.NICKNAME),
           (owned) v2);
 
       Value? v3 = Value (typeof (bool));
@@ -331,7 +331,7 @@ public class AddPersonaTests : Folks.TestCase
                 }
 
               i.notify["full-name"].connect (this._notify_cb);
-              i.notify["alias"].connect (this._notify_cb);
+              i.notify["nickname"].connect (this._notify_cb);
               i.notify["avatar"].connect (this._notify_cb);
               i.notify["is-favourite"].connect (this._notify_cb);
               i.notify["structured-name"].connect (this._notify_cb);
@@ -391,8 +391,8 @@ public class AddPersonaTests : Folks.TestCase
       if (i.full_name == this._persona_fullname)
         this._properties_found.replace ("full_name", true);
 
-      if (i.alias == this._persona_alias)
-        this._properties_found.replace ("alias", true);
+      if (i.nickname == this._persona_nickname)
+        this._properties_found.replace ("nickname", true);
 
       if (i.is_favourite)
         this._properties_found.replace ("is_favourite", true);
diff --git a/tests/tracker/set-alias.vala b/tests/tracker/set-nickname.vala
similarity index 69%
rename from tests/tracker/set-alias.vala
rename to tests/tracker/set-nickname.vala
index fbb7f49..647cde1 100644
--- a/tests/tracker/set-alias.vala
+++ b/tests/tracker/set-nickname.vala
@@ -23,24 +23,24 @@ using TrackerTest;
 using Folks;
 using Gee;
 
-public class SetAliasTests : Folks.TestCase
+public class SetNicknameTests : Folks.TestCase
 {
   private GLib.MainLoop _main_loop;
   private TrackerTest.Backend _tracker_backend;
   private IndividualAggregator _aggregator;
   private string _persona_fullname;
-  private string _initial_alias;
-  private string _modified_alias;
-  private bool _initial_alias_found;
-  private bool _modified_alias_found;
+  private string _initial_nickname;
+  private string _modified_nickname;
+  private bool _initial_nickname_found;
+  private bool _modified_nickname_found;
 
-  public SetAliasTests ()
+  public SetNicknameTests ()
     {
-      base ("SetAliasTests");
+      base ("SetNicknameTests");
 
       this._tracker_backend = new TrackerTest.Backend ();
 
-      this.add_test ("test setting alias ", this.test_set_alias);
+      this.add_test ("test setting nickname ", this.test_set_nickname);
     }
 
   public override void set_up ()
@@ -51,30 +51,24 @@ public class SetAliasTests : Folks.TestCase
     {
     }
 
-  public void test_set_alias ()
+  public void test_set_nickname ()
     {
       this._main_loop = new GLib.MainLoop (null, false);
       Gee.HashMap<string, string> c1 = new Gee.HashMap<string, string> ();
       this._persona_fullname = "persona #1";
-      this._initial_alias = "initial alias";
-      this._modified_alias = "modified alias";
+      this._initial_nickname = "initial nickname";
+      this._modified_nickname = "modified nickname";
 
       c1.set (Trf.OntologyDefs.NCO_FULLNAME, this._persona_fullname);
-
-      /* Note:
-       *
-       * we treat the nco:nickname associated to an nco:PersonContact
-       * as the alias, and the nco:nickname(s) associated to IM accounts
-       * as possible nicknames. */
-      c1.set (Trf.OntologyDefs.NCO_NICKNAME, this._initial_alias);
+      c1.set (Trf.OntologyDefs.NCO_NICKNAME, this._initial_nickname);
       this._tracker_backend.add_contact (c1);
 
       this._tracker_backend.set_up ();
 
-      this._initial_alias_found = false;
-      this._modified_alias_found = false;
+      this._initial_nickname_found = false;
+      this._modified_nickname_found = false;
 
-      this._test_set_alias_async ();
+      this._test_set_nickname_async ();
 
       Timeout.add_seconds (5, () =>
         {
@@ -84,13 +78,13 @@ public class SetAliasTests : Folks.TestCase
 
       this._main_loop.run ();
 
-      assert (this._initial_alias_found == true);
-      assert (this._modified_alias_found == true);
+      assert (this._initial_nickname_found == true);
+      assert (this._modified_nickname_found == true);
 
       this._tracker_backend.tear_down ();
     }
 
-  private async void _test_set_alias_async ()
+  private async void _test_set_nickname_async ()
     {
       var store = BackendStore.dup ();
       yield store.prepare ();
@@ -118,9 +112,9 @@ public class SetAliasTests : Folks.TestCase
         {
           if (i.full_name == this._persona_fullname)
             {
-              if (i.alias == this._initial_alias)
+              if (i.nickname == this._initial_nickname)
                 {
-                  this._initial_alias_found = true;
+                  this._initial_nickname_found = true;
 
                   foreach (var p in i.personas)
                     {
@@ -130,16 +124,16 @@ public class SetAliasTests : Folks.TestCase
                        * Individual won't forward the notification to us
                        * unless it comes from a writeable store.
                        */
-                      p.notify["alias"].connect (this._notify_alias_cb);
+                      p.notify["nickname"].connect (this._notify_nickname_cb);
 
                       /* FIXME:
                        * it would be nice if we could just do:
-                       *    i.alias = "foobar"
+                       *    i.nickname = "foobar"
                        * but we depend on:
                        * https://bugzilla.gnome.org/show_bug.cgi?id=645441 */
-                      if (p is AliasDetails)
+                      if (p is NameDetails)
                         {
-                          ((AliasDetails) p).alias = this._modified_alias;
+                          ((NameDetails) p).nickname = this._modified_nickname;
                         }
                     }
                 }
@@ -149,12 +143,12 @@ public class SetAliasTests : Folks.TestCase
       assert (removed.size == 0);
     }
 
-  private void _notify_alias_cb (Object persona, ParamSpec ps)
+  private void _notify_nickname_cb (Object persona, ParamSpec ps)
     {
       Trf.Persona p = (Trf.Persona) persona;
-      if (p.alias == this._modified_alias)
+      if (p.nickname == this._modified_nickname)
         {
-          this._modified_alias_found = true;
+          this._modified_nickname_found = true;
           this._main_loop.quit ();
         }
     }
@@ -165,7 +159,7 @@ public int main (string[] args)
   Test.init (ref args);
 
   TestSuite root = TestSuite.get_root ();
-  root.add_suite (new SetAliasTests ().get_suite ());
+  root.add_suite (new SetNicknameTests ().get_suite ());
 
   Test.run ();
 



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