Search in sources :

Example 1 with DataTransferProcessorDescriptor

use of org.jkiss.dbeaver.registry.transfer.DataTransferProcessorDescriptor in project dbeaver by serge-rider.

the class StreamConsumerPageSettings method activatePage.

@Override
public void activatePage() {
    final StreamConsumerSettings settings = getWizard().getPageSettings(this, StreamConsumerSettings.class);
    DataTransferProcessorDescriptor processor = getWizard().getSettings().getProcessor();
    propertySource = new PropertySourceCustom(processor.getProperties(), getWizard().getSettings().getProcessorProperties());
    propsEditor.loadProperties(propertySource);
    switch(settings.getLobExtractType()) {
        case SKIP:
            lobExtractType.select(EXTRACT_LOB_SKIP);
            break;
        case FILES:
            lobExtractType.select(EXTRACT_LOB_FILES);
            break;
        case INLINE:
            lobExtractType.select(EXTRACT_LOB_INLINE);
            break;
    }
    switch(settings.getLobEncoding()) {
        case BASE64:
            lobEncodingCombo.select(LOB_ENCODING_BASE64);
            break;
        case HEX:
            lobEncodingCombo.select(LOB_ENCODING_HEX);
            break;
        case BINARY:
            lobEncodingCombo.select(LOB_ENCODING_BINARY);
            break;
    }
    updatePageCompletion();
}
Also used : PropertySourceCustom(org.jkiss.dbeaver.runtime.properties.PropertySourceCustom) DataTransferProcessorDescriptor(org.jkiss.dbeaver.registry.transfer.DataTransferProcessorDescriptor)

Example 2 with DataTransferProcessorDescriptor

use of org.jkiss.dbeaver.registry.transfer.DataTransferProcessorDescriptor in project dbeaver by serge-rider.

the class DataTransferPagePipes method loadConsumers.

private void loadConsumers() {
    DataTransferSettings settings = getWizard().getSettings();
    Collection<Class<?>> objectTypes = settings.getObjectTypes();
    List<TransferTarget> transferTargets = new ArrayList<>();
    for (DataTransferNodeDescriptor consumer : DataTransferRegistry.getInstance().getAvailableConsumers(objectTypes)) {
        Collection<DataTransferProcessorDescriptor> processors = consumer.getAvailableProcessors(objectTypes);
        if (CommonUtils.isEmpty(processors)) {
            transferTargets.add(new TransferTarget(consumer, null));
        } else {
            for (DataTransferProcessorDescriptor processor : processors) {
                transferTargets.add(new TransferTarget(consumer, processor));
            }
        }
    }
    consumersTable.setInput(transferTargets);
}
Also used : ArrayList(java.util.ArrayList) DataTransferNodeDescriptor(org.jkiss.dbeaver.registry.transfer.DataTransferNodeDescriptor) DataTransferProcessorDescriptor(org.jkiss.dbeaver.registry.transfer.DataTransferProcessorDescriptor)

Example 3 with DataTransferProcessorDescriptor

use of org.jkiss.dbeaver.registry.transfer.DataTransferProcessorDescriptor in project dbeaver by serge-rider.

the class DataTransferSettings method saveTo.

void saveTo(IDialogSettings dialogSettings) {
    dialogSettings.put("maxJobCount", maxJobCount);
    // Save nodes' settings
    for (Map.Entry<Class, NodeSettings> entry : nodeSettings.entrySet()) {
        IDialogSettings nodeSection = DialogSettings.getOrCreateSection(dialogSettings, entry.getKey().getSimpleName());
        entry.getValue().settings.saveSettings(nodeSection);
    }
    if (producer != null) {
        dialogSettings.put("producer", producer.getId());
    }
    if (consumer != null) {
        dialogSettings.put("consumer", consumer.getId());
    }
    if (processor != null) {
        dialogSettings.put("processor", processor.getId());
    }
    // Save processors' properties
    IDialogSettings processorsSection = DialogSettings.getOrCreateSection(dialogSettings, "processors");
    for (DataTransferProcessorDescriptor procDescriptor : processorPropsHistory.keySet()) {
        IDialogSettings procSettings = DialogSettings.getOrCreateSection(processorsSection, procDescriptor.getId());
        procSettings.put("@node", procDescriptor.getNode().getId());
        Map<Object, Object> props = processorPropsHistory.get(procDescriptor);
        if (props != null) {
            StringBuilder propNames = new StringBuilder();
            for (Map.Entry<Object, Object> prop : props.entrySet()) {
                propNames.append(prop.getKey()).append(',');
            }
            procSettings.put("@propNames", propNames.toString());
            for (Map.Entry<Object, Object> prop : props.entrySet()) {
                procSettings.put(CommonUtils.toString(prop.getKey()), CommonUtils.toString(prop.getValue()));
            }
        }
    }
}
Also used : IDialogSettings(org.eclipse.jface.dialogs.IDialogSettings) DataTransferProcessorDescriptor(org.jkiss.dbeaver.registry.transfer.DataTransferProcessorDescriptor)

