Search in sources :

Example 66 with Column

use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.

the class DatabaseServices method getOrCreateColumn.

private Column getOrCreateColumn(Table table, Column referenceColumn) {
    // Check if a column with the same name already exists
    if (referenceColumn.getName() != null) {
        for (Column column : table.getColumns()) {
            if (referenceColumn.getName().equalsIgnoreCase(column.getName())) {
                return column;
            }
        }
    }
    // No column found, we have to create a new one
    Column newColumn = DatabaseFactory.eINSTANCE.createColumn();
    table.getColumns().add(newColumn);
    newColumn.setName(referenceColumn.getName());
    newColumn.setType(CopierUtils.copy(referenceColumn.getType()));
    return newColumn;
}
Also used : Column(org.obeonetwork.dsl.database.Column)

Example 67 with Column

use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.

the class PrimaryKeyPropertiesEditionPartForm method createColumnsViewer.

/**
 */
protected TableViewer createColumnsViewer(Composite container, FormToolkit widgetFactory, AdapterFactory adapter) {
    org.eclipse.swt.widgets.Table table = widgetFactory.createTable(container, SWT.FULL_SELECTION);
    table.setHeaderVisible(true);
    GridData gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = GridData.FILL;
    gd.grabExcessVerticalSpace = true;
    gd.verticalAlignment = GridData.FILL;
    table.setLayoutData(gd);
    table.setLinesVisible(true);
    // Start of user code for table columns s columns definition
    TableColumn name = new TableColumn(table, SWT.NONE);
    name.setWidth(160);
    // $NON-NLS-1$
    name.setText("Label");
    TableColumn type = new TableColumn(table, SWT.NONE);
    type.setWidth(160);
    // $NON-NLS-1$
    type.setText("Type");
    // End of user code
    TableViewer result = new TableViewer(table);
    result.setLabelProvider(new ITableLabelProvider() {

        // Start of user code for table columns label provider
        public String getColumnText(Object object, int columnIndex) {
            AdapterFactoryLabelProvider labelProvider = new AdapterFactoryLabelProvider(adapterFactory);
            if (object instanceof EObject) {
                Column column = (Column) object;
                switch(columnIndex) {
                    case 0:
                        return column.getName();
                    case 1:
                        return labelProvider.getText(column.getType());
                }
            }
            // $NON-NLS-1$
            return "";
        }

        // End of user code
        public Image getColumnImage(Object element, int columnIndex) {
            return null;
        }

        public void addListener(ILabelProviderListener listener) {
        }

        public void dispose() {
        }

        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        public void removeListener(ILabelProviderListener listener) {
        }
    });
    return result;
}
Also used : AdapterFactoryLabelProvider(org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider) Image(org.eclipse.swt.graphics.Image) TableColumn(org.eclipse.swt.widgets.TableColumn) ITableLabelProvider(org.eclipse.jface.viewers.ITableLabelProvider) TableColumn(org.eclipse.swt.widgets.TableColumn) Column(org.obeonetwork.dsl.database.Column) ILabelProviderListener(org.eclipse.jface.viewers.ILabelProviderListener) EObject(org.eclipse.emf.ecore.EObject) GridData(org.eclipse.swt.layout.GridData) EObject(org.eclipse.emf.ecore.EObject) TableViewer(org.eclipse.jface.viewers.TableViewer)

Example 68 with Column

use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.

the class ForeignKeyElementPropertiesEditionComponent method initPart.

/**
 * {@inheritDoc}
 *
 * @see org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent#initPart(java.lang.Object, int, org.eclipse.emf.ecore.EObject,
 *      org.eclipse.emf.ecore.resource.ResourceSet)
 * @generated NOT
 */
