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

//@include lib_Class.js
//@include lib_sol.common.Config.js
//@include lib_sol.common.TranslateTerms.js
//@include lib_sol.common.ix.DynKwlFindChildrenIterator.js

/**
 *Dynamic keyword list that returns a list of the configured form of addresses.
 *
 * |Name|Description|Example data|
 * |:-----|:------|:------|
 * |Description|CONTACT_TITLE|The template for generating the title|
 *
 * @author PZ, ELO Digital Office GmbH
 * @version 1.01.001
 *
 * @requires sol.common.Config
 * @requires sol.common.ix.DynKwlFindChildrenIterator
 */
sol.define("sol.contact.ix.dynkwl.FormOfAddressTemplate", {
  extend: "sol.common.ix.DynKwlFindChildrenIterator",

  initialize: function (config) {
    var me = this,
        terms = sol.common.TranslateTerms;

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

    me.contactConfig = sol.create("sol.common.Config", { compose: "/contact/Configuration/contact.config" }).config;
    me.parentId = me.contactConfig.dynkwl.titles.templateFolderId;

    terms.require("sol.contact.dynkwl.formOfAddress");
    me.tableTitle = terms.translate("sol.contact.dynkwl.formOfAddress.tableTitle");
    me.tableHeaders = [
      terms.translate("sol.contact.dynkwl.formOfAddress.tableHeaders.formOfAddress")
    ];
  },

  /**
   * @cfg
   * @inheritdoc
   */
  tableKeyNames: ["CONTACT_FORM_OF_ADDRESS"],

  /**
   * @cfg
   * defined by initialize
   */
  parentId: null,

  /**
   * Mapping of search results.
   * This returns only the sord name.
   * @param {de.elo.ix.client.Sord} sord
   * @return {Object}
   */
  getRowData: function (sord) {
    return [sord.name];
  }
});

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