Example 4 with DataTransferProcessorDescriptor

use of org.jkiss.dbeaver.registry.transfer.DataTransferProcessorDescriptor in project dbeaver by serge-rider.

the class DataTransferPagePipes method createControl.

@Override
public void createControl(Composite parent) {
    initializeDialogUnits(parent);
    Composite composite = new Composite(parent, SWT.NULL);
    composite.setLayout(new GridLayout());
    composite.setLayoutData(new GridData(GridData.FILL_BOTH));
    consumersTable = new TableViewer(composite, SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION);
    consumersTable.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
    consumersTable.getTable().setLinesVisible(true);
    consumersTable.setContentProvider(new IStructuredContentProvider() {

        @Override
        public void dispose() {
        }

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        @Override
        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof Collection) {
                return ((Collection<?>) inputElement).toArray();
            }
            return new Object[0];
        }
    });
    CellLabelProvider labelProvider = new CellLabelProvider() {

        @Override
        public void update(ViewerCell cell) {
            TransferTarget element = (TransferTarget) cell.getElement();
            if (cell.getColumnIndex() == 0) {
                if (element.processor != null) {
                    cell.setImage(DBeaverIcons.getImage(element.processor.getIcon()));
                    cell.setText(element.processor.getName());
                } else {
                    cell.setImage(DBeaverIcons.getImage(element.consumer.getIcon()));
                    cell.setText(element.consumer.getName());
                }
            } else {
                if (element.processor != null) {
                    cell.setText(element.processor.getDescription());
                } else {
                    cell.setText(element.consumer.getDescription());
                }
            }
        }
    };
    {
        TableViewerColumn columnName = new TableViewerColumn(consumersTable, SWT.LEFT);
        columnName.setLabelProvider(labelProvider);
        columnName.getColumn().setText(CoreMessages.data_transfer_wizard_init_column_exported);
        TableViewerColumn columnDesc = new TableViewerColumn(consumersTable, SWT.LEFT);
        columnDesc.setLabelProvider(labelProvider);
        columnDesc.getColumn().setText(CoreMessages.data_transfer_wizard_init_column_description);
    }
    loadConsumers();
    consumersTable.getTable().addSelectionListener(new SelectionListener() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            final IStructuredSelection selection = (IStructuredSelection) consumersTable.getSelection();
            TransferTarget target;
            if (!selection.isEmpty()) {
                target = (TransferTarget) selection.getFirstElement();
            } else {
                target = null;
            }
            if (target == null) {
                getWizard().getSettings().selectConsumer(null, null);
            } else {
                getWizard().getSettings().selectConsumer(target.consumer, target.processor);
            }
            updatePageCompletion();
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            widgetSelected(e);
            if (isPageComplete()) {
                getWizard().getContainer().showPage(getWizard().getNextPage(DataTransferPagePipes.this));
            }
        }
    });
    consumersTable.getTable().addControlListener(new ControlAdapter() {

        @Override
        public void controlResized(ControlEvent e) {
            UIUtils.packColumns(consumersTable.getTable());
            UIUtils.maxTableColumnsWidth(consumersTable.getTable());
            consumersTable.getTable().removeControlListener(this);
        }
    });
    setControl(composite);
    DataTransferNodeDescriptor consumer = getWizard().getSettings().getConsumer();
    DataTransferProcessorDescriptor processor = getWizard().getSettings().getProcessor();
    if (consumer != null) {
        Collection<TransferTarget> targets = (Collection<TransferTarget>) consumersTable.getInput();
        for (TransferTarget target : targets) {
            if (target.consumer == consumer && target.processor == processor) {
                consumersTable.setSelection(new StructuredSelection(target));
                break;
            }
        }
    }
    updatePageCompletion();
}
Also used : Composite(org.eclipse.swt.widgets.Composite) ControlAdapter(org.eclipse.swt.events.ControlAdapter) DataTransferProcessorDescriptor(org.jkiss.dbeaver.registry.transfer.DataTransferProcessorDescriptor) GridLayout(org.eclipse.swt.layout.GridLayout) GridData(org.eclipse.swt.layout.GridData) SelectionEvent(org.eclipse.swt.events.SelectionEvent) Collection(java.util.Collection) DataTransferNodeDescriptor(org.jkiss.dbeaver.registry.transfer.DataTransferNodeDescriptor) ControlEvent(org.eclipse.swt.events.ControlEvent) SelectionListener(org.eclipse.swt.events.SelectionListener)

