/** * @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); } } }
/** * 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); }
/* * (non-Javadoc) * * @see org.eclipse.birt.data.engine.api.aggregation.IAggrFunction#newAccumulator() */ public Accumulator newAccumulator() { return aggrFunc.newAccumulator(); }
/* * (non-Javadoc) * * @see org.eclipse.birt.data.engine.api.aggregation.IAggrFunction#getType() */ public int getType() { return aggrFunc.getType(); }
/* * (non-Javadoc) * * @see org.eclipse.birt.data.engine.api.aggregation.IAggrFunction#getName() */ public String getName() { return aggrFunc.getName(); }