public void initPart(Object key, int kind, EObject elt, ResourceSet allResource) {
    setInitializing(true);
    if (editingPart != null && key == partKey) {
        editingPart.setContext(elt, allResource);
        final ForeignKeyElement foreignKeyElement = (ForeignKeyElement) elt;
        final ForeignKeyElementPropertiesEditionPart foreignKeyElementPart = (ForeignKeyElementPropertiesEditionPart) editingPart;
        // init values
        if (foreignKeyElement.getComments() != null && isAccessible(DatabaseViewsRepository.ForeignKeyElement.Properties.comments))
            foreignKeyElementPart.setComments(EcoreUtil.convertToString(EcorePackage.Literals.ESTRING, foreignKeyElement.getComments()));
        if (isAccessible(DatabaseViewsRepository.ForeignKeyElement.Properties.fKColumn)) {
            // init part
            fkColumnSettings = new EObjectFlatComboSettings(foreignKeyElement, DatabasePackage.eINSTANCE.getForeignKeyElement_FkColumn());
            foreignKeyElementPart.initFKColumn(fkColumnSettings);
            // set the button mode
            foreignKeyElementPart.setFKColumnButtonMode(ButtonsModeEnum.BROWSE);
        }
        if (isAccessible(DatabaseViewsRepository.ForeignKeyElement.Properties.pKColumn)) {
            // init part
            pkColumnSettings = new EObjectFlatComboSettings(foreignKeyElement, DatabasePackage.eINSTANCE.getForeignKeyElement_PkColumn());
            foreignKeyElementPart.initPKColumn(pkColumnSettings);
            // set the button mode
            foreignKeyElementPart.setPKColumnButtonMode(ButtonsModeEnum.BROWSE);
        }
        // Custom code to prevent NPE when creating new FKElement
        ForeignKeyElement fkElt = (ForeignKeyElement) semanticObject;
        if (fkElt.getFkColumn() != null) {
            if (sourceTableSettings.getValue() != null && isAccessible(DatabaseViewsRepository.ForeignKeyElement.Properties.sourceTable))
                foreignKeyElementPart.setSourceTable(EEFConverterUtil.convertToString(EcorePackage.Literals.ESTRING, sourceTableSettings.getValue()));
        } else {
            EObject container = fkElt.eContainer();
            if (container instanceof ForeignKey) {
                Table table = ((ForeignKey) container).getSourceTable();
                if (table != null) {
                    foreignKeyElementPart.setSourceTable(table.getName());
                }
            }
        }
        if (fkElt.getPkColumn() != null) {
            if (targetTableSettings.getValue() != null && isAccessible(DatabaseViewsRepository.ForeignKeyElement.Properties.targetTable))
                foreignKeyElementPart.setTargetTable(EEFConverterUtil.convertToString(EcorePackage.Literals.ESTRING, targetTableSettings.getValue()));
        } else {
            EObject container = fkElt.eContainer();
            if (container instanceof ForeignKey) {
                Table table = ((ForeignKey) container).getTargetTable();
                if (table != null) {
                    foreignKeyElementPart.setTargetTable(table.getName());
                }
            }
        }
        if (isAccessible(DatabaseViewsRepository.ForeignKeyElement.Properties.fKColumn)) {
            foreignKeyElementPart.addFilterToFKColumn(new ViewerFilter() {

                /**
                 * {@inheritDoc}
                 *
                 * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
                 */
                public boolean select(Viewer viewer, Object parentElement, Object element) {
                    // $NON-NLS-1$
                    return (element instanceof String && element.equals("")) || (element instanceof Column);
                }
            });
        // Start of user code for additional businessfilters for fkColumn
        // End of user code
        }
        if (isAccessible(DatabaseViewsRepository.ForeignKeyElement.Properties.pKColumn)) {
            foreignKeyElementPart.addFilterToPKColumn(new ViewerFilter() {

                /**
                 * {@inheritDoc}
                 *
                 * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
                 */
                public boolean select(Viewer viewer, Object parentElement, Object element) {
                    // $NON-NLS-1$
                    return (element instanceof String && element.equals("")) || (element instanceof Column);
                }
            });
        // Start of user code for additional businessfilters for pkColumn
        // End of user code
        }
    // init values for referenced views
    // init filters for referenced views
    }
    setInitializing(false);
}
Also used : ForeignKeyElement(org.obeonetwork.dsl.database.ForeignKeyElement) Table(org.obeonetwork.dsl.database.Table) ViewerFilter(org.eclipse.jface.viewers.ViewerFilter) Column(org.obeonetwork.dsl.database.Column) EObject(org.eclipse.emf.ecore.EObject) Viewer(org.eclipse.jface.viewers.Viewer) EObject(org.eclipse.emf.ecore.EObject) EObjectFlatComboSettings(org.eclipse.emf.eef.runtime.ui.widgets.eobjflatcombo.EObjectFlatComboSettings) ForeignKeyElementPropertiesEditionPart(org.obeonetwork.dsl.database.parts.ForeignKeyElementPropertiesEditionPart) ForeignKey(org.obeonetwork.dsl.database.ForeignKey)

Example 69 with Column

use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.

the class TableTablePropertiesEditionComponent method updateSemanticModel.

/**
 * {@inheritDoc}
 * @see org.eclipse.emf.eef.runtime.impl.components.StandardPropertiesEditionComponent#updateSemanticModel(org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionEvent)
 */
