Search in sources :

Example 6 with MultiMetadataColumn

use of org.talend.designer.filemultischemas.data.MultiMetadataColumn in project tdi-studio-se by Talend.

the class MultiSchemasManager method createSimpleDatas.

public void createSimpleDatas(SchemasKeyData rootData, List<Map<String, String>> schemasValues) {
    for (Map<String, String> line : schemasValues) {
        String code = line.get(IMultiSchemaConstant.RECORD);
        if (code != null) {
            // code = MultiSchemasManager.removeQuotes(code);
            code = TalendTextUtils.trimParameter(code);
            SchemasKeyData data = new SchemasKeyData(code);
            final String schemaName = line.get(IMultiSchemaConstant.SCHEMA);
            if (schemaName != null) {
                final IMetadataTable metadataTable = MetadataToolHelper.getMetadataTableFromNode(getMultiSchemasComponent(), schemaName);
                if (metadataTable != null) {
                    data.setUniqueRecord(schemaName);
                    createMultiSchemasColumns(data, metadataTable.clone(true));
                }
                rootData.addChild(data);
            }
            String text = line.get(IMultiSchemaConstant.KEY_COLUMN_INDEX);
            if (text == null) {
                //$NON-NLS-1$
                text = "";
            }
            final String keyColumnIndex = TalendTextUtils.removeQuotes(text);
            //$NON-NLS-1$
            String[] keys = keyColumnIndex.split(",");
            for (String name : keys) {
                try {
                    List<MultiMetadataColumn> metadataColumns = data.getMetadataColumns();
                    int index = Integer.parseInt(name);
                    for (int i = 0; i < metadataColumns.size(); i++) {
                        MultiMetadataColumn multiMetadataColumn = metadataColumns.get(i);
                        if (index == i) {
                            multiMetadataColumn.setKey(true);
                        } else {
                            multiMetadataColumn.setKey(false);
                        }
                    }
                } catch (NumberFormatException e) {
                //
                }
            }
            String card = line.get(IMultiSchemaConstant.CARDINALITY);
            if (card == null) {
                //$NON-NLS-1$
                card = TalendTextUtils.addQuotes("");
            }
            data.setCard(card);
            String keyIndex = line.get(IMultiSchemaConstant.FIELDDELIMITED);
            if (keyIndex == null) {
                //$NON-NLS-1$
                keyIndex = "";
            } else {
                keyIndex = TalendTextUtils.removeQuotes(keyIndex);
            }
            data.setSeparator(keyIndex);
        }
    }
}
Also used : IMetadataTable(org.talend.core.model.metadata.IMetadataTable) SchemasKeyData(org.talend.designer.filemultischemas.data.SchemasKeyData) MultiMetadataColumn(org.talend.designer.filemultischemas.data.MultiMetadataColumn)

Example 7 with MultiMetadataColumn

use of org.talend.designer.filemultischemas.data.MultiMetadataColumn in project tdi-studio-se by Talend.

the class MultiSchemasManager method retrieveRelativeParent.

private void retrieveRelativeParent(SchemasKeyData rootData, List<Map<String, String>> schemasValues) {
    for (Map<String, String> line : schemasValues) {
        String code = line.get(IMultiSchemaConstant.RECORD);
        if (code != null) {
            code = TalendTextUtils.removeQuotes(code);
            SchemasKeyData currentData = findKeyData(rootData, code);
            if (currentData != null) {
                String codeParent = line.get(IMultiSchemaConstant.PARENT_RECORD);
                if (codeParent != null) {
                    codeParent = TalendTextUtils.removeQuotes(codeParent);
                }
                if (codeParent == null || "".equals(codeParent.trim())) {
                    // root //$NON-NLS-1$
                    rootData.addChild(currentData);
                } else {
                    SchemasKeyData parentData = findKeyData(rootData, codeParent.trim());
                    if (parentData != null) {
                        parentData.addChild(currentData);
                        // set the added column, last column.
                        List<MultiMetadataColumn> metadataColumns = currentData.getMetadataColumns();
                        if (!metadataColumns.isEmpty()) {
                            MultiMetadataColumn multiMetadataColumn = metadataColumns.get(metadataColumns.size() - 1);
                            metadataColumns.remove(multiMetadataColumn);
                            currentData.setAddedColumn(multiMetadataColumn);
                        }
                    }
                }
            }
        }
    }
}
Also used : SchemasKeyData(org.talend.designer.filemultischemas.data.SchemasKeyData) MultiMetadataColumn(org.talend.designer.filemultischemas.data.MultiMetadataColumn)

