接口作用
支持主线的excel、sql、db等类型外的数据集接入bi公共数据
接口内容
@API(level = CustomDatasetProvider.CURRENT_LEVEL)
public abstract class AbstractCustomDatasetProvider implements CustomDatasetProvider {
@Override
public int currentAPILevel() {
return CustomDatasetProvider.CURRENT_LEVEL;
}
@Override
public String mark4Provider() {
return getClass().getName();
}
}
接口接入
<extra-core>
<CustomDatasetProvider class="继承AbstractCustomDatasetProvider的子类路径"/>
</extra-core>
提供给插件的抽象类
统筹接口功能抽象类
public abstract class AbstractCustomDatasetGenerator implements CustomDatasetGenerator, Serializable {
@Override
public boolean match(String name) {
return CompareUtils.isEqual(name, getName());
}
}
取数功能抽象类
不支持sql取数
public abstract class AbstractDefaultDatasourceGenerator implements CustomDatasetDatasourceGenerator {
@Override
public final boolean isSupportedSql() {
return false;
}
@Override
public final RowIterator getRowIterator(List<String> jsonContexts, List<CustomDatasetContext> datasetContexts, String sql, List<ColumnInformation[]> columnInfos) {
throw new UnsupportedOperationException("getRowIterator with sql not supported.");
}
@Override
public final Dialect getDialect(String jsonContext, CustomDatasetContext datasetContext) {
throw new UnsupportedOperationException("getDialect with sql not supported.");
}
// 子类继承时只需要实现不支持 SQL 相关方法
}
支持sql取数
public abstract class AbstractSqlSupportedDatasourceGenerator implements CustomDatasetDatasourceGenerator {
@Override
public final boolean isSupportedSql() {
return true;
}
@Override
public final RowIterator getRowIterator(String jsonContext, CustomDatasetContext datasetContext, ColumnInformation[] columnInfos) {
throw new UnsupportedOperationException("getRowIterator without sql not supported.");
}
// 子类继承时只需要实现 SQL 相关方法
}
前端页面
@Open
public interface CustomDatasetPageGenerator {
/**
* 获取图标
*/
String getIcon(CustomDatasetContext datasetContext);
/**
* 获取html
*/
String getEditPageHTML(CustomDatasetContext datasetContext);
/**
* 获取Component
*/
AssembleComponent getComponent(CustomDatasetContext datasetContext);
}