importPackage(Packages.de.elo.ix.jscript);
importPackage(Packages.de.elo.ix.scripting);

//@include lib_Class.js
//@include lib_sol.common.TranslateTerms.js
//@include lib_sol.common.StringUtils.js
//@include lib_sol.common.SordUtils.js
//@include lib_sol.common.UserUtils.js
//@include lib_sol.common.JsonUtils.js
//@include lib_sol.common.ix.DynKwlUserNameIterator.js

/**
 * @class sol.common.ix.dynkwl.UserNames
 *
 * Dynamic keyword list that provides user names and IDs
 *
 * The list of current fields is returned as a table.
 *
 * |ID|Name|
 * |:-----|:------|
 * |0|Administrator|
 * |1|Michael Jackson|
 * |2|Donald Duck|
 *
 * @author MW, ELO Digital Office GmbH
 * @version 1.1
 *
 * @requires sol.common.ix.DynKwlUserNameIterator
 * @requires sol.common.StringUtils
 * @requires sol.common.TranslateTerms
 * @requires sol.common.UserUtils
 */
sol.define("sol.common.ix.dynkwl.UserNames", {
  extend: "sol.common.ix.DynKwlUserNameIterator",

  initialize: function (config) {
    var me = this;
    me.excludeLockedUsers = true,
    me.visible = true;

    me.$super("sol.common.ix.DynKwlUserNameIterator", "initialize", [config]);
  }
});

/**
 * Implements a DynamicKeywordDataProvider for this keyword list that can be used by checkoutKeywordsDynamic.
 * @static
 * @member sol.common.ix.dynkwl.UserNames
 * @return {DynamicKeywordDataProvider}
 */
function getDataIterator() {
  var log = sol.create("sol.Logger", { scope: "sol.common.ix.DynKwlUserNameIterator" }),
      iterator;
  try {
    log.info("DynamicKeywordList (");
    iterator = sol.create("sol.common.ix.dynkwl.UserNames", {});
    return new DynamicKeywordDataProvider(iterator);
  } finally {
    log.info(")getDataIterator");
  }
}