コード例 #1
0
  /**
   * @param subElems
   * @throws DataException
   */
  private void populateDeprecatedAggregations(IConfigurationElement[] subElems)
      throws DataException {
    if (subElems == null) return;
    for (int j = 0; j < subElems.length; j++) {
      try {
        IAggregation aggrFunc =
            (IAggregation) subElems[j].createExecutableExtension(ATTRIBUTE_AGGREGATION_CLASS);
        String name = aggrFunc.getName().toUpperCase();

        AggrFunctionWrapper aggrWrapper = new AggrFunctionWrapper(aggrFunc);
        populateExtendedAggrInfo(name, aggrFunc, subElems[j], aggrWrapper);

        if (aggrMap.put(name, aggrWrapper) != null)
          throw new DataException(ResourceConstants.DUPLICATE_AGGREGATION_NAME, name);
        allAggrNames.add(name);
      } catch (Exception e) {
        logger.logp(
            Level.WARNING,
            AggrFunctionWrapper.class.getName(),
            "populateDeprecatedAggregations",
            "Exception in aggregation extension loading.",
            e);
      }
    }
  }
コード例 #2
0
  /**
   * populate the extended extensions information.
   *
   * @param name
   * @param aggrFunc
   * @param elem
   * @param aggrWrapper
   */
  private void populateExtendedAggrInfo(
      String name,
      IAggregation aggrFunc,
      IConfigurationElement elem,
      AggrFunctionWrapper aggrWrapper)
      throws DataException {
    IConfigurationElement[] uiInfo = elem.getChildren(ELEMENT_UIINFO);
    assert (uiInfo != null && uiInfo.length == 1);
    String paramInfo = uiInfo[0].getAttribute(ATTRIBUTE_PARAMETER_META_INFO);
    String textInfo = uiInfo[0].getAttribute(ATTRIBUTE_TEXT_DATA);
    aggrWrapper.setDisplayName(textInfo);
    // populate parameters to the aggrWrapper
    List paramList = new ArrayList();
    String[] paramInfos = paramInfo.split(","); // $NON-NLS-1$
    boolean[] paramFlags = aggrFunc.getParameterDefn();
    if (paramInfos != null && paramInfos.length > 0 && paramFlags != null) {
      if (paramInfos.length != paramFlags.length)
        throw new DataException(ResourceConstants.INCONSISTENT_AGGREGATION_ARGUMENT_DEFINITION);
      // populateDataFiledParameterDefn( paramList );
      for (int k = 0; k < paramInfos.length; k++) {
        final String s = paramInfos[k].trim();
        int index = s.indexOf(' ');
        String paramName = null;
        if (index > 0) {
          paramName = s.substring(index + 1).trim();
        } else {
          paramName = paramInfos[k];
        }

        ParameterDefn paramDefn = new ParameterDefn(paramName, paramName, !paramFlags[k], true);
        paramList.add(paramDefn);
      }
    }
    IParameterDefn[] params = new IParameterDefn[paramList.size()];
    paramList.toArray(params);
    aggrWrapper.setParameterDefn(params);
  }
コード例 #3
0
 /*
  * (non-Javadoc)
  *
  * @see org.eclipse.birt.data.engine.api.aggregation.IAggrFunction#newAccumulator()
  */
 public Accumulator newAccumulator() {
   return aggrFunc.newAccumulator();
 }
コード例 #4
0
 /*
  * (non-Javadoc)
  *
  * @see org.eclipse.birt.data.engine.api.aggregation.IAggrFunction#getType()
  */
 public int getType() {
   return aggrFunc.getType();
 }
コード例 #5
0
 /*
  * (non-Javadoc)
  *
  * @see org.eclipse.birt.data.engine.api.aggregation.IAggrFunction#getName()
  */
 public String getName() {
   return aggrFunc.getName();
 }