use of org.jkiss.dbeaver.model.runtime.MonitorRunnableContext in project dbeaver by serge-rider.
the class DataTransferSettings method loadSettings.
public void loadSettings(DBRProgressMonitor monitor, Map<String, Object> config) {
this.setMaxJobCount(CommonUtils.toInt(config.get("maxJobCount"), DataTransferSettings.DEFAULT_THREADS_NUM));
this.setShowFinalMessage(CommonUtils.getBoolean(config.get("showFinalMessage"), this.isShowFinalMessage()));
DataTransferNodeDescriptor savedConsumer = null, savedProducer = null, processorNode = null;
{
// Restore consumer/producer from saved configuration
// Do this only if consumer/producer weren't set explicitly
{
String consumerId = CommonUtils.toString(config.get("consumer"));
if (!CommonUtils.isEmpty(consumerId)) {
DataTransferNodeDescriptor consumerNode = DataTransferRegistry.getInstance().getNodeById(consumerId);
// Check that this consumer is allowed
if (!CommonUtils.isEmpty(initObjects)) {
if (!DataTransferRegistry.getInstance().getAvailableConsumers(initObjects).contains(consumerNode)) {
consumerNode = null;
}
}
if (consumerNode != null) {
if (this.consumer == null) {
savedConsumer = consumerNode;
this.setConsumer(consumerNode);
} else {
savedConsumer = this.consumer;
}
if (consumerNode.hasProcessors()) {
processorNode = consumerNode;
}
}
}
}
{
String producerId = CommonUtils.toString(config.get("producer"));
if (!CommonUtils.isEmpty(producerId)) {
DataTransferNodeDescriptor producerNode = DataTransferRegistry.getInstance().getNodeById(producerId);
// Check that this producer is allowed
if (!CommonUtils.isEmpty(initObjects)) {
if (!DataTransferRegistry.getInstance().getAvailableProducers(initObjects).contains(producerNode)) {
producerNode = null;
}
}
if (producerNode != null) {
if (this.producer == null) {
savedProducer = producerNode;
this.setProducer(producerNode);
} else {
savedProducer = this.producer;
}
if (producerNode.hasProcessors()) {
processorNode = producerNode;
}
}
}
}
}
DataTransferProcessorDescriptor savedProcessor = null;
if (processorNode != null) {
String processorId = CommonUtils.toString(config.get("processor"));
if (!CommonUtils.isEmpty(processorId)) {
savedProcessor = processorNode.getProcessor(processorId);
if (savedProcessor == null) {
state.addError(new DBException("Processor '" + processorId + "' not found in '" + processorNode.getName() + "'"));
}
}
}
if (this.consumerOptional && savedConsumer != null) {
this.selectConsumer(savedConsumer, savedProcessor, false);
}
if (this.producerOptional && savedProducer != null) {
this.selectProducer(savedProducer, savedProcessor, false);
}
if (processorNode == producer) {
producerProcessor = true;
} else if (processorNode == consumer) {
producerProcessor = false;
}
// Load processor properties
Map<String, Object> processorsSection = JSONUtils.getObject(config, "processors");
{
for (Map.Entry<String, Object> procIter : processorsSection.entrySet()) {
Map<String, Object> procSection = (Map<String, Object>) procIter.getValue();
String processorId = procIter.getKey();
String nodeId = CommonUtils.toString(procSection.get("@node"));
if (CommonUtils.isEmpty(nodeId)) {
// Legacy code support
int divPos = processorId.indexOf(':');
if (divPos != -1) {
nodeId = processorId.substring(0, divPos);
processorId = processorId.substring(divPos + 1);
}
}
String propNamesId = CommonUtils.toString(procSection.get("@propNames"));
DataTransferNodeDescriptor node = DataTransferRegistry.getInstance().getNodeById(nodeId);
if (node != null) {
Map<String, Object> props = new HashMap<>();
DataTransferProcessorDescriptor nodeProcessor = node.getProcessor(processorId);
if (nodeProcessor != null) {
for (String prop : CommonUtils.splitString(propNamesId, ',')) {
props.put(prop, procSection.get(prop));
}
processorPropsHistory.put(nodeProcessor, props);
}
}
}
}
// Load nodes' settings (key is impl class simple name, value is descriptor)
Map<String, DataTransferNodeDescriptor> nodeNames = new LinkedHashMap<>();
if (producer != null) {
nodeNames.put(producer.getNodeClass().getSimpleName(), producer);
}
if (consumer != null) {
nodeNames.put(consumer.getNodeClass().getSimpleName(), consumer);
}
MonitorRunnableContext runnableContext = new MonitorRunnableContext(monitor);
for (Map.Entry<String, DataTransferNodeDescriptor> node : nodeNames.entrySet()) {
Map<String, Object> nodeSection = JSONUtils.getObject(config, node.getKey());
IDataTransferSettings nodeSettings = this.getNodeSettings(node.getValue());
if (nodeSettings != null) {
nodeSettings.loadSettings(runnableContext, this, nodeSection);
}
}
// Initialize pipes with loaded settings
for (int i = 0; i < dataPipes.size(); i++) {
DataTransferPipe pipe = dataPipes.get(i);
if (pipe.getProducer() != null && pipe.getConsumer() != null) {
try {
pipe.initPipe(this, i, dataPipes.size());
} catch (Exception e) {
state.addError(e);
}
}
}
}
use of org.jkiss.dbeaver.model.runtime.MonitorRunnableContext in project dbeaver by serge-rider.
the class DataTransferSettings method getNodesFromLocation.
public static <T> List<T> getNodesFromLocation(@NotNull DBRProgressMonitor monitor, DBTTask task, DataTransferState state, Log taskLog, String nodeType, Class<T> nodeClass) {
Map<String, Object> config = task.getProperties();
List<T> result = new ArrayList<>();
Object nodeList = config.get(nodeType);
if (nodeList instanceof Collection) {
MonitorRunnableContext runnableContext = new MonitorRunnableContext(monitor);
for (Object nodeObj : (Collection) nodeList) {
if (nodeObj instanceof Map) {
try {
Object node = JSONUtils.deserializeObject(runnableContext, task, (Map<String, Object>) nodeObj);
if (nodeClass.isInstance(node)) {
result.add(nodeClass.cast(node));
}
} catch (DBCException e) {
state.addError(e);
taskLog.error(e);
}
}
}
}
return result;
}
use of org.jkiss.dbeaver.model.runtime.MonitorRunnableContext in project dbeaver by dbeaver.
the class DataTransferSettings method getNodesFromLocation.
public static <T> List<T> getNodesFromLocation(@NotNull DBRProgressMonitor monitor, DBTTask task, DataTransferState state, Log taskLog, String nodeType, Class<T> nodeClass) {
Map<String, Object> config = task.getProperties();
List<T> result = new ArrayList<>();
Object nodeList = config.get(nodeType);
if (nodeList instanceof Collection) {
MonitorRunnableContext runnableContext = new MonitorRunnableContext(monitor);
for (Object nodeObj : (Collection) nodeList) {
if (nodeObj instanceof Map) {
try {
Object node = JSONUtils.deserializeObject(runnableContext, task, (Map<String, Object>) nodeObj);
if (nodeClass.isInstance(node)) {
result.add(nodeClass.cast(node));
}
} catch (DBCException e) {
state.addError(e);
taskLog.error(e);
}
}
}
}
return result;
}
use of org.jkiss.dbeaver.model.runtime.MonitorRunnableContext in project dbeaver by dbeaver.
the class DataTransferSettings method loadSettings.
public void loadSettings(DBRProgressMonitor monitor, Map<String, Object> config) {
this.setMaxJobCount(CommonUtils.toInt(config.get("maxJobCount"), DataTransferSettings.DEFAULT_THREADS_NUM));
this.setShowFinalMessage(CommonUtils.getBoolean(config.get("showFinalMessage"), this.isShowFinalMessage()));
DataTransferNodeDescriptor savedConsumer = null, savedProducer = null, processorNode = null;
{
// Restore consumer/producer from saved configuration
// Do this only if consumer/producer weren't set explicitly
{
String consumerId = CommonUtils.toString(config.get("consumer"));
if (!CommonUtils.isEmpty(consumerId)) {
DataTransferNodeDescriptor consumerNode = DataTransferRegistry.getInstance().getNodeById(consumerId);
// Check that this consumer is allowed
if (!CommonUtils.isEmpty(initObjects)) {
if (!DataTransferRegistry.getInstance().getAvailableConsumers(initObjects).contains(consumerNode)) {
consumerNode = null;
}
}
if (consumerNode != null) {
if (this.consumer == null) {
savedConsumer = consumerNode;
this.setConsumer(consumerNode);
} else {
savedConsumer = this.consumer;
}
if (consumerNode.hasProcessors()) {
processorNode = consumerNode;
}
}
}
}
{
String producerId = CommonUtils.toString(config.get("producer"));
if (!CommonUtils.isEmpty(producerId)) {
DataTransferNodeDescriptor producerNode = DataTransferRegistry.getInstance().getNodeById(producerId);
// Check that this producer is allowed
if (!CommonUtils.isEmpty(initObjects)) {
if (!DataTransferRegistry.getInstance().getAvailableProducers(initObjects).contains(producerNode)) {
producerNode = null;
}
}
if (producerNode != null) {
if (this.producer == null) {
savedProducer = producerNode;
this.setProducer(producerNode);
} else {
savedProducer = this.producer;
}
if (producerNode.hasProcessors()) {
processorNode = producerNode;
}
}
}
}
}
DataTransferProcessorDescriptor savedProcessor = null;
if (processorNode != null) {
String processorId = CommonUtils.toString(config.get("processor"));
if (!CommonUtils.isEmpty(processorId)) {
savedProcessor = processorNode.getProcessor(processorId);
if (savedProcessor == null) {
state.addError(new DBException("Processor '" + processorId + "' not found in '" + processorNode.getName() + "'"));
}
}
}
if (this.consumerOptional && savedConsumer != null) {
this.selectConsumer(savedConsumer, savedProcessor, false);
}
if (this.producerOptional && savedProducer != null) {
this.selectProducer(savedProducer, savedProcessor, false);
}
if (processorNode == producer) {
producerProcessor = true;
} else if (processorNode == consumer) {
producerProcessor = false;
}
// Load processor properties
Map<String, Object> processorsSection = JSONUtils.getObject(config, "processors");
{
for (Map.Entry<String, Object> procIter : processorsSection.entrySet()) {
Map<String, Object> procSection = (Map<String, Object>) procIter.getValue();
String processorId = procIter.getKey();
String nodeId = CommonUtils.toString(procSection.get("@node"));
if (CommonUtils.isEmpty(nodeId)) {
// Legacy code support
int divPos = processorId.indexOf(':');
if (divPos != -1) {
nodeId = processorId.substring(0, divPos);
processorId = processorId.substring(divPos + 1);
}
}
String propNamesId = CommonUtils.toString(procSection.get("@propNames"));
DataTransferNodeDescriptor node = DataTransferRegistry.getInstance().getNodeById(nodeId);
if (node != null) {
Map<String, Object> props = new HashMap<>();
DataTransferProcessorDescriptor nodeProcessor = node.getProcessor(processorId);
if (nodeProcessor != null) {
for (String prop : CommonUtils.splitString(propNamesId, ',')) {
props.put(prop, procSection.get(prop));
}
processorPropsHistory.put(nodeProcessor, props);
}
}
}
}
// Load nodes' settings (key is impl class simple name, value is descriptor)
Map<String, DataTransferNodeDescriptor> nodeNames = new LinkedHashMap<>();
if (producer != null) {
nodeNames.put(producer.getNodeClass().getSimpleName(), producer);
}
if (consumer != null) {
nodeNames.put(consumer.getNodeClass().getSimpleName(), consumer);
}
MonitorRunnableContext runnableContext = new MonitorRunnableContext(monitor);
for (Map.Entry<String, DataTransferNodeDescriptor> node : nodeNames.entrySet()) {
Map<String, Object> nodeSection = JSONUtils.getObject(config, node.getKey());
IDataTransferSettings nodeSettings = this.getNodeSettings(node.getValue());
if (nodeSettings != null) {
nodeSettings.loadSettings(runnableContext, this, nodeSection);
}
}
// Initialize pipes with loaded settings
for (int i = 0; i < dataPipes.size(); i++) {
DataTransferPipe pipe = dataPipes.get(i);
if (pipe.getProducer() != null && pipe.getConsumer() != null) {
try {
pipe.initPipe(this, i, dataPipes.size());
} catch (Exception e) {
state.addError(e);
}
}
}
}
Aggregations