Search in sources :

Example 1 with DBNProject

use of org.jkiss.dbeaver.model.navigator.DBNProject in project dbeaver by serge-rider.

the class NavigatorHandlerProjectSelect method execute.

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    final DBeaverCore core = DBeaverCore.getInstance();
    final DBNProject projectNode = core.getNavigatorModel().getRoot().getProject(core.getProjectRegistry().getActiveProject());
    if (projectNode != null) {
        final IWorkbenchWindow workbenchWindow = HandlerUtil.getActiveWorkbenchWindow(event);
        try {
            final ProjectNavigatorView projectsView = (ProjectNavigatorView) workbenchWindow.getActivePage().showView(ProjectNavigatorView.VIEW_ID);
            if (projectsView != null) {
                projectsView.showNode(projectNode);
            }
        } catch (PartInitException e) {
            log.error(e);
        }
    }
    return null;
}
Also used : IWorkbenchWindow(org.eclipse.ui.IWorkbenchWindow) DBNProject(org.jkiss.dbeaver.model.navigator.DBNProject) DBeaverCore(org.jkiss.dbeaver.core.DBeaverCore) ProjectNavigatorView(org.jkiss.dbeaver.ui.navigator.project.ProjectNavigatorView) PartInitException(org.eclipse.ui.PartInitException)

Example 2 with DBNProject

use of org.jkiss.dbeaver.model.navigator.DBNProject in project dbeaver by serge-rider.

the class EditorUtils method setFileDataSource.

public static void setFileDataSource(@NotNull IFile file, @Nullable DBPDataSourceContainer dataSourceContainer, boolean notify) {
    try {
        file.setPersistentProperty(QN_DATA_SOURCE_ID, dataSourceContainer == null ? null : dataSourceContainer.getId());
        file.setPersistentProperty(QN_PROJECT_ID, dataSourceContainer == null ? null : dataSourceContainer.getRegistry().getProject().getName());
        if (notify) {
            final DBNProject projectNode = DBeaverCore.getInstance().getNavigatorModel().getRoot().getProject(file.getProject());
            if (projectNode != null) {
                final DBNResource fileNode = projectNode.findResource(file);
                if (fileNode != null) {
                    fileNode.refreshResourceState(dataSourceContainer);
                }
            }
        }
    } catch (CoreException e) {
        log.error("Internal error while writing file property", e);
    }
}
Also used : DBNResource(org.jkiss.dbeaver.model.navigator.DBNResource) DBNProject(org.jkiss.dbeaver.model.navigator.DBNProject) CoreException(org.eclipse.core.runtime.CoreException)

Example 3 with DBNProject

use of org.jkiss.dbeaver.model.navigator.DBNProject in project dbeaver by dbeaver.

the class NavigatorHandlerProjectSelect method execute.

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    final DBeaverCore core = DBeaverCore.getInstance();
    final DBNProject projectNode = core.getNavigatorModel().getRoot().getProject(core.getProjectRegistry().getActiveProject());
    if (projectNode != null) {
        final IWorkbenchWindow workbenchWindow = HandlerUtil.getActiveWorkbenchWindow(event);
        try {
            final ProjectNavigatorView projectsView = (ProjectNavigatorView) workbenchWindow.getActivePage().showView(ProjectNavigatorView.VIEW_ID);
            if (projectsView != null) {
                projectsView.showNode(projectNode);
            }
        } catch (PartInitException e) {
            log.error(e);
        }
    }
    return null;
}
Also used : IWorkbenchWindow(org.eclipse.ui.IWorkbenchWindow) DBNProject(org.jkiss.dbeaver.model.navigator.DBNProject) DBeaverCore(org.jkiss.dbeaver.core.DBeaverCore) ProjectNavigatorView(org.jkiss.dbeaver.ui.navigator.project.ProjectNavigatorView) PartInitException(org.eclipse.ui.PartInitException)

Example 4 with DBNProject

use of org.jkiss.dbeaver.model.navigator.DBNProject in project dbeaver by dbeaver.

the class DatabaseConsumerPageMapping method createControl.

