/** Copy information from the meta-data input to the dialog fields. */
  public void getData() {
    super.getData();

    hasOneTemporalField = ((LoadSatMeta) inputMeta).getFromDateColumn() != null;
    enableFields();

    if (inputMeta.getFields() != null) {
      for (int i = 0; i < inputMeta.getFields().length; i++) {
        TableItem item = wKey.table.getItem(i);
        if (inputMeta.getCols()[i] != null) {
          item.setText(1, inputMeta.getCols()[i]);
        }
        if (inputMeta.getFields()[i] != null) {
          item.setText(2, inputMeta.getFields()[i]);
        }
        if (inputMeta.getTypes()[i] != null) {
          item.setText(3, inputMeta.getTypes()[i]);
        }
      }
    }

    if (((LoadSatMeta) inputMeta).getToDateColumn() != null) {
      wcbToDateCol.setText(((LoadSatMeta) inputMeta).getToDateColumn());
    }
    if (((LoadSatMeta) inputMeta).getToDateMaxFlag() != null) {
      wToDateMax.setText(((LoadSatMeta) inputMeta).getToDateMaxFlag());
    }
    wbIsIdempotentSat.setSelection(((LoadSatMeta) inputMeta).isIdempotent());

    wKey.setRowNums();
    wKey.optWidth(true);

    wStepname.selectAll();
    wStepname.setFocus();
  }
  /*
   * Update the Meta object according to UI widgets
   */
  protected void getInfo(BaseLoadMeta inMeta) {
    super.getInfo(inMeta);

    int nrkeys = wKey.nrNonEmpty();
    inMeta.allocateKeyArray(nrkeys);

    logDebug("Found nb of Keys=", String.valueOf(nrkeys));

    // in case temporal not set, then null is used as flag
    ((LoadSatMeta) inMeta).setFromDateColumn(null);

    for (int i = 0; i < nrkeys; i++) {
      TableItem item = wKey.getNonEmpty(i);
      inMeta.getCols()[i] = item.getText(1);
      inMeta.getFields()[i] = item.getText(2);
      String t = item.getText(3);

      // Unknown category is default to Normal
      if (!(t.equals(LoadSatMeta.ATTRIBUTE_NORMAL))
          && !(t.equals(LoadSatMeta.ATTRIBUTE_FK))
          && !(t.equals(LoadSatMeta.ATTRIBUTE_TEMPORAL))
          && !(t.equals(LoadSatMeta.ATTRIBUTE_META))) {
        t = LoadSatMeta.ATTRIBUTE_NORMAL;
      }
      inMeta.getTypes()[i] = t;

      // first temporal found is the one we keep
      if (item.getText(3).equals(LoadSatMeta.ATTRIBUTE_TEMPORAL)) {
        ((LoadSatMeta) inMeta).setFromDateColumn(LoadSatMeta.ATTRIBUTE_TEMPORAL);
      }
    }

    ((LoadSatMeta) inMeta).setToDateColumn(wcbToDateCol.getText());
    ((LoadSatMeta) inMeta).setToDateMaxFlag(wToDateMax.getText());
    ((LoadSatMeta) inMeta).setIdempotent(wbIsIdempotentSat.getSelection());
  }