Search in sources :

Example 11 with DataTransferNodeDescriptor

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));
    }
}
Also used : CommandContributionItemParameter(org.eclipse.ui.menus.CommandContributionItemParameter) DataTransferProcessorDescriptor(org.jkiss.dbeaver.tools.transfer.registry.DataTransferProcessorDescriptor) DataTransferNodeDescriptor(org.jkiss.dbeaver.tools.transfer.registry.DataTransferNodeDescriptor) CommandContributionItem(org.eclipse.ui.menus.CommandContributionItem)

Example 12 with DataTransferNodeDescriptor

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;
}
Also used : DBException(org.jkiss.dbeaver.DBException) DataTransferNodeDescriptor(org.jkiss.dbeaver.tools.transfer.registry.DataTransferNodeDescriptor) NotNull(org.jkiss.code.NotNull)

Example 13 with DataTransferNodeDescriptor

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();
}
Also used : DataTransferRegistry(org.jkiss.dbeaver.tools.transfer.registry.DataTransferRegistry) DBSObject(org.jkiss.dbeaver.model.struct.DBSObject) DataTransferNodeDescriptor(org.jkiss.dbeaver.tools.transfer.registry.DataTransferNodeDescriptor)

Example 14 with DataTransferNodeDescriptor

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;
            }
        }
    }
}
Also used : DataTransferRegistry(org.jkiss.dbeaver.tools.transfer.registry.DataTransferRegistry) DataTransferNodeDescriptor(org.jkiss.dbeaver.tools.transfer.registry.DataTransferNodeDescriptor)

Example 15 with DataTransferNodeDescriptor

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);
}
Also used : DataTransferSettings(org.jkiss.dbeaver.tools.transfer.DataTransferSettings) DBSObject(org.jkiss.dbeaver.model.struct.DBSObject) ArrayList(java.util.ArrayList) DataTransferNodeDescriptor(org.jkiss.dbeaver.tools.transfer.registry.DataTransferNodeDescriptor) DataTransferProcessorDescriptor(org.jkiss.dbeaver.tools.transfer.registry.DataTransferProcessorDescriptor)

Aggregations

DataTransferNodeDescriptor (org.jkiss.dbeaver.tools.transfer.registry.DataTransferNodeDescriptor)22 DataTransferProcessorDescriptor (org.jkiss.dbeaver.tools.transfer.registry.DataTransferProcessorDescriptor)16 DBSObject (org.jkiss.dbeaver.model.struct.DBSObject)8 ArrayList (java.util.ArrayList)4 CommandContributionItem (org.eclipse.ui.menus.CommandContributionItem)4 CommandContributionItemParameter (org.eclipse.ui.menus.CommandContributionItemParameter)4 DBException (org.jkiss.dbeaver.DBException)4 DataTransferSettings (org.jkiss.dbeaver.tools.transfer.DataTransferSettings)4 DataTransferRegistry (org.jkiss.dbeaver.tools.transfer.registry.DataTransferRegistry)4 Collection (java.util.Collection)2 IWorkbenchPartSite (org.eclipse.ui.IWorkbenchPartSite)2 NotNull (org.jkiss.code.NotNull)2 DBPObject (org.jkiss.dbeaver.model.DBPObject)2 DBCException (org.jkiss.dbeaver.model.exec.DBCException)2 DBPPropertyDescriptor (org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor)2 MonitorRunnableContext (org.jkiss.dbeaver.model.runtime.MonitorRunnableContext)2