@Override
public void createControl(Composite parent) {
    initializeDialogUnits(parent);
    final DatabaseConsumerSettings settings = getDatabaseConsumerSettings();
    Composite composite = new Composite(parent, SWT.NULL);
    GridLayout gl = new GridLayout();
    gl.marginHeight = 0;
    gl.marginWidth = 0;
    composite.setLayout(gl);
    composite.setLayoutData(new GridData(GridData.FILL_BOTH));
    {
        // Target container
        Composite containerPanel = new Composite(composite, SWT.NONE);
        containerPanel.setLayout(new GridLayout(4, false));
        containerPanel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        UIUtils.createControlLabel(containerPanel, "Target container");
        containerIcon = new Label(containerPanel, SWT.NONE);
        containerIcon.setImage(DBeaverIcons.getImage(DBIcon.TYPE_UNKNOWN));
        containerName = new Text(containerPanel, SWT.BORDER | SWT.READ_ONLY);
        containerName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        containerName.setText("");
        Button browseButton = new Button(containerPanel, SWT.PUSH);
        browseButton.setImage(DBeaverIcons.getImage(DBIcon.TREE_FOLDER));
        browseButton.setText("...");
        browseButton.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                IProject activeProject = DBeaverCore.getInstance().getProjectRegistry().getActiveProject();
                if (activeProject != null) {
                    final DBNModel navigatorModel = DBeaverCore.getInstance().getNavigatorModel();
                    final DBNProject rootNode = navigatorModel.getRoot().getProject(activeProject);
                    DBNNode selectedNode = settings.getContainerNode();
                    if (selectedNode == null && !settings.getDataMappings().isEmpty()) {
                        // Use first source object as cur selection (it's better than nothing)
                        DBSDataContainer firstSource = settings.getDataMappings().keySet().iterator().next();
                        selectedNode = navigatorModel.getNodeByObject(firstSource);
                        while (selectedNode != null) {
                            if (selectedNode instanceof DBSWrapper && ((DBSWrapper) selectedNode).getObject() instanceof DBSObjectContainer) {
                                break;
                            } else {
                                selectedNode = selectedNode.getParentNode();
                            }
                        }
                    }
                    DBNNode node = BrowseObjectDialog.selectObject(getShell(), "Choose container", rootNode.getDatabases(), selectedNode, new Class[] { DBSObjectContainer.class }, null);
                    if (node instanceof DBNDatabaseNode) {
                        settings.setContainerNode((DBNDatabaseNode) node);
                        containerIcon.setImage(DBeaverIcons.getImage(node.getNodeIconDefault()));
                        containerName.setText(settings.getContainerFullName());
                        // Reset mappings
                        for (DatabaseMappingContainer mappingContainer : settings.getDataMappings().values()) {
                            if (mappingContainer.getMappingType() == DatabaseMappingType.create) {
                                try {
                                    mappingContainer.refreshMappingType(getContainer(), DatabaseMappingType.create);
                                } catch (DBException e1) {
                                    log.error(e1);
                                }
                            }
                        }
                        mappingViewer.refresh();
                        updatePageCompletion();
                    }
                }
            }
        });
    }
    createMappingsTree(composite);
    {
        // Control buttons
        Composite buttonsPanel = new Composite(composite, SWT.NONE);
        buttonsPanel.setLayout(new GridLayout(4, false));
        buttonsPanel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        final Button mapTableButton = new Button(buttonsPanel, SWT.PUSH);
        mapTableButton.setImage(DBeaverIcons.getImage(DBIcon.TREE_TABLE));
        mapTableButton.setText("Existing table ...");
        mapTableButton.setEnabled(false);
        mapTableButton.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                mapExistingTable((DatabaseMappingContainer) getSelectedMapping());
            }
        });
        final Button createNewButton = new Button(buttonsPanel, SWT.PUSH);
        createNewButton.setImage(DBeaverIcons.getImage(DBIcon.TREE_VIEW));
        createNewButton.setText("New table...");
        createNewButton.setEnabled(false);
        createNewButton.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                mapNewTable((DatabaseMappingContainer) getSelectedMapping());
            }
        });
        final Button columnsButton = new Button(buttonsPanel, SWT.PUSH);
        columnsButton.setImage(DBeaverIcons.getImage(DBIcon.TREE_COLUMNS));
        columnsButton.setText("Columns' mappings ...");
        columnsButton.setEnabled(false);
        columnsButton.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                DatabaseMappingObject selectedMapping = getSelectedMapping();
                mapColumns(selectedMapping instanceof DatabaseMappingContainer ? (DatabaseMappingContainer) selectedMapping : ((DatabaseMappingAttribute) selectedMapping).getParent());
            }
        });
        final Button ddlButton = new Button(buttonsPanel, SWT.PUSH);
        ddlButton.setImage(DBeaverIcons.getImage(UIIcon.SQL_TEXT));
        ddlButton.setText("DDL ...");
        ddlButton.setEnabled(false);
        ddlButton.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                DatabaseMappingObject selectedMapping = getSelectedMapping();
                showDDL(selectedMapping instanceof DatabaseMappingContainer ? (DatabaseMappingContainer) selectedMapping : ((DatabaseMappingAttribute) selectedMapping).getParent());
            }
        });
        mappingViewer.getTree().addKeyListener(new KeyAdapter() {

            @Override
            public void keyReleased(KeyEvent e) {
                try {
                    boolean updated = false;
                    Object element = null;
                    if (e.character == SWT.CR) {
                    // Object element = mappingViewer.getStructuredSelection().getFirstElement();
                    // mappingViewer.editElement(element, 1);
                    } else if (e.character == SWT.DEL) {
                        for (TreeItem item : mappingViewer.getTree().getSelection()) {
                            element = item.getData();
                            if (element instanceof DatabaseMappingAttribute) {
                                DatabaseMappingAttribute attribute = (DatabaseMappingAttribute) element;
                                attribute.setMappingType(DatabaseMappingType.skip);
                            } else if (element instanceof DatabaseMappingContainer) {
                                DatabaseMappingContainer container = (DatabaseMappingContainer) element;
                                container.refreshMappingType(getContainer(), DatabaseMappingType.skip);
                            }
                        }
                        updated = true;
                    } else if (e.character == SWT.SPACE) {
                        for (TreeItem item : mappingViewer.getTree().getSelection()) {
                            element = item.getData();
                            if (element instanceof DatabaseMappingAttribute) {
                                DatabaseMappingAttribute attribute = (DatabaseMappingAttribute) item.getData();
                                attribute.setMappingType(DatabaseMappingType.existing);
                                attribute.updateMappingType(new VoidProgressMonitor());
                            } else if (element instanceof DatabaseMappingContainer) {
                                DatabaseMappingContainer container = (DatabaseMappingContainer) element;
                                setMappingTarget(container, container.getSource().getName());
                            }
                        }
                        updated = true;
                    }
                    if (updated) {
                        mappingViewer.refresh();
                        updatePageCompletion();
                        if (element instanceof DatabaseMappingContainer) {
                            // Select next container
                            @SuppressWarnings("unchecked") List<DatabaseMappingContainer> model = (List<DatabaseMappingContainer>) mappingViewer.getInput();
                            int curIndex = model.indexOf(element);
                            if (curIndex < model.size() - 1) {
                                mappingViewer.setSelection(new StructuredSelection(model.get(curIndex + 1)), true);
                            }
                        }
                    }
                } catch (DBException e1) {
                    DBUserInterface.getInstance().showError("Error mapping table", "Error mapping target table", e1);
                }
            }
        });
        mappingViewer.addSelectionChangedListener(new ISelectionChangedListener() {

            @Override
            public void selectionChanged(SelectionChangedEvent event) {
                DatabaseMappingObject mapping = getSelectedMapping();
                mapTableButton.setEnabled(mapping instanceof DatabaseMappingContainer);
                createNewButton.setEnabled(mapping instanceof DatabaseMappingContainer && settings.getContainerNode() != null);
                final boolean hasMappings = (mapping instanceof DatabaseMappingContainer && mapping.getMappingType() != DatabaseMappingType.unspecified) || (mapping instanceof DatabaseMappingAttribute && ((DatabaseMappingAttribute) mapping).getParent().getMappingType() != DatabaseMappingType.unspecified);
                columnsButton.setEnabled(hasMappings);
                ddlButton.setEnabled(hasMappings);
            }
        });
        mappingViewer.addDoubleClickListener(new IDoubleClickListener() {

            @Override
            public void doubleClick(DoubleClickEvent event) {
                DatabaseMappingObject selectedMapping = getSelectedMapping();
                if (selectedMapping != null) {
                    if (selectedMapping instanceof DatabaseMappingContainer) {
                    /*
                            if (selectedMapping.getMappingType() == DatabaseMappingType.unspecified) {
                                mapExistingTable((DatabaseMappingContainer) selectedMapping);
                            } else {
                                mapColumns((DatabaseMappingContainer) selectedMapping);
                            }
*/
                    }
                }
            }
        });
    }
    {
        Composite hintPanel = new Composite(composite, SWT.NONE);
        hintPanel.setLayout(new GridLayout(3, false));
        hintPanel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
        new Label(hintPanel, SWT.NONE).setText("* DEL - skip column(s)  SPACE - map column(s)");
    }
    setControl(composite);
}
Also used : DBException(org.jkiss.dbeaver.DBException) DBNNode(org.jkiss.dbeaver.model.navigator.DBNNode) KeyAdapter(org.eclipse.swt.events.KeyAdapter) DBNModel(org.jkiss.dbeaver.model.navigator.DBNModel) KeyEvent(org.eclipse.swt.events.KeyEvent) GridLayout(org.eclipse.swt.layout.GridLayout) SelectionEvent(org.eclipse.swt.events.SelectionEvent) ArrayList(java.util.ArrayList) List(java.util.List) DBNDatabaseNode(org.jkiss.dbeaver.model.navigator.DBNDatabaseNode) DBNProject(org.jkiss.dbeaver.model.navigator.DBNProject) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) IProject(org.eclipse.core.resources.IProject) GridData(org.eclipse.swt.layout.GridData) VoidProgressMonitor(org.jkiss.dbeaver.model.runtime.VoidProgressMonitor)

