Как я могу получить доступ к родительской строке из dataimporthandler

Я хочу сделать собственный преобразователь для dataimporthandler. Я хочу получить доступ к строке родительского объекта. Как мне это сделать. Является ли это возможным?

  @Override
  public Object transformRow(Map<String, Object> row, Context context) {

    LOG.info("##gyk: row: {}",row);

    //******What to do here? ********
    LOG.info("##gyk: PARENT-ROW: {}", ????);


    return row;
  }

ОБНОВИТЬ

Мой текущий способ - использовать переменные сеанса

  @Override
  public Object transformRow(Map<String, Object> row, Context context) {

    if (context.isRootEntity()) {

      Object tmp = row.get("Keywords");
      if (tmp == null) return row;

      String[] kwArray = tmp.toString().split(",");

      HashSet<String> kwSet = new HashSet<String>(64);

      for (String kw : kwArray) {
        kwSet.add(kw.trim().toLowerCase());
      }
      LOG.info("##gyk: root entity kw: {}",kwSet);

      context.setSessionAttribute("company-keywords-set", kwSet, "document");

    } else {
      LOG.info("##gyk: row: {}",row);

      HashSet<String> companyKeywordSet = (HashSet<String>)context
          .getParentContext().getParentContext()
          .getSessionAttribute("company-keywords-set", "document");

      if (companyKeywordSet != null) {
        LOG.info("##gyk: keywords from parent: {}", companyKeywordSet);
      }

    }

    return row;
  }

Обновить

Когда я пытаюсь войти это context.getParentContext().getParentContext().getAllEntityFields()Я получаю следующее:[{multiValued=false, toWrite=true, indexed=true, name=id, column=FIR_NR, boost=1.0, defaultValue=null, stored=true, type=string}, {multiValued=false, toWrite=true, indexed=true, name=fir_name, column=FIR_NAME, boost=1.0, defaultValue=null, stored=true, type=text_general}]

Это только определения полей для этого объекта.

0 ответов

Другие вопросы по тегам