Exemplo n.º 1
0
  /**
   * @param design
   * @param odaStatement
   * @return
   * @throws DataException
   */
  private IResultClass getMetaData(IOdaDataSetDesign design, PreparedStatement odaStatement)
      throws DataException {
    IResultClass result = null;
    if (design != null) {
      if (canAccessResultSetByName(design)) {
        try {
          result = odaStatement.getMetaData(design.getPrimaryResultSetName());
        } catch (DataException e) {
          throw new DataException(
              ResourceConstants.ERROR_HAPPEN_WHEN_RETRIEVE_RESULTSET,
              design.getPrimaryResultSetName());
        }

      } else if (canAccessResultSetByNumber(design)) {
        try {
          result = odaStatement.getMetaData(design.getPrimaryResultSetNumber());
        } catch (DataException e) {
          throw new DataException(
              ResourceConstants.ERROR_HAPPEN_WHEN_RETRIEVE_RESULTSET,
              design.getPrimaryResultSetNumber());
        }
      }
    }
    if (result == null) result = odaStatement.getMetaData();

    if (design != null) {
      List hintList = design.getResultSetHints();
      for (int i = 0; i < hintList.size(); i++) {
        IColumnDefinition columnDefinition = (IColumnDefinition) hintList.get(i);
        for (int j = 1; j <= result.getFieldCount(); j++) {
          ResultFieldMetadata resultFieldMetadata = result.getFieldMetaData(j);
          if (columnDefinition.getColumnName().equals(resultFieldMetadata.getName())) {
            resultFieldMetadata.setAlias(columnDefinition.getAlias());
            resultFieldMetadata.setAnalysisType(columnDefinition.getAnalysisType());
            resultFieldMetadata.setAnalysisColumn(columnDefinition.getAnalysisColumn());
            resultFieldMetadata.setIndexColumn(columnDefinition.isIndexColumn());
            resultFieldMetadata.setCompressedColumn(columnDefinition.isCompressedColumn());
            break;
          }
        }
      }
    }
    return result;
  }