private void initializeContainer() { outputdataContainer = new IODataComponentContainer(); for (Connection connec : (List<Connection>) node.getIncomingConnections()) { if (connec.getLineStyle().equals(EConnectionType.FLOW_MAIN)) { IODataComponent input = null; if (newInputMetadata == null) { input = new IODataComponent(connec); } else { if (connec.getMetaName().equals(newInputMetadata.getTableName())) { input = new IODataComponent(connec, newInputMetadata); } } if (input != null) { outputdataContainer.getInputs().add(input); } } } for (Connection connec : (List<Connection>) node.getOutgoingConnections()) { if (connec.getLineStyle().equals(EConnectionType.FLOW_MAIN) || isinputContainerOutput(connec) || ((connec.getLineStyle().equals(EConnectionType.FLOW_MERGE) && (connec.getInputId() == 1)))) { if ((!connec.getSource().getConnectorFromType(connec.getLineStyle()).isMultiSchema()) || (connec.getMetaName().equals(newOutputMetadata.getTableName()))) { IODataComponent output = new IODataComponent(connec, newOutputMetadata); outputdataContainer.getOuputs().add(output); } } } if (inputNode != null) { inputdataContainer = new IODataComponentContainer(); for (Connection connec : (List<Connection>) inputNode.getOutgoingConnections()) { if (connec.getTarget().equals(node)) { if ((!connec.getSource().getConnectorFromType(connec.getLineStyle()).isMultiSchema()) || (connec.getMetaName().equals(newInputMetadata.getTableName()))) { IODataComponent output = new IODataComponent(connec, newInputMetadata); inputdataContainer.getOuputs().add(output); } } } } }
@Override public void handleTableRelevantParameters( Connection connection, IElement ele, IMetadataTable metadataTable) { if (ele == null || metadataTable == null) { return; } String tableName = metadataTable.getTableName(); IElementParameter tableNameParameter = ele.getElementParameter(EHCatalogRepositoryToComponent.TABLE_NAME.getParameterName()); if (tableNameParameter != null) { tableNameParameter.setValue(getRepositoryValueOfStringType(connection, tableName)); } String partition = metadataTable.getAdditionalProperties().get(HCatalogConstants.PARTITIONS); if (StringUtils.isNotEmpty(partition)) { IElementParameter partitionParameter = ele.getElementParameter(EHCatalogRepositoryToComponent.PARTITION_NAME.getParameterName()); if (partitionParameter != null) { String partitionName = ExtractMetaDataFromHCatalog.extractPartitionNameByJsonStr(partition); if (StringUtils.isNotEmpty(partitionName)) { partitionParameter.setValue(getRepositoryValueOfStringType(connection, partitionName)); } } } }
public void rebuildModelOutputs(List<IMetadataTable> outputMetadataTables, PigMapData mapData) { for (IMetadataTable meatadataTable : outputMetadataTables) { String name = meatadataTable.getTableName(); OutputTable outputTable = null; for (OutputTable out : mapData.getOutputTables()) { if (out.getName() != null && out.getName().equals(name)) { outputTable = out; break; } } if (outputTable == null) { outputTable = PigmapFactory.eINSTANCE.createOutputTable(); outputTable.setName(name); mapData.getOutputTables().add(outputTable); } List<IMetadataColumn> listColumns = meatadataTable.getListColumns(); if (listColumns != null) { EList<TableNode> nodes = outputTable.getNodes(); for (int i = 0; i < listColumns.size(); i++) { IMetadataColumn column = listColumns.get(i); TableNode found = null; int j = 0; for (; j < nodes.size(); j++) { TableNode node = nodes.get(j); if (node.getName() != null && node.getName().equals(column.getLabel())) { found = node; break; } } if (found != null) { // set in case talend type changed in metadata found.setType(column.getTalendType()); if (i != j) { // do switch to keep the same sequence TableNode temp = nodes.get(j); nodes.remove(j); nodes.add(i, temp); } } else { found = PigmapFactory.eINSTANCE.createTableNode(); found.setName(column.getLabel()); found.setType(column.getTalendType()); found.setNullable(column.isNullable()); nodes.add(i, found); } } if (nodes.size() > listColumns.size()) { List unUsed = new ArrayList(); for (int i = listColumns.size(); i < nodes.size(); i++) { TableNode node = nodes.get(i); PigMapUtil.detachConnectionsSouce(node, mapData); unUsed.add(node); } nodes.removeAll(unUsed); } } mapData.getOutputTables().add(outputTable); // re-build the connections in case any unnecessary connections are created because of // previous bugs and // can't be deleted rebuildOutputNodesConnections(outputTable.getNodes(), mapData); } }