public void updateSemanticModel(final IPropertiesEditionEvent event) {
    Table table = (Table) semanticObject;
    if (DatabaseViewsRepository.Table.Properties.name == event.getAffectedEditor()) {
        table.setName((java.lang.String) EEFConverterUtil.createFromString(EcorePackage.Literals.ESTRING, (String) event.getNewValue()));
    }
    if (DatabaseViewsRepository.Table.Properties.columns == event.getAffectedEditor()) {
        if (event.getKind() == PropertiesEditionEvent.ADD) {
            EReferencePropertiesEditionContext context = new EReferencePropertiesEditionContext(editingContext, this, columnsSettings, editingContext.getAdapterFactory());
            PropertiesEditingProvider provider = (PropertiesEditingProvider) editingContext.getAdapterFactory().adapt(semanticObject, PropertiesEditingProvider.class);
            if (provider != null) {
                PropertiesEditingPolicy policy = provider.getPolicy(context);
                if (policy instanceof CreateEditingPolicy) {
                    policy.execute();
                }
            }
        } else if (event.getKind() == PropertiesEditionEvent.EDIT) {
            EObjectPropertiesEditionContext context = new EObjectPropertiesEditionContext(editingContext, this, (EObject) event.getNewValue(), editingContext.getAdapterFactory());
            PropertiesEditingProvider provider = (PropertiesEditingProvider) editingContext.getAdapterFactory().adapt((EObject) event.getNewValue(), PropertiesEditingProvider.class);
            if (provider != null) {
                PropertiesEditingPolicy editionPolicy = provider.getPolicy(context);
                if (editionPolicy != null) {
                    editionPolicy.execute();
                }
            }
        } else if (event.getKind() == PropertiesEditionEvent.REMOVE) {
            columnsSettings.removeFromReference((EObject) event.getNewValue());
        } else if (event.getKind() == PropertiesEditionEvent.MOVE) {
            columnsSettings.move(event.getNewIndex(), (Column) event.getNewValue());
        }
    }
    if (DatabaseViewsRepository.Table.Properties.comments == event.getAffectedEditor()) {
        table.setComments((java.lang.String) EEFConverterUtil.createFromString(EcorePackage.Literals.ESTRING, (String) event.getNewValue()));
    }
}
Also used : EObjectPropertiesEditionContext(org.eclipse.emf.eef.runtime.context.impl.EObjectPropertiesEditionContext) Table(org.obeonetwork.dsl.database.Table) PropertiesEditingProvider(org.eclipse.emf.eef.runtime.providers.PropertiesEditingProvider) Column(org.obeonetwork.dsl.database.Column) EObject(org.eclipse.emf.ecore.EObject) PropertiesEditingPolicy(org.eclipse.emf.eef.runtime.policies.PropertiesEditingPolicy) CreateEditingPolicy(org.eclipse.emf.eef.runtime.policies.impl.CreateEditingPolicy) EReferencePropertiesEditionContext(org.eclipse.emf.eef.runtime.context.impl.EReferencePropertiesEditionContext)

Example 70 with Column

use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.

the class ColumnPropertiesEditionComponent method initPart.

/**
 * {@inheritDoc}
 *
 * @see org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent#initPart(java.lang.Object, int, org.eclipse.emf.ecore.EObject,
 *      org.eclipse.emf.ecore.resource.ResourceSet)
 */
public void initPart(Object key, int kind, EObject elt, ResourceSet allResource) {
    setInitializing(true);
    if (editingPart != null && key == partKey) {
        editingPart.setContext(elt, allResource);
        if (editingPart instanceof CompositePropertiesEditionPart) {
            ((CompositePropertiesEditionPart) editingPart).getSettings().add(typeSettings);
            ((CompositePropertiesEditionPart) editingPart).getSettings().add(lengthSettings);
            ((CompositePropertiesEditionPart) editingPart).getSettings().add(precisionSettings);
            ((CompositePropertiesEditionPart) editingPart).getSettings().add(literalsSettings);
        }
        final Column column = (Column) elt;
        final ColumnPropertiesEditionPart columnPart = (ColumnPropertiesEditionPart) editingPart;
        // init values
        if (isAccessible(DatabaseViewsRepository.Column.Properties.name))
            columnPart.setName(EEFConverterUtil.convertToString(EcorePackage.Literals.ESTRING, column.getName()));
        if (isAccessible(DatabaseViewsRepository.Column.Properties.NullablePkAndUnique.nullable)) {
            columnPart.setNullable(column.isNullable());
        }
        if (isAccessible(DatabaseViewsRepository.Column.Properties.NullablePkAndUnique.primaryKey)) {
            columnPart.setPrimaryKey(column.isInPrimaryKey());
        }
        if (isAccessible(DatabaseViewsRepository.Column.Properties.NullablePkAndUnique.unique)) {
            columnPart.setUnique(column.isUnique());
        }
        if (isAccessible(DatabaseViewsRepository.Column.Properties.Sequence.autoincrement)) {
            columnPart.setAutoincrement(column.isAutoincrement());
        }
        if (isAccessible(DatabaseViewsRepository.Column.Properties.Sequence.sequence_)) {
            // init part
            sequenceSettings = new EObjectFlatComboSettings(column, DatabasePackage.eINSTANCE.getColumn_Sequence());
            columnPart.initSequence(sequenceSettings);
            // set the button mode
            columnPart.setSequenceButtonMode(ButtonsModeEnum.BROWSE);
        }
        if (isAccessible(DatabaseViewsRepository.Column.Properties.defaultValue))
            columnPart.setDefaultValue(EEFConverterUtil.convertToString(EcorePackage.Literals.ESTRING, column.getDefaultValue()));
        if (isAccessible(DatabaseViewsRepository.Column.Properties.comments))
            columnPart.setComments(EcoreUtil.convertToString(EcorePackage.Literals.ESTRING, column.getComments()));
        if (typeSettings.getSignificantObject() != null && isAccessible(DatabaseViewsRepository.Column.Properties.type)) {
            columnPart.initType(EEFUtils.choiceOfValues(typeSettings.getSignificantObject(), TypesLibraryPackage.eINSTANCE.getTypeInstance_NativeType()), typeSettings.getValue());
        }
        if (lengthSettings.getValue() != null && isAccessible(DatabaseViewsRepository.Column.Properties.TypeAttributes.length))
            columnPart.setLength(EEFConverterUtil.convertToString(EcorePackage.Literals.EINTEGER_OBJECT, lengthSettings.getValue()));
        if (precisionSettings.getValue() != null && isAccessible(DatabaseViewsRepository.Column.Properties.TypeAttributes.precision))
            columnPart.setPrecision(EEFConverterUtil.convertToString(EcorePackage.Literals.EINTEGER_OBJECT, precisionSettings.getValue()));
        if (literalsSettings.getSignificantObject() != null && isAccessible(DatabaseViewsRepository.Column.Properties.literals)) {
            columnPart.setLiterals((EList<?>) literalsSettings.getValue());
        }
        if (isAccessible(DatabaseViewsRepository.Column.Properties.Sequence.sequence_)) {
            columnPart.addFilterToSequence(new ViewerFilter() {

                /**
                 * {@inheritDoc}
                 *
                 * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
                 */
                public boolean select(Viewer viewer, Object parentElement, Object element) {
                    // $NON-NLS-1$
                    return (element instanceof String && element.equals("")) || (element instanceof Sequence);
                }
            });
        // Start of user code for additional businessfilters for sequence
        // End of user code
        }
    // Start of user code for additional businessfilters for type
    // End of user code
    // init values for referenced views
    // init filters for referenced views
    }
    setInitializing(false);
}
Also used : ViewerFilter(org.eclipse.jface.viewers.ViewerFilter) Column(org.obeonetwork.dsl.database.Column) CompositePropertiesEditionPart(org.eclipse.emf.eef.runtime.impl.parts.CompositePropertiesEditionPart) Viewer(org.eclipse.jface.viewers.Viewer) EObject(org.eclipse.emf.ecore.EObject) EObjectFlatComboSettings(org.eclipse.emf.eef.runtime.ui.widgets.eobjflatcombo.EObjectFlatComboSettings) Sequence(org.obeonetwork.dsl.database.Sequence) ColumnPropertiesEditionPart(org.obeonetwork.dsl.database.parts.ColumnPropertiesEditionPart)

Aggregations

Column (org.obeonetwork.dsl.database.Column)83 Table (org.obeonetwork.dsl.database.Table)41 Test (org.junit.Test)31 AbstractTest (org.obeonetwork.database.m2doc.services.common.AbstractTest)31 TypeInstance (org.obeonetwork.dsl.typeslibrary.TypeInstance)11 EObject (org.eclipse.emf.ecore.EObject)9 AbstractTable (org.obeonetwork.dsl.database.AbstractTable)8 ForeignKey (org.obeonetwork.dsl.database.ForeignKey)7 ArrayList (java.util.ArrayList)6 Constraint (org.obeonetwork.dsl.database.Constraint)6 ForeignKeyElement (org.obeonetwork.dsl.database.ForeignKeyElement)6 Sequence (org.obeonetwork.dsl.database.Sequence)6 BigInteger (java.math.BigInteger)5 ResultSet (java.sql.ResultSet)5 SQLException (java.sql.SQLException)5 NativeType (org.obeonetwork.dsl.typeslibrary.NativeType)5 PreparedStatement (java.sql.PreparedStatement)4 Viewer (org.eclipse.jface.viewers.Viewer)4 ViewerFilter (org.eclipse.jface.viewers.ViewerFilter)4 IndexElement (org.obeonetwork.dsl.database.IndexElement)4