private Object getPropertyValue(IContextModelManager manager, Object element, int columnIndex) {

    if (isEmptyTreeNode(element)) {
      return "";
    }
    String contextParaName = ContextNatTableUtils.getCurrentContextModelName(element);
    String currentColumnName = getColumnProperty(columnIndex);
    if (currentColumnName.equals(ContextTableConstants.COLUMN_NAME_PROPERTY)) {
      if (element instanceof ContextTableTabParentModel) {
        String sourceId = ((ContextTableTabParentModel) element).getSourceId();
        if (!sourceId.equals(IContextParameter.BUILT_IN)) {
          Item item = ContextUtils.getRepositoryContextItemById(sourceId);
          if (item != null) {
            if (item instanceof JobletProcessItem) {
              return contextParaName + JOBLET_CONTEXT;
            } else if (item instanceof ProcessItem) {
              return contextParaName + JOB_CONTEXT;
            } else {
              return contextParaName + REPOSITORYT_CONTEXT;
            }
          }
        } else {
          return contextParaName;
        }
      } else {
        return contextParaName;
      }
    } else {
      IContextParameter currentParam =
          getRealParameter(manager.getContextManager(), currentColumnName, element);
      if (currentParam != null) {
        if (columnIndex == 1) {
          String contextParaType = currentParam.getType();
          JavaType javaType = ContextParameterJavaTypeManager.getJavaTypeFromId(contextParaType);
          if (javaType != null) {
            return javaType.getLabel();
          } else {
            return contextParaType;
          }
        } else if (currentColumnName.equals(ContextTableConstants.COLUMN_COMMENT_PROPERTY)) {
          return currentParam.getComment();
        } else {
          if (this.groupModel.isPartOfAGroup(columnIndex)) {
            String columnGroupName = this.groupModel.getColumnGroupByIndex(columnIndex).getName();
            if (manager.getContextManager() != null) {
              List<IContext> contexts = manager.getContextManager().getListContext();
              IContextParameter currentPara =
                  findContextPara(contexts, columnGroupName, contextParaName);
              if (currentPara == null) {
                return "";
              }
              if (currentColumnName.equals(ContextTableConstants.COLUMN_CHECK_PROPERTY)) {
                return currentPara.isPromptNeeded();
              } else if (currentColumnName.equals(ContextTableConstants.COLUMN_PROMPT_PROPERTY)) {
                return currentPara.getPrompt();
              } else if (currentColumnName.equals(ContextTableConstants.COLUMN_CONTEXT_VALUE)) {
                // because it's raw value, so need display * for password type.
                if (PasswordEncryptUtil.isPasswordType(currentPara.getType())) {
                  return PasswordEncryptUtil.getPasswordDisplay(currentPara.getValue());
                }
                return currentPara.getDisplayValue();
              }
            }
          }
        }
      }
    }
    return "";
  }