home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Narzedzia / AIMP2 / aimp_2.61.583.exe / $TEMP / YandexPackSetup.msi / fil6C289754F43D179002CB34ECFCA23DBC < prev    next >
Text File  |  2010-07-12  |  2KB  |  70 lines

  1. XB.cache = {
  2.     _database: null,
  3.     init: function XBCache_init() {
  4.         this._logger = XB._base.application.core.Log4Moz.repository.getLogger(XB._base.loggersRoot + ".Cache");
  5.         this._database = new XB.Database();
  6.         this._database.open("xbcache.sqlite");
  7.         this._database.exec("CREATE TABLE IF NOT EXISTS resources (id TEXT, time INTEGER, value BLOB, PRIMARY KEY(id))");
  8.         
  9.         this.clean();
  10.     },
  11.     
  12.     finalize: function XBCache_finalize() {
  13.         try {
  14.             if (this._database)
  15.                 this._database.close();
  16.         }
  17.         catch (e) {
  18.             this._logger.error("Failed closing database. " + e.message);
  19.         }
  20.         
  21.         this._database = null;
  22.         this._logger = null;
  23.     },
  24.     
  25.     store: function XBCache_store(key, value) {
  26.         if (value instanceof Object)
  27.             value = XB._base.application.core.JSON.stringify(value);
  28.         
  29.         var storeTime = this._currentTimestampSecs;
  30.         this._logger.debug("Storing data with key " + key + " at time " + storeTime);
  31.         this._database.exec("INSERT OR REPLACE INTO resources (id, time, value) VALUES (:id, :time, :value)", {
  32.             id: key,
  33.             time: storeTime,
  34.             value: value.toString()
  35.         });
  36.     },
  37.     
  38.     findData: function XBCache_findData(key, notOlderThan, retStoreTime) {
  39.         var treshold = notOlderThan? (this._currentTimestampSecs - notOlderThan): 0;
  40.         this._logger.debug("Looking for data " + key + " not older than " + (new Date(treshold * 1000)) );
  41.         var row = this._database.exec("SELECT * FROM resources WHERE id = :id AND time >= :treshold LIMIT 1", {
  42.             id: key,
  43.             treshold: treshold
  44.         }) [0];
  45.         
  46.         if (row) {
  47.             if (retStoreTime instanceof Object)
  48.                 retStoreTime.timestamp = row.time;
  49.             return row.value;
  50.         }
  51.         else {
  52.             this._logger.debug("No matching data found");
  53.         }
  54.     },
  55.         
  56.     clean: function XBCache_clean() {
  57.         this._database.exec("DELETE FROM resources WHERE (time < :time)", {
  58.             time: (this._currentTimestampSecs - 3600 * 24 * 90)
  59.         });
  60.     },
  61.     
  62.     flush: function XBCache_flush() {
  63.         this._database.exec("DELETE FROM resources");
  64.     },
  65.     
  66.     get _currentTimestampSecs() {
  67.         return parseInt(Date.now() / 1000, 10);
  68.     }
  69. };
  70.