示例#1
0
  @Override
  public void process(StringBuilder out) {
    // hints
    if (templateData.hasHints()) {
      templateData.registerHint(hint == null ? tableRef : hint);
    }

    // columns
    separateByCommaOrSpace(out);

    // special case, only column name, no table ref/name
    if (tableRef.length() == 0) {
      out.append(columnRef);
      return;
    }

    boolean useTableReference = true;
    DbEntityDescriptor ded = lookupTableRef(tableRef, false);
    if (ded == null) {
      useTableReference = false;
      ded = lookupName(tableRef);
    }

    if (columnRef == null) {
      DbEntityColumnDescriptor[] decList = ded.getColumnDescriptors();
      int count = 0;
      boolean withIds =
          (columnRefArr != null) && ArraysUtil.contains(columnRefArr, StringPool.PLUS);
      for (DbEntityColumnDescriptor dec : decList) {
        if ((includeColumns == COLS_ONLY_IDS) && (dec.isId() == false)) {
          continue;
        }
        if ((includeColumns == COLS_ALL_BUT_ID) && (dec.isId() == true)) {
          continue;
        }
        if ((includeColumns == COLS_NA_MULTI)
            && (!withIds || (dec.isId() == false))
            && (!ArraysUtil.contains(columnRefArr, dec.getPropertyName()))) {
          continue;
        }
        if (count > 0) {
          out.append(',').append(' ');
        }
        templateData.lastColumnDec = dec;

        if (useTableReference) {
          appendColumnName(out, ded, dec.getColumnName());
        } else {
          appendAlias(out, ded, dec.getColumnName());
        }
        count++;
      }
    } else {
      DbEntityColumnDescriptor dec = ded.findByPropertyName(columnRef);
      templateData.lastColumnDec = dec;
      String columnName = dec == null ? null : dec.getColumnName();
      // String columnName = ded.getColumnName(columnRef);
      if (columnName == null) {
        throw new DbSqlBuilderException("Invalid column reference: " + tableRef + '.' + columnRef);
      }
      if (useTableReference) {
        appendColumnName(out, ded, columnName);
      } else {
        appendAlias(out, ded, columnName);
      }
    }
  }