Example 8 with MultiMetadataColumn

use of org.talend.designer.filemultischemas.data.MultiMetadataColumn in project tdi-studio-se by Talend.

the class MultiSchemasManager method createPropertiesColumns.

public List<MultiMetadataColumn> createPropertiesColumns(SchemasKeyData keyData) {
    List<MultiMetadataColumn> columns = new ArrayList<MultiMetadataColumn>();
    if (keyData != null) {
        final int tagLevel = keyData.getTagLevel();
        //
        final List<MultiSchemaRowData> rowsData = keyData.getRowsData();
        for (MultiSchemaRowData row : rowsData) {
            final List<MultiSchemasMetadataColumn> columnsData = row.getColumnsData();
            for (int i = 0; i < columnsData.size(); i++) {
                final MultiSchemasMetadataColumn metadataColumn = columnsData.get(i);
                MultiMetadataColumn column = null;
                if (columns.size() - 1 < i) {
                    // not contain
                    column = new MultiMetadataColumn(row.getKeyName());
                    column.setLabel(metadataColumn.getLabel());
                    column.setContainer(keyData);
                    columns.add(column);
                } else {
                    column = columns.get(i);
                }
                column.addDataColumns(metadataColumn);
            }
        }
        keyData.setMetadataColumns(columns);
    }
    return columns;
}
Also used : MultiSchemasMetadataColumn(org.talend.designer.filemultischemas.data.MultiSchemasMetadataColumn) MultiSchemaRowData(org.talend.designer.filemultischemas.data.MultiSchemaRowData) ArrayList(java.util.ArrayList) MultiMetadataColumn(org.talend.designer.filemultischemas.data.MultiMetadataColumn)

Example 9 with MultiMetadataColumn

use of org.talend.designer.filemultischemas.data.MultiMetadataColumn in project tdi-studio-se by Talend.

the class MultiSchemasManager method createMultiSchemasColumns.

public void createMultiSchemasColumns(SchemasKeyData data, final IMetadataTable metadataTable) {
    //
    for (IMetadataColumn column : metadataTable.getListColumns()) {
        MultiMetadataColumn multiColumn = new MultiMetadataColumn(data.getRecordType());
        multiColumn.setContainer(data);
        data.getMetadataColumns().add(multiColumn);
        multiColumn.setComment(column.getComment());
        multiColumn.setCustom(column.isCustom());
        multiColumn.setCustomId(column.getCustomId());
        multiColumn.setDefault(column.getDefault());
        multiColumn.setId(column.getId());
        multiColumn.setKey(column.isKey());
        multiColumn.setLabel(column.getLabel());
        multiColumn.setLength(column.getLength());
        multiColumn.setNullable(column.isNullable());
        multiColumn.setOriginalDbColumnName(column.getOriginalDbColumnName());
        multiColumn.setPattern(column.getPattern());
        multiColumn.setPrecision(column.getPrecision());
        multiColumn.setReadOnly(column.isReadOnly());
        multiColumn.setTalendType(column.getTalendType());
        multiColumn.setType(column.getType());
    }
}
Also used : IMetadataColumn(org.talend.core.model.metadata.IMetadataColumn) MultiMetadataColumn(org.talend.designer.filemultischemas.data.MultiMetadataColumn)

Example 10 with MultiMetadataColumn

