Example #1
0
  private void processRelateReports() {
    if (this.lstRelateReports == null || this.lstRelateReports.size() == 0) return;
    this.mRelateReports = new HashMap<ReportBean, ReportBean>();
    for (ReportBean rbeanSlave : lstRelateReports) {
      ReportBean rbeanMaster = this.getReportChild(rbeanSlave.getDependParentId(), true);
      if (rbeanMaster == null) {
        throw new WabacusConfigLoadingException(
            "加载页面"
                + this.getPath()
                + "失败,其下的报表"
                + rbeanSlave.getId()
                + "依赖的报表"
                + rbeanSlave.getDependParentId()
                + "不存在");
      }
      if (rbeanMaster
          .isListReportType()) { // 如果主报表是列表报表,则子报表不能配置refreshid为其它容器,因为它们是在客户端单独加载的,不能和其它报表绑定加载
        if (rbeanSlave.getRefreshid() != null
            && !rbeanSlave.getRefreshid().trim().equals("")
            && !rbeanSlave.getRefreshid().trim().equals(rbeanSlave.getId())) {
          throw new WabacusConfigLoadingException(
              "报表" + rbeanSlave.getPath() + "失败,它是依赖其它报表的从报表,因此不能为它配置refreshid属性");
        }
      }
      processDependParams(rbeanSlave, rbeanMaster);
      if (rbeanMaster.isListReportType()) {
        AbsListReportBean alrbean =
            (AbsListReportBean) rbeanMaster.getExtendConfigDataForReportType(AbsListReportType.KEY);
        if (alrbean.getRowSelectType() == null
            || alrbean.getRowSelectType().trim().equals("")
            || alrbean.getRowSelectType().trim().equals(Consts.ROWSELECT_NONE)) {
          alrbean.setRowSelectType(Consts.ROWSELECT_SINGLE);
        }
      }
      this.mRelateReports.put(rbeanSlave, rbeanMaster);
    }
    validRelateReports();
    ReportBean rbeanTempMaster;
    AbsListReportBean alrbean;
    List<ReportBean> lstCreatedListReportBeans = new ArrayList<ReportBean>();
    for (Entry<ReportBean, ReportBean> rbeanEntries : this.mRelateReports.entrySet()) {
      rbeanTempMaster = rbeanEntries.getValue();
      if (rbeanTempMaster.isListReportType()) {
        if (lstCreatedListReportBeans.contains(rbeanTempMaster)) continue; // 已经为此报表生成过js
        lstCreatedListReportBeans.add(rbeanTempMaster);
        alrbean =
            (AbsListReportBean)
                rbeanTempMaster.getExtendConfigDataForReportType(AbsListReportType.KEY);
        if (alrbean == null) {
          alrbean = new AbsListReportBean(rbeanTempMaster);
          rbeanTempMaster.setExtendConfigDataForReportType(AbsListReportType.KEY, alrbean);
        }

        alrbean.addRowSelectCallBackFunc(
            rbeanTempMaster.getRefreshSlaveReportsCallBackMethodName());
        rbeanTempMaster.addOnloadMethod(
            new OnloadMethodBean(
                Consts_Private.ONLOAD_REFRESHSLAVE,
                rbeanTempMaster.getRefreshSlaveReportsCallBackMethodName()));
      } else {
        String masterReportRefreshId = rbeanTempMaster.getRefreshid();
        if (masterReportRefreshId == null || masterReportRefreshId.trim().equals("")) {
          masterReportRefreshId = rbeanTempMaster.getId();
        }
        rbeanTempMaster.setRefreshid(
            getParentContainerObjOfComponents(masterReportRefreshId, rbeanEntries.getKey().getId())
                .getId());
      }
    }
    for (ReportBean rbTmp : lstCreatedListReportBeans) {
      JavaScriptAssistant.getInstance().createRefreshSlaveReportsDataScript(rbTmp);
    }
    this.lstRelateReports = null;
  }