コード例 #1
0
ファイル: QueryUtils.java プロジェクト: yokoboy/bi-platform
 /**
  * @param dim -- Dimension
  * @return Dimension
  */
 public static Dimension convertDim2Dim(Dimension dim) {
   StandardDimension rs = new StandardDimension(dim.getName());
   rs.setCaption(dim.getCaption());
   rs.setDescription(dim.getDescription());
   rs.setTableName(dim.getTableName());
   rs.setFacttableCaption(dim.getFacttableCaption());
   rs.setFacttableColumn(dim.getFacttableColumn());
   rs.setPrimaryKey(dim.getPrimaryKey());
   rs.setType(dim.getType());
   rs.setVisible(true);
   rs.setId(dim.getId());
   rs.setName(dim.getName());
   LinkedHashMap<String, Level> levels = Maps.newLinkedHashMap();
   dim.getLevels()
       .values()
       .forEach(
           level -> {
             level.setDimension(dim);
             levels.put(level.getName(), level);
           });
   rs.setLevels(levels);
   return rs;
 }
コード例 #2
0
ファイル: QueryUtils.java プロジェクト: yokoboy/bi-platform
  /**
   * 判断是否需要汇总
   *
   * @param questionModel
   * @return
   */
  private static boolean needSummary(QuestionModel questionModel) {
    ConfigQuestionModel configQuestionModel = (ConfigQuestionModel) questionModel;
    for (AxisMeta meta : questionModel.getAxisMetas().values()) {
      if (meta.getAxisType() == AxisType.ROW) {
        for (String str : meta.getCrossjoinDims()) {
          DimensionCondition condition =
              (DimensionCondition) questionModel.getQueryConditions().get(str);
          Dimension dim =
              configQuestionModel.getCube().getDimensions().get(condition.getMetaName());

          if (dim != null && dim.getType() == DimensionType.CALLBACK) {
            if (condition.getQueryDataNodes() != null
                && condition.getQueryDataNodes().size() == 1) {
              List<Member> members =
                  dim.getLevels()
                      .values()
                      .toArray(new Level[0])[0]
                      .getMembers(
                          configQuestionModel.getCube(),
                          configQuestionModel.getDataSourceInfo(),
                          configQuestionModel.getRequestParams());
              String uniqueName = condition.getQueryDataNodes().get(0).getUniqueName();
              if (MetaNameUtil.isAllMemberUniqueName(uniqueName)) {
                return false;
              } else if (meta.getCrossjoinDims().size() > 1) {
                return false;
              } else if (members.size() == 1) {
                MiniCubeMember m = (MiniCubeMember) members.get(0);
                if (m.getChildren() != null && m.getChildren().size() > 1) {
                  return false;
                } else if (m.getChildren() == null) {
                  return false;
                }
              }
            } else if (CollectionUtils.isEmpty(condition.getQueryDataNodes())) {
              return false;
            }
            return true;
          }
          if (condition.getQueryDataNodes() == null || condition.getQueryDataNodes().isEmpty()) {
            return false;
          } else {
            List<QueryData> queryDatas = condition.getQueryDataNodes();
            for (QueryData queryData : queryDatas) {
              if (MetaNameUtil.isAllMemberName(queryData.getUniqueName())) {
                return false;
              } else {
                // TODO 这里需要修改 需要修改为可配置方式
                String[] tmp = MetaNameUtil.parseUnique2NameArray(queryData.getUniqueName());
                if (tmp[tmp.length - 1].contains(":")) {
                  return false;
                }
              }
            }
          }
        }
        break;
      }
    }
    return true;
  }