use of org.talend.designer.filemultischemas.data.MultiMetadataColumn in project tdi-studio-se by Talend.

the class UIManager method validSchemaDetailsColumns.

public static String validSchemaDetailsColumns(final TreeViewer schemaDetailsViewer, final MultiMetadataColumn multiMetadataColumn, final EPropertyName property, final Object input) {
    String mess = null;
    if (input != null && input instanceof String) {
        final String value = (String) input;
        final String existedMessage = "The column name have existed.";
        if (isFirstForColumnModel(property)) {
            // for column model
            IStructuredSelection selection = (IStructuredSelection) schemaDetailsViewer.getSelection();
            if (selection != null) {
                final Object firstElement = selection.getFirstElement();
                if (firstElement != null && firstElement instanceof ColumnLineData) {
                    ColumnLineData lineData = (ColumnLineData) firstElement;
                    for (MultiMetadataColumn column : lineData.getKeyData().getMetadataColumnsInModel()) {
                        if (multiMetadataColumn != column && value.equals(column.getLabel())) {
                            mess = existedMessage;
                            break;
                        }
                    }
                }
            }
        } else {
            final String invalidInput = "Invalid input.";
            switch(property) {
                case // for property model.
                NAME:
                    IStructuredSelection selection = (IStructuredSelection) schemaDetailsViewer.getSelection();
                    if (selection != null) {
                        final Object firstElement = selection.getFirstElement();
                        if (firstElement != null && firstElement instanceof MultiMetadataColumn) {
                            MultiMetadataColumn column = (MultiMetadataColumn) firstElement;
                            for (TreeItem item : schemaDetailsViewer.getTree().getItems()) {
                                final Object data = item.getData();
                                if (data != column && data instanceof MultiMetadataColumn) {
                                    MultiMetadataColumn other = (MultiMetadataColumn) data;
                                    if (value.equals(other.getLabel())) {
                                        mess = existedMessage;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    if (mess == null && !value.matches(RepositoryConstants.CONTEXT_AND_VARIABLE_PATTERN)) {
                        mess = invalidInput;
                    }
                    break;
                case LENGTH:
                    if (!value.matches(ExternalMultiSchemasUIProperties.NUMBER_PATTERN)) {
                        mess = invalidInput;
                    }
                    break;
            }
        }
    }
    return mess;
}
Also used : TreeItem(org.eclipse.swt.widgets.TreeItem) ColumnLineData(org.talend.designer.filemultischemas.ui.provider.column.ColumnLineData) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) MultiMetadataColumn(org.talend.designer.filemultischemas.data.MultiMetadataColumn)

Aggregations

MultiMetadataColumn (org.talend.designer.filemultischemas.data.MultiMetadataColumn)14 SchemasKeyData (org.talend.designer.filemultischemas.data.SchemasKeyData)7 TreeItem (org.eclipse.swt.widgets.TreeItem)3 EPropertyName (org.talend.designer.filemultischemas.data.EPropertyName)3 MultiSchemasMetadataColumn (org.talend.designer.filemultischemas.data.MultiSchemasMetadataColumn)3 ArrayList (java.util.ArrayList)2 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)2 IMetadataTable (org.talend.core.model.metadata.IMetadataTable)2 HashMap (java.util.HashMap)1 FocusAdapter (org.eclipse.swt.events.FocusAdapter)1 FocusEvent (org.eclipse.swt.events.FocusEvent)1 Point (org.eclipse.swt.graphics.Point)1 Control (org.eclipse.swt.widgets.Control)1 Tree (org.eclipse.swt.widgets.Tree)1 TreeColumn (org.eclipse.swt.widgets.TreeColumn)1 IMetadataColumn (org.talend.core.model.metadata.IMetadataColumn)1 MetadataTable (org.talend.core.model.metadata.MetadataTable)1 MultiSchemaRowData (org.talend.designer.filemultischemas.data.MultiSchemaRowData)1 ColumnLineData (org.talend.designer.filemultischemas.ui.provider.column.ColumnLineData)1