//@include lib_Class.js

/**
 * Helper functions for asynchronous IX processing
 *
 * @author MW, ELO Digital Office GmbH
 * @version 1.0
 *
 * @elojc
 * @eloas
 * @eloix
 */
sol.define("sol.common.AsyncUtils", {
  singleton: true,

  /**
   * Wait until a background job is finished
   * @param {String} jobId Job ID of the background job
   * @param {config} config Configuration
   * @param {de.elo.ix.client.IXConnection} config.connection Index server connection
   * @param {Number} config.interval Interval in milliseconds
   * @return {de.elo.ix.client.JobState}
   */
  waitForJob: function (jobId, config) {
    var jobState, conn;
    config = config || {};
    conn = config.connection || ixConnect;
    config.interval = config.interval || 200;
    jobState = conn.ix().queryJobState(jobId, true, true, true);
    while (jobState && jobState.jobRunning) {
      Packages.java.lang.Thread.sleep(config.interval);
      jobState = conn.ix().queryJobState(jobId, true, true, true);
    }
    return jobState;
  }
});