home *** CD-ROM | disk | FTP | other *** search
/ Freelog 100 / FreelogNo100-NovembreDecembre2010.iso / Multimedia / Songbird / Songbird_1.8.0-1800_windows-i686-msvc8.exe / jsmodules / LocalStore.jsm < prev    next >
Text File  |  2010-08-30  |  2KB  |  60 lines

  1. /**
  2.  * LocalStore.jsm
  3.  */
  4.  
  5. EXPORTED_SYMBOLS = [ "LocalStore" ];
  6.  
  7. Ci = Components.interfaces;
  8. Cc = Components.classes;
  9.  
  10. var LocalStore = {
  11.   dirty: false,
  12.  
  13.   // Get an attribute value for an element id in a given file
  14.   getPersistedAttribute: function(file, id, attribute) {
  15.     var rdf = Cc["@mozilla.org/rdf/rdf-service;1"].getService(Ci.nsIRDFService);
  16.     var localStore = rdf.GetDataSource("rdf:local-store");
  17.     var source = rdf.GetResource(file + "#" + id);
  18.     var property = rdf.GetResource(attribute);
  19.     var target = localStore.GetTarget(source, property, true);
  20.     if (target instanceof Ci.nsIRDFLiteral)
  21.       return target.Value;
  22.     return null;
  23.   },
  24.   
  25.   // Set an attribute on an element id in a given file
  26.   setPersistedAttribute: function(file, id, attribute, value) {
  27.     var rdf = Cc["@mozilla.org/rdf/rdf-service;1"].getService(Ci.nsIRDFService);
  28.     var localStore = rdf.GetDataSource("rdf:local-store");
  29.     var source = rdf.GetResource(file + "#" +  id);    
  30.     var property = rdf.GetResource(attribute);
  31.     try {
  32.       var oldTarget = localStore.GetTarget(source, property, true);
  33.       if (oldTarget) {
  34.         if (value)
  35.           localStore.Change(source, property, oldTarget,
  36.                                   rdf.GetLiteral(value));
  37.         else
  38.           localStore.Unassert(source, property, oldTarget);
  39.       }
  40.       else {
  41.         localStore.Assert(source, property,
  42.                                 rdf.GetLiteral(value), true);
  43.       }
  44.       LocalStore.dirty = true;
  45.     }
  46.     catch(ex) {
  47.       Components.utils.reportError(ex);
  48.     }
  49.   },
  50.           
  51.   // Save changes if needed
  52.   flush: function flush() {
  53.     if (LocalStore.dirty) {
  54.       var rdf = Cc["@mozilla.org/rdf/rdf-service;1"].getService(Ci.nsIRDFService);
  55.       var localStore = rdf.GetDataSource("rdf:local-store");
  56.       localStore.QueryInterface(Ci.nsIRDFRemoteDataSource).Flush();
  57.     }
  58.   }
  59. }
  60.