Example 5 with DBNProject

use of org.jkiss.dbeaver.model.navigator.DBNProject in project dbeaver by serge-rider.

the class NavigatorHandlerProjectSetActive method execute.

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    final ISelection selection = HandlerUtil.getCurrentSelection(event);
    if (selection instanceof IStructuredSelection) {
        final IStructuredSelection structSelection = (IStructuredSelection) selection;
        Object element = structSelection.getFirstElement();
        if (!(element instanceof DBNProject)) {
            return null;
        }
        DBNProject projectNode = (DBNProject) element;
        setActiveProject(projectNode.getProject());
    }
    return null;
}
Also used : DBNProject(org.jkiss.dbeaver.model.navigator.DBNProject) ISelection(org.eclipse.jface.viewers.ISelection) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection)

Aggregations

DBNProject (org.jkiss.dbeaver.model.navigator.DBNProject)16 GridData (org.eclipse.swt.layout.GridData)7 DBNDataSource (org.jkiss.dbeaver.model.navigator.DBNDataSource)6 DBNDatabaseNode (org.jkiss.dbeaver.model.navigator.DBNDatabaseNode)5 List (java.util.List)4 ISelection (org.eclipse.jface.viewers.ISelection)4 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)4 SelectionAdapter (org.eclipse.swt.events.SelectionAdapter)4 SelectionEvent (org.eclipse.swt.events.SelectionEvent)4 DBException (org.jkiss.dbeaver.DBException)4 DBNResource (org.jkiss.dbeaver.model.navigator.DBNResource)4 ArrayList (java.util.ArrayList)3 CheckboxTreeViewer (org.eclipse.jface.viewers.CheckboxTreeViewer)3 ICheckStateProvider (org.eclipse.jface.viewers.ICheckStateProvider)3 ModifyEvent (org.eclipse.swt.events.ModifyEvent)3 ModifyListener (org.eclipse.swt.events.ModifyListener)3 Composite (org.eclipse.swt.widgets.Composite)3 Label (org.eclipse.swt.widgets.Label)3 Text (org.eclipse.swt.widgets.Text)3 DBPDataSourceContainer (org.jkiss.dbeaver.model.DBPDataSourceContainer)3