Example 5 with DataTransferProcessorDescriptor

use of org.jkiss.dbeaver.registry.transfer.DataTransferProcessorDescriptor in project dbeaver by serge-rider.

the class DataTransferSettings method loadFrom.

void loadFrom(IRunnableContext runnableContext, IDialogSettings dialogSettings) {
    try {
        maxJobCount = dialogSettings.getInt("maxJobCount");
    } catch (NumberFormatException e) {
        maxJobCount = DEFAULT_THREADS_NUM;
    }
    String producerId = dialogSettings.get("producer");
    if (!CommonUtils.isEmpty(producerId)) {
        DataTransferNodeDescriptor producerNode = DataTransferRegistry.getInstance().getNodeById(producerId);
        if (producerNode != null) {
            this.producer = producerNode;
        }
    }
    if (consumerOptional) {
        DataTransferNodeDescriptor savedConsumer = null;
        String consumerId = dialogSettings.get("consumer");
        if (!CommonUtils.isEmpty(consumerId)) {
            DataTransferNodeDescriptor consumerNode = DataTransferRegistry.getInstance().getNodeById(consumerId);
            if (consumerNode != null) {
                savedConsumer = consumerNode;
            }
        }
        DataTransferProcessorDescriptor savedProcessor = null;
        if (savedConsumer != null) {
            String processorId = dialogSettings.get("processor");
            if (!CommonUtils.isEmpty(processorId)) {
                savedProcessor = savedConsumer.getProcessor(processorId);
            }
        }
        if (savedConsumer != null) {
            selectConsumer(savedConsumer, savedProcessor);
        }
    }
    // Load nodes' settings
    for (Map.Entry<Class, NodeSettings> entry : nodeSettings.entrySet()) {
        IDialogSettings nodeSection = DialogSettings.getOrCreateSection(dialogSettings, entry.getKey().getSimpleName());
        entry.getValue().settings.loadSettings(runnableContext, this, nodeSection);
    }
    IDialogSettings processorsSection = dialogSettings.getSection("processors");
    if (processorsSection != null) {
        for (IDialogSettings procSection : ArrayUtils.safeArray(processorsSection.getSections())) {
            String processorId = procSection.getName();
            String nodeId = procSection.get("@node");
            String propNamesId = procSection.get("@propNames");
            DataTransferNodeDescriptor node = DataTransferRegistry.getInstance().getNodeById(nodeId);
            if (node != null) {
                Map<Object, 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);
                    NodeSettings nodeSettings = this.nodeSettings.get(node.getNodeClass());
                    if (nodeSettings != null) {
                    }
                }
            }
        }
    }
}
Also used : IDialogSettings(org.eclipse.jface.dialogs.IDialogSettings) DataTransferNodeDescriptor(org.jkiss.dbeaver.registry.transfer.DataTransferNodeDescriptor) DataTransferProcessorDescriptor(org.jkiss.dbeaver.registry.transfer.DataTransferProcessorDescriptor)

Aggregations

DataTransferProcessorDescriptor (org.jkiss.dbeaver.registry.transfer.DataTransferProcessorDescriptor)5 DataTransferNodeDescriptor (org.jkiss.dbeaver.registry.transfer.DataTransferNodeDescriptor)3 IDialogSettings (org.eclipse.jface.dialogs.IDialogSettings)2 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 ControlAdapter (org.eclipse.swt.events.ControlAdapter)1 ControlEvent (org.eclipse.swt.events.ControlEvent)1 SelectionEvent (org.eclipse.swt.events.SelectionEvent)1 SelectionListener (org.eclipse.swt.events.SelectionListener)1 GridData (org.eclipse.swt.layout.GridData)1 GridLayout (org.eclipse.swt.layout.GridLayout)1 Composite (org.eclipse.swt.widgets.Composite)1 PropertySourceCustom (org.jkiss.dbeaver.runtime.properties.PropertySourceCustom)1