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());
}
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;
}
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;
}
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));
}
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);
}
Aggregations