use of org.jkiss.dbeaver.tools.transfer.registry.DataTransferNodeDescriptor in project dbeaver by dbeaver.
the class ResultSetHandlerOpenWith method fillOpenWithMenu.
public static void fillOpenWithMenu(ResultSetViewer viewer, IContributionManager openWithMenu) {
ResultSetDataContainerOptions options = new ResultSetDataContainerOptions();
ResultSetDataContainer dataContainer = new ResultSetDataContainer(viewer, options);
List<DataTransferProcessorDescriptor> appProcessors = new ArrayList<>();
for (final DataTransferNodeDescriptor consumerNode : DataTransferRegistry.getInstance().getAvailableConsumers(Collections.singleton(dataContainer))) {
for (DataTransferProcessorDescriptor processor : consumerNode.getProcessors()) {
if (processor.getAppFileExtension() != null) {
appProcessors.add(processor);
}
}
}
appProcessors.sort(Comparator.comparingInt(DataTransferProcessorDescriptor::getOrder));
for (DataTransferProcessorDescriptor processor : appProcessors) {
CommandContributionItemParameter params = new CommandContributionItemParameter(viewer.getSite(), processor.getId(), ResultSetHandlerOpenWith.CMD_OPEN_WITH, CommandContributionItem.STYLE_RADIO);
params.label = processor.getAppName();
if (processor.getIcon() != null) {
params.icon = DBeaverIcons.getImageDescriptor(processor.getIcon());
}
Map<String, Object> parameters = new HashMap<>();
parameters.put(ResultSetHandlerOpenWith.PARAM_PROCESSOR_ID, processor.getFullId());
params.parameters = parameters;
openWithMenu.add(new CommandContributionItem(params));
}
}
use of org.jkiss.dbeaver.tools.transfer.registry.DataTransferNodeDescriptor in project dbeaver by dbeaver.
the class PreviewMappingDialog method getNodeSettings.
@NotNull
private IDataTransferSettings getNodeSettings(IDataTransferNode node) throws DBException {
DataTransferNodeDescriptor producerNode = DataTransferRegistry.getInstance().getNodeByType(node.getClass());
if (producerNode == null) {
throw new DBException("Cannot find node descriptor for " + node.getClass().getName());
}
IDataTransferSettings producerSettings = dtSettings.getNodeSettings(producerNode);
if (producerSettings == null) {
throw new DBException("Cannot find node settings for " + producerNode.getName());
}
return producerSettings;
}
use of org.jkiss.dbeaver.tools.transfer.registry.DataTransferNodeDescriptor in project dbeaver by dbeaver.
the class DataTransferWizard method loadSettings.
void loadSettings() {
// Load node settings
Collection<DBSObject> objectTypes = settings.getSourceObjects();
List<DataTransferNodeDescriptor> nodes = new ArrayList<>();
DataTransferRegistry registry = DataTransferRegistry.getInstance();
if (ArrayUtils.isEmpty(settings.getInitProducers())) {
nodes.addAll(registry.getAvailableProducers(objectTypes));
} else {
for (IDataTransferProducer source : settings.getInitProducers()) {
DataTransferNodeDescriptor node = registry.getNodeByType(source.getClass());
if (node != null && !nodes.contains(node)) {
nodes.add(node);
}
}
}
if (ArrayUtils.isEmpty(settings.getInitConsumers())) {
nodes.addAll(registry.getAvailableConsumers(objectTypes));
} else {
for (IDataTransferConsumer target : settings.getInitConsumers()) {
DataTransferNodeDescriptor node = registry.getNodeByType(target.getClass());
if (node != null && !nodes.contains(node)) {
nodes.add(node);
}
}
}
boolean settingsChanged = nodeSettings.size() != nodes.size();
if (!settingsChanged) {
List<NodePageSettings> nsList = new ArrayList<>(nodeSettings.values());
for (int i = 0; i < nodeSettings.size(); i++) {
if (nsList.get(i).sourceNode != nodes.get(i)) {
settingsChanged = true;
break;
}
}
}
if (settingsChanged) {
nodeSettings.clear();
for (DataTransferNodeDescriptor node : nodes) {
addNodeSettings(node);
}
}
updateWizardTitle();
}
use of org.jkiss.dbeaver.tools.transfer.registry.DataTransferNodeDescriptor in project dbeaver by dbeaver.
the class DataTransferSettings method initializePipes.
private void initializePipes(@Nullable Collection<IDataTransferProducer> producers, @Nullable Collection<IDataTransferConsumer> consumers, boolean isExport) {
this.initProducers = producers == null ? null : producers.toArray(new IDataTransferProducer[0]);
this.initConsumers = consumers == null ? null : consumers.toArray(new IDataTransferConsumer[0]);
this.dataPipes = new ArrayList<>();
this.initObjects.clear();
this.consumerOptional = false;
this.producerOptional = false;
DataTransferRegistry registry = DataTransferRegistry.getInstance();
if (!ArrayUtils.isEmpty(initProducers) && !ArrayUtils.isEmpty(initConsumers)) {
// Processor belongs to non-database nodes anyway
if (initProducers.length != initConsumers.length) {
throw new IllegalArgumentException("Producers number must match consumers number");
}
// Make pipes
for (int i = 0; i < initProducers.length; i++) {
if (initProducers[i].getDatabaseObject() != null)
initObjects.add(initProducers[i].getDatabaseObject());
dataPipes.add(new DataTransferPipe(initProducers[i], initConsumers[i]));
}
// initProducers[0] instanceof IDataTransferNodePrimary;
consumerOptional = isExport;
// initConsumers[0] instanceof IDataTransferNodePrimary;
producerOptional = !isExport;
if (producerOptional && consumerOptional) {
// Both producer and consumer set are primary
// This may happen when task was saved for db-> settings
// Leave only optional consumer then
producerOptional = false;
}
} else if (!ArrayUtils.isEmpty(initProducers)) {
// Make pipes
for (IDataTransferProducer source : initProducers) {
if (source.getDatabaseObject() != null)
initObjects.add(source.getDatabaseObject());
dataPipes.add(new DataTransferPipe(source, null));
}
// Set default producer
Class<? extends IDataTransferProducer> producerType = dataPipes.get(0).getProducer().getClass();
DataTransferNodeDescriptor producerDesc = registry.getNodeByType(producerType);
if (producerDesc != null) {
selectProducer(producerDesc);
consumerOptional = true;
} else {
DBWorkbench.getPlatformUI().showError(DTMessages.data_transfer_settings_title_find_producer, DTMessages.data_transfer_settings_message_find_data_producer);
}
} else if (!ArrayUtils.isEmpty(initConsumers)) {
// Make pipes
for (IDataTransferConsumer target : initConsumers) {
if (target.getDatabaseObject() != null)
initObjects.add(target.getDatabaseObject());
dataPipes.add(new DataTransferPipe(null, target));
}
// Set default consumer
Class<? extends IDataTransferConsumer> consumerType = dataPipes.get(0).getConsumer().getClass();
DataTransferNodeDescriptor consumerDesc = registry.getNodeByType(consumerType);
if (consumerDesc != null) {
selectConsumer(consumerDesc, null, false);
consumerOptional = false;
} else {
DBWorkbench.getPlatformUI().showError(DTMessages.data_transfer_settings_title_find_consumer, DTMessages.data_transfer_settings_message_find_data_consumer);
}
producerOptional = true;
} else {
consumerOptional = true;
producerOptional = true;
}
if (!ArrayUtils.isEmpty(initConsumers)) {
for (IDataTransferConsumer target : initConsumers) {
DataTransferNodeDescriptor node = registry.getNodeByType(target.getClass());
if (node != null) {
this.consumer = node;
}
}
}
}
use of org.jkiss.dbeaver.tools.transfer.registry.DataTransferNodeDescriptor in project dbeaver by dbeaver.
the class DataTransferPagePipes method loadConsumers.
private void loadConsumers() {
DataTransferSettings settings = getWizard().getSettings();
Collection<DBSObject> objects = settings.getSourceObjects();
List<TransferTarget> transferTargets = new ArrayList<>();
for (DataTransferNodeDescriptor consumer : DataTransferRegistry.getInstance().getAvailableConsumers(objects)) {
Collection<DataTransferProcessorDescriptor> processors = consumer.getAvailableProcessors(objects);
if (CommonUtils.isEmpty(processors)) {
transferTargets.add(new TransferTarget(consumer, null));
} else {
for (DataTransferProcessorDescriptor processor : processors) {
transferTargets.add(new TransferTarget(consumer, processor));
}
}
}
nodesTable.setInput(transferTargets);
}
Aggregations