You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
6.6 KiB
125 lines
6.6 KiB
package com.fanruan.boot.env.function; |
|
|
|
import com.fanruan.boot.DatasourceComponent; |
|
import com.fanruan.carina.Carina; |
|
import com.fanruan.carina.annotions.DependsOn; |
|
import com.fanruan.carina.annotions.FineComponent; |
|
import com.fanruan.carina.annotions.Start; |
|
import com.fanruan.carina.annotions.Stop; |
|
import com.fanruan.carina.annotions.Supplemental; |
|
import com.fanruan.config.impl.data.ConnectionConfigProviderFactory; |
|
import com.fanruan.config.impl.data.ConnectionConfigWriter; |
|
import com.fanruan.config.impl.data.ConnectionConfigWriterFactory; |
|
import com.fanruan.config.impl.data.TableDataConfigProviderFactory; |
|
import com.fanruan.data.ConnectionConfigWrapper; |
|
import com.fanruan.datasource.connection.processor.ElasticSearchConnectionProcessor; |
|
import com.fanruan.datasource.connection.processor.FTPConnectionProcessor; |
|
import com.fanruan.datasource.connection.processor.LocalFileConnectionProcessor; |
|
import com.fanruan.datasource.connection.processor.PublicDatasetConnectionProcessor; |
|
import com.fanruan.datasource.connection.processor.SSHConnectionProcessor; |
|
import com.fanruan.datasource.connection.processor.SapRfcConnectionProcessor; |
|
import com.fanruan.datasource.connection.processor.kafka.KafkaConnectionProcessor; |
|
import com.fanruan.datasource.connection.processor.mongo.MongoConnectionProcessor; |
|
import com.fanruan.workplace.http.codec.SerializerRegister; |
|
import com.fanruan.workplace.http.codec.SerializerRegisterGroup; |
|
import com.fanruan.workplace.http.codec.xml.XmlableSerializer; |
|
import com.fr.base.MultiParameterParser; |
|
import com.fr.base.ParameterType; |
|
import com.fr.base.ParameterTypeHandler; |
|
import com.fr.base.TableData; |
|
import com.fr.base.parameter.FormulaParameterParser; |
|
import com.fr.base.parameter.TableColumnParameterParser; |
|
import com.fr.data.driver.classloader.DriverClassLoaderHelper; |
|
import com.fr.data.driver.classloader.impl.ChildFirstDriverClassLoader; |
|
import com.fr.data.driver.classloader.impl.ChildOnlyDriverClassLoader; |
|
import com.fr.data.driver.constants.DriverLoaderStrategies; |
|
import com.fr.data.impl.Connection; |
|
import com.fr.decision.webservice.v10.datasource.connection.processor.impl.ConnectionPluginProcessor; |
|
import com.fr.decision.webservice.v10.datasource.connection.processor.impl.ConnectionProcessorFactory; |
|
import com.fr.decision.webservice.v10.datasource.connection.processor.impl.JDBCConnectionProcessor; |
|
import com.fr.decision.webservice.v10.datasource.connection.processor.impl.JDYConnectionProcessor; |
|
import com.fr.decision.webservice.v10.datasource.connection.processor.impl.JNDIConnectionProcessor; |
|
import com.fr.decision.webservice.v10.datasource.dataset.processor.impl.DataSetProcessorFactory; |
|
import com.fr.design.data.datapane.connect.LocalConnectionSource; |
|
import com.fr.design.data.tabledata.LocalTableDataSource; |
|
import com.fr.file.TableDataConfigWrapper; |
|
import com.fr.workspace.server.repository.connection.ConnectionWriterShell; |
|
import com.fr.workspace.server.repository.connection.LocalConnectionShell; |
|
import com.fr.workspace.server.repository.tabledata.LocalTableDataShell; |
|
|
|
|
|
/** |
|
* 设计器数据源组件 |
|
* |
|
* @author Destiny.Lin |
|
* @since 11.0 |
|
* Created on 2024/7/2 |
|
*/ |
|
@FineComponent(name = "design_function_datasource") |
|
@DependsOn(dependencies = "design_function_update") |
|
public class DesignDatasourceComponent extends DatasourceComponent { |
|
|
|
/** |
|
* prepare |
|
*/ |
|
@Supplemental |
|
public void prepare() { |
|
super.prepare(); |
|
// 注册数据连接处理器 |
|
initConnectionProcessor(); |
|
DataSetProcessorFactory.init(); |
|
Carina.getApplicationContext().singleton(LocalConnectionShell.class).set(new LocalConnectionSource()); |
|
Carina.getApplicationContext().singleton(LocalTableDataShell.class).set(new LocalTableDataSource()); |
|
Carina.getApplicationContext().group(SerializerRegisterGroup.class).add(new SerializerRegister(Connection.class, XmlableSerializer.getInstance())); |
|
Carina.getApplicationContext().group(SerializerRegisterGroup.class).add(new SerializerRegister(TableData.class, XmlableSerializer.getInstance())); |
|
} |
|
|
|
/** |
|
* start |
|
*/ |
|
@Start |
|
public void start() { |
|
// 服务器数据集与数据连接设计器这边先手动切为finedb存储,后续数据中心适配后再切为他们提供的wrapper |
|
ConnectionConfigProviderFactory.registerConnectionConfigProvider(ConnectionConfigWrapper.getInstance()); |
|
TableDataConfigProviderFactory.getInstance().registerTableDataConfigProvider(new TableDataConfigWrapper()); |
|
registerDriverClassLoader(); |
|
ConnectionConfigWriterFactory.registerConnectionConfigWriter((ConnectionConfigWriter) ConnectionConfigProviderFactory.getConfigProvider()); |
|
Carina.getApplicationContext().singleton(ConnectionWriterShell.class).set(ConnectionConfigWriterFactory.getConfigWriter()); |
|
ParameterTypeHandler.getInstance().addParser(ParameterType.Multi.name(), new MultiParameterParser()); |
|
ParameterTypeHandler.getInstance().addParser(ParameterType.JSONArray.name(), new MultiParameterParser()); |
|
ParameterTypeHandler.getInstance().addParser(ParameterType.Formula.name(), new FormulaParameterParser()); |
|
ParameterTypeHandler.getInstance().addParser(ParameterType.TableColumn.name(), new TableColumnParameterParser()); |
|
} |
|
|
|
private void registerDriverClassLoader() { |
|
DriverClassLoaderHelper.INSTANCE.register(DriverLoaderStrategies.CHILD_FIRST, ChildFirstDriverClassLoader.class); |
|
DriverClassLoaderHelper.INSTANCE.register(DriverLoaderStrategies.CHILD_ONLY, ChildOnlyDriverClassLoader.class); |
|
} |
|
|
|
|
|
/** |
|
* stop |
|
*/ |
|
@Stop |
|
public void stop() { |
|
|
|
} |
|
|
|
/** |
|
* 设计器当前没有更好的扫描手段,只能先手动注册了 |
|
*/ |
|
private void initConnectionProcessor() { |
|
ConnectionProcessorFactory.register(JDBCConnectionProcessor.KEY); |
|
ConnectionProcessorFactory.register(JNDIConnectionProcessor.KEY); |
|
ConnectionProcessorFactory.register(ConnectionPluginProcessor.KEY); |
|
ConnectionProcessorFactory.register(JDYConnectionProcessor.KEY); |
|
ConnectionProcessorFactory.register(new KafkaConnectionProcessor()); |
|
ConnectionProcessorFactory.register(new MongoConnectionProcessor()); |
|
ConnectionProcessorFactory.register(new ElasticSearchConnectionProcessor()); |
|
ConnectionProcessorFactory.register(new FTPConnectionProcessor()); |
|
ConnectionProcessorFactory.register(new LocalFileConnectionProcessor()); |
|
ConnectionProcessorFactory.register(new PublicDatasetConnectionProcessor()); |
|
ConnectionProcessorFactory.register(new SapRfcConnectionProcessor()); |
|
ConnectionProcessorFactory.register(new SSHConnectionProcessor()); |
|
} |
|
}
|
|
|