Search in sources :

Example 61 with Column

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

the class MpdToMldBidiRules method createIndexElement.

private void createIndexElement(IndexElement sourceElementIndex, Index targetIndex) {
    IndexElement targetIndexElement = getFromInputTraceabilityMap(sourceElementIndex, DatabasePackage.Literals.INDEX_ELEMENT);
    if (targetIndexElement != null) {
        // Ensure it is in the right index
        if (!EcoreUtil.equals(targetIndexElement.eContainer(), targetIndex)) {
            targetIndex.getElements().add(targetIndexElement);
        }
    } else {
        // We have to create a new element
        targetIndexElement = DatabaseFactory.eINSTANCE.createIndexElement();
        targetIndex.getElements().add(targetIndexElement);
    }
    addToOutputTraceability(sourceElementIndex, targetIndexElement);
    Column targetColumn = getFromOutputTraceabilityMap(sourceElementIndex.getColumn(), DatabasePackage.Literals.COLUMN);
    targetIndexElement.setColumn(targetColumn);
    targetIndexElement.setAsc(sourceElementIndex.isAsc());
}
Also used : Column(org.obeonetwork.dsl.database.Column) IndexElement(org.obeonetwork.dsl.database.IndexElement)

Example 62 with Column

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

the class MpdToMldBidiRules method createOrUpdateSequences.

/**
 * Create needed new sequences or update existing ones
 * @param sourceTableContainer
 * @return list of sequences processed so that all other sequences (now useless) could be removed
 */
/**
 * @param sourceTableContainer
 * @return
 */
private Collection<Sequence> createOrUpdateSequences(TableContainer sourceTableContainer) {
    Collection<Sequence> sequences = new ArrayList<Sequence>();
    // for each non-composite PK we create a sequence and associate it with the PK column
    for (AbstractTable sourceAbstractTable : sourceTableContainer.getTables()) {
        if (sourceAbstractTable instanceof Table) {
            Table sourceTable = (Table) sourceAbstractTable;
            // Get associated table
            Table targetTable = getFromOutputTraceabilityMap(sourceTable, DatabasePackage.Literals.TABLE);
            if (targetTable != null) {
                PrimaryKey pk = targetTable.getPrimaryKey();
                // Only for non-composite PK
                if (pk != null && pk.getColumns().size() == 1) {
                    Column targetColumn = pk.getColumns().get(0);
                    // Retrieve the potentially existing sequence
                    Sequence existingSequence = targetColumn.getSequence();
                    String sequenceName = targetTable.getName() + "_SEQ";
                    if (existingSequence != null) {
                        // Update name
                        existingSequence.setName(sequenceName);
                        // Ensure the sequence is in the right container
                        if (!targetTable.getOwner().getSequences().contains(existingSequence)) {
                            targetTable.getOwner().getSequences().add(existingSequence);
                        }
                        sequences.add(existingSequence);
                    } else {
                        // Create a new sequence
                        Sequence newSequence = DatabaseFactory.eINSTANCE.createSequence();
                        newSequence.setName(sequenceName);
                        newSequence.setIncrement(new BigInteger("1"));
                        newSequence.setStart(new BigInteger("1"));
                        newSequence.setComments(String.format(SEQUENCE_INITIAL_COMMENTS, targetTable.getName()));
                        targetTable.getOwner().getSequences().add(newSequence);
                        // Retrieve the associated column and associate it with the sequence
                        targetColumn.setSequence(newSequence);
                        sequences.add(newSequence);
                    }
                }
            }
        }
    }
    if (sourceTableContainer instanceof DataBase) {
        DataBase sourceDataBase = (DataBase) sourceTableContainer;
        for (Schema sourceSchema : sourceDataBase.getSchemas()) {
            sequences.addAll(createOrUpdateSequences(sourceSchema));
        }
    }
    return sequences;
}
Also used : AbstractTable(org.obeonetwork.dsl.database.AbstractTable) Table(org.obeonetwork.dsl.database.Table) AbstractTable(org.obeonetwork.dsl.database.AbstractTable) Column(org.obeonetwork.dsl.database.Column) Schema(org.obeonetwork.dsl.database.Schema) ArrayList(java.util.ArrayList) PrimaryKey(org.obeonetwork.dsl.database.PrimaryKey) BigInteger(java.math.BigInteger) Sequence(org.obeonetwork.dsl.database.Sequence) DataBase(org.obeonetwork.dsl.database.DataBase)

Example 63 with Column

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

the class PrimaryKeyPropertiesEditionPartImpl method createColumnsViewer.

/**
 */
protected TableViewer createColumnsViewer(Composite container, AdapterFactory adapter) {
    org.eclipse.swt.widgets.Table table = new org.eclipse.swt.widgets.Table(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 "";
        }

        public Image getColumnImage(Object element, int columnIndex) {
            return null;
        }

        // End of user code
        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 64 with Column

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

the class ColumnItemProvider method getImage.

/**
 * This returns Column.gif.
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated NOT
 */
@Override
public Object getImage(Object object) {
    String imagePath = "full/obj16/Column";
    Column column = (Column) object;
    if (column.isInPrimaryKey() == true) {
        if (column.isInForeignKey() == false) {
            // Only PK
            imagePath = "full/obj16/ColumnAndPrimaryKey";
        } else {
            // PK and FK
            imagePath = "full/obj16/ColumnAndPrimaryAndForeignKey";
        }
    } else {
        if (column.isInForeignKey() == false) {
            // No PK, no FK
            imagePath = "full/obj16/Column";
        } else {
            // Only FK
            imagePath = "full/obj16/ColumnAndForeignKey";
        }
    }
    return overlayImage(object, getResourceLocator().getImage(imagePath));
}
Also used : Column(org.obeonetwork.dsl.database.Column)

Example 65 with Column

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

the class CustomColumnPropertiesEditionComponent method updateSemanticModel.

@Override
public void updateSemanticModel(IPropertiesEditionEvent event) {
    Column columnObject = (Column) semanticObject;
    if (DatabaseViewsRepository.Column.Properties.NullablePkAndUnique.primaryKey == event.getAffectedEditor()) {
        if (Boolean.TRUE.equals(event.getNewValue())) {
            columnObject.addToPrimaryKey();
        } else {
            columnObject.removeFromPrimaryKey();
        }
    }
    if (DatabaseViewsRepository.Column.Properties.NullablePkAndUnique.unique == event.getAffectedEditor()) {
        if (Boolean.TRUE.equals(event.getNewValue())) {
            columnObject.addToUniqueIndex();
        } else {
            columnObject.removeFromUniqueIndex();
        }
    }
    super.updateSemanticModel(event);
}
Also used : Column(org.obeonetwork.dsl.database.Column)

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