use of org.talend.core.model.properties.ConnectionItem in project tdi-studio-se by Talend.
the class ComponentChooseDialog method createRefreshingPropertiesCommand.
/**
* DOC bqian Comment method "createRefreshingPropertiesCommand".
*
* @param selectedNode
* @param node
*/
private List<Command> createRefreshingPropertiesCommand(CompoundCommand cc, RepositoryNode selectedNode, Node node) {
// List<Command> list = new ArrayList<Command>();
if (selectedNode.getObject().getProperty().getItem() instanceof ConnectionItem) {
String propertyId = selectedNode.getObject().getProperty().getId();
ConnectionItem originalConnectionItem = (ConnectionItem) selectedNode.getObject().getProperty().getItem();
ConnectionItem connectionItem = originalConnectionItem;
Connection originalConnection = connectionItem.getConnection();
Connection connection = connectionItem.getConnection();
// if component is CDC, replace by the CDC connection.
if (node.getComponent().getName().contains("CDC")) {
// to replace by a flag CDC in component? //$NON-NLS-1$
if (selectedNode.getObject().getProperty().getItem() instanceof DatabaseConnectionItem) {
final DatabaseConnection databaseConnection = (DatabaseConnection) connection;
CDCConnection cdcConn = databaseConnection.getCdcConns();
if (cdcConn != null) {
EList cdcTypes = cdcConn.getCdcTypes();
if (cdcTypes != null && !cdcTypes.isEmpty()) {
CDCType cdcType = (CDCType) cdcTypes.get(0);
// replace property by CDC property.
propertyId = cdcType.getLinkDB();
try {
IRepositoryViewObject object = ProxyRepositoryFactory.getInstance().getLastVersion(propertyId);
if (object != null) {
if (object.getProperty().getItem() instanceof DatabaseConnectionItem) {
DatabaseConnectionItem dbConnItem = (DatabaseConnectionItem) object.getProperty().getItem();
// replace connection by CDC connection
connectionItem = dbConnItem;
connection = dbConnItem.getConnection();
}
}
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
// set cdc type mode.
IElementParameter logModeParam = node.getElementParameter(EParameterName.CDC_TYPE_MODE.getName());
if (logModeParam != null) {
String cdcTypeMode = ((DatabaseConnection) originalConnection).getCdcTypeMode();
Command logModeCmd = new PropertyChangeCommand(node, EParameterName.CDC_TYPE_MODE.getName(), CDCTypeMode.LOG_MODE.getName().equals(cdcTypeMode));
cc.add(logModeCmd);
}
// set lib for as400 so far.
//$NON-NLS-1$
final String name = "SOURCE_LIB";
IElementParameter libParam = node.getElementParameter(name);
if (libParam != null) {
Object propValue;
if (connection.isContextMode() && ContextParameterUtils.isContainContextParam(databaseConnection.getSID())) {
propValue = databaseConnection.getSID();
} else {
propValue = TalendTextUtils.addQuotes(databaseConnection.getSID());
}
Command libSettingCmd = new PropertyChangeCommand(node, name, propValue);
cc.add(libSettingCmd);
}
}
}
}
}
// fore EBCDIC, by cli
if ((connectionItem instanceof EbcdicConnectionItem) && PluginChecker.isEBCDICPluginLoaded()) {
// TDI-20505:integration the drag/drop for EBCDIC connection and EBCDIC metadataTable
IRepositoryViewObject object = selectedNode.getObject();
if (selectedNode.getObjectType() == ERepositoryObjectType.METADATA_FILE_EBCDIC) {
for (MetadataTable table : ConnectionHelper.getTables(originalConnection)) {
Command ebcdicCmd = new RepositoryChangeMetadataForEBCDICCommand(node, IEbcdicConstant.TABLE_SCHEMAS, table.getLabel(), ConvertionHelper.convert(table));
cc.add(ebcdicCmd);
}
}
if (selectedNode.getProperties(EProperties.CONTENT_TYPE) == ERepositoryObjectType.METADATA_CON_TABLE) {
MetadataTable table = null;
if (object instanceof MetadataTableRepositoryObject) {
table = ((MetadataTableRepositoryObject) object).getTable();
}
Command ebcdicCmd = new RepositoryChangeMetadataForEBCDICCommand(node, IEbcdicConstant.TABLE_SCHEMAS, table.getLabel(), ConvertionHelper.convert(table));
cc.add(ebcdicCmd);
}
}
// fore HL7, by gcui
if ((selectedNode.getObjectType() == ERepositoryObjectType.METADATA_FILE_HL7 && PluginChecker.isHL7PluginLoaded()) || (selectedNode.getParent() != null && selectedNode.getParent().getObjectType() == ERepositoryObjectType.METADATA_FILE_HL7 && PluginChecker.isHL7PluginLoaded())) {
if (originalConnection instanceof HL7ConnectionImpl) {
if (((HL7ConnectionImpl) originalConnection).getRoot() != null) {
List<Map<String, String>> mapList = new ArrayList<Map<String, String>>();
for (Object obj : ((HL7ConnectionImpl) originalConnection).getRoot()) {
if (obj instanceof HL7FileNode) {
Map<String, String> newMap = new HashMap<String, String>();
newMap.put(IHL7Constant.ATTRIBUTE, ((HL7FileNode) obj).getAttribute());
newMap.put(IHL7Constant.PATH, ((HL7FileNode) obj).getFilePath());
newMap.put(IHL7Constant.COLUMN, ((HL7FileNode) obj).getRelatedColumn());
newMap.put(IHL7Constant.ORDER, String.valueOf(((HL7FileNode) obj).getOrder()));
newMap.put(IHL7Constant.VALUE, ((HL7FileNode) obj).getDefaultValue());
newMap.put(IHL7Constant.REPEATABLE, String.valueOf(((HL7FileNode) obj).isRepeatable()));
mapList.add(newMap);
}
}
IExternalNode externalNode = ExternalUtilities.getExternalNodeReadyToOpen(node);
if (externalNode != null && externalNode.getElementParameter("ROOT") != null) {
//$NON-NLS-1$
//$NON-NLS-1$
externalNode.getElementParameter("ROOT").setValue(mapList);
}
String fileName = ((HL7ConnectionImpl) originalConnection).getOutputFilePath();
if (externalNode != null && externalNode.getElementParameter("FILENAME") != null && fileName != null) {
//$NON-NLS-1$
//$NON-NLS-1$
externalNode.getElementParameter("FILENAME").setValue(TalendTextUtils.addQuotes(fileName));
}
}
}
// fore HL7, by gcui
if (selectedNode.getObjectType() == ERepositoryObjectType.METADATA_FILE_HL7 && PluginChecker.isHL7PluginLoaded()) {
for (MetadataTable table : ConnectionHelper.getTablesWithOrders(originalConnection)) {
Command hl7Cmd = new RepositoryChangeMetadataForHL7Command(node, IHL7Constant.TABLE_SCHEMAS, table.getLabel(), ConvertionHelper.convert(table));
cc.add(hl7Cmd);
}
}
}
// for brms
if ((selectedNode.getObjectType() == ERepositoryObjectType.METADATA_FILE_BRMS && PluginChecker.isBRMSPluginLoaded()) || (selectedNode.getParent() != null && selectedNode.getParent().getObjectType() == ERepositoryObjectType.METADATA_FILE_BRMS && PluginChecker.isBRMSPluginLoaded())) {
if (originalConnection instanceof BRMSConnectionImpl) {
if (((BRMSConnectionImpl) originalConnection).getRoot() != null) {
List<Map<String, String>> rootList = new ArrayList<Map<String, String>>();
List<Map<String, String>> loopList = new ArrayList<Map<String, String>>();
List<Map<String, String>> groupList = new ArrayList<Map<String, String>>();
for (Object obj : ((BRMSConnectionImpl) originalConnection).getRoot()) {
if (obj instanceof XMLFileNode) {
Map<String, String> rootMap = new HashMap<String, String>();
//$NON-NLS-1$
rootMap.put("ATTRIBUTE", ((XMLFileNode) obj).getAttribute());
//$NON-NLS-1$
rootMap.put("PATH", ((XMLFileNode) obj).getXMLPath());
//$NON-NLS-1$
rootMap.put("COLUMN", ((XMLFileNode) obj).getRelatedColumn());
//$NON-NLS-1$
rootMap.put("ORDER", String.valueOf(((XMLFileNode) obj).getOrder()));
//$NON-NLS-1$
rootMap.put("VALUE", ((XMLFileNode) obj).getDefaultValue());
rootList.add(rootMap);
}
}
for (Object obj : ((BRMSConnectionImpl) originalConnection).getLoop()) {
if (obj instanceof XMLFileNode) {
Map<String, String> loopMap = new HashMap<String, String>();
//$NON-NLS-1$
loopMap.put("ATTRIBUTE", ((XMLFileNode) obj).getAttribute());
//$NON-NLS-1$
loopMap.put("PATH", ((XMLFileNode) obj).getXMLPath());
//$NON-NLS-1$
loopMap.put("COLUMN", ((XMLFileNode) obj).getRelatedColumn());
//$NON-NLS-1$
loopMap.put("ORDER", String.valueOf(((XMLFileNode) obj).getOrder()));
//$NON-NLS-1$
loopMap.put("VALUE", ((XMLFileNode) obj).getDefaultValue());
loopList.add(loopMap);
}
}
for (Object obj : ((BRMSConnectionImpl) originalConnection).getGroup()) {
if (obj instanceof XMLFileNode) {
Map<String, String> groupMap = new HashMap<String, String>();
//$NON-NLS-1$
groupMap.put("ATTRIBUTE", ((XMLFileNode) obj).getAttribute());
//$NON-NLS-1$
groupMap.put("PATH", ((XMLFileNode) obj).getXMLPath());
//$NON-NLS-1$
groupMap.put("COLUMN", ((XMLFileNode) obj).getRelatedColumn());
//$NON-NLS-1$
groupMap.put("ORDER", String.valueOf(((XMLFileNode) obj).getOrder()));
//$NON-NLS-1$
groupMap.put("VALUE", ((XMLFileNode) obj).getDefaultValue());
groupList.add(groupMap);
}
}
IExternalNode externalNode = ExternalUtilities.getExternalNodeReadyToOpen(node);
if (externalNode != null && externalNode.getElementParameter("ROOT") != null) {
//$NON-NLS-1$
//$NON-NLS-1$
externalNode.getElementParameter("ROOT").setValue(rootList);
}
if (externalNode != null && externalNode.getElementParameter("LOOP") != null) {
//$NON-NLS-1$
//$NON-NLS-1$
externalNode.getElementParameter("LOOP").setValue(loopList);
}
if (externalNode != null && externalNode.getElementParameter("GROUP") != null) {
//$NON-NLS-1$
//$NON-NLS-1$
externalNode.getElementParameter("GROUP").setValue(groupList);
}
}
}
}
IElementParameter propertyParam = node.getElementParameterFromField(EParameterFieldType.PROPERTY_TYPE);
if (propertyParam != null) {
propertyParam.getChildParameters().get(EParameterName.PROPERTY_TYPE.getName()).setValue(EmfComponent.REPOSITORY);
propertyParam.getChildParameters().get(EParameterName.REPOSITORY_PROPERTY_TYPE.getName()).setValue(propertyId);
}
IProxyRepositoryFactory factory = DesignerPlugin.getDefault().getProxyRepositoryFactory();
Map<String, IMetadataTable> repositoryTableMap = new HashMap<String, IMetadataTable>();
if (!originalConnection.isReadOnly()) {
for (Object tableObj : ConnectionHelper.getTables(originalConnection)) {
org.talend.core.model.metadata.builder.connection.MetadataTable table;
table = (org.talend.core.model.metadata.builder.connection.MetadataTable) tableObj;
if (factory.getStatus(originalConnectionItem) != ERepositoryStatus.DELETED) {
if (!factory.isDeleted(table)) {
String value = table.getId();
IMetadataTable newTable = ConvertionHelper.convert(table);
repositoryTableMap.put(value, newTable);
}
}
}
}
// DesignerPlugin.getDefault().getProxyRepositoryFactory().getLastVersion("")
if (propertyParam != null) {
// command used to set property type
IMetadataTable metadataTable = null;
// && selectedNode.getObjectType() == ERepositoryObjectType.METADATA_CON_TABLE) {
if (selectedNode.getObject() instanceof IMetadataTable) {
metadataTable = (IMetadataTable) selectedNode.getObject();
if (metadataTable != null && repositoryTableMap.get(metadataTable.getId()) != null) {
metadataTable = repositoryTableMap.get(metadataTable.getId());
}
}
// }
ChangeValuesFromRepository command1 = new ChangeValuesFromRepository(node, connection, metadataTable, propertyParam.getName() + ":" + EParameterName.REPOSITORY_PROPERTY_TYPE.getName(), propertyId, //$NON-NLS-1$
true);
command1.setMaps(repositoryTableMap);
if (selectedNode.getProperties(EProperties.CONTENT_TYPE) != ERepositoryObjectType.METADATA_CON_QUERY) {
command1.setGuessQuery(true);
}
setSAPSpecailValueForCommand(selectedNode, command1);
// for salesForce module
SalesforceModuleRepositoryObject sfObject = null;
if (selectedNode.getProperties(EProperties.CONTENT_TYPE) == ERepositoryObjectType.METADATA_SALESFORCE_MODULE) {
sfObject = (SalesforceModuleRepositoryObject) selectedNode.getObject();
} else if (selectedNode.getProperties(EProperties.CONTENT_TYPE) == ERepositoryObjectType.METADATA_CON_TABLE) {
IRepositoryViewObject object = selectedNode.getParent().getObject();
if (object instanceof SalesforceModuleRepositoryObject) {
sfObject = (SalesforceModuleRepositoryObject) object;
}
}
if (sfObject != null) {
ModelElement modelElement = sfObject.getModelElement();
if (modelElement instanceof SalesforceModuleUnit) {
command1.setSalesForceModuleUnit((SalesforceModuleUnit) modelElement);
}
}
cc.add(command1);
}
// command used to set metadata
getChangeMetadataCommand(cc, selectedNode, node, originalConnectionItem);
// command used to set query
if (selectedNode.getProperties(EProperties.CONTENT_TYPE) == ERepositoryObjectType.METADATA_CON_QUERY) {
IElementParameter queryParam = node.getElementParameterFromField(EParameterFieldType.QUERYSTORE_TYPE);
QueryRepositoryObject object = (QueryRepositoryObject) selectedNode.getObject();
Query query = object.getQuery();
//$NON-NLS-1$
String value = originalConnectionItem.getProperty().getId() + " - " + query.getLabel();
if (queryParam != null) {
RepositoryChangeQueryCommand command3 = new RepositoryChangeQueryCommand(node, query, queryParam.getName() + ":" + EParameterName.REPOSITORY_QUERYSTORE_TYPE.getName(), //$NON-NLS-1$
value);
cc.add(command3);
}
} else {
if (connection instanceof DatabaseConnection && hasQuery(node)) {
DatabaseConnection connection2 = (DatabaseConnection) connection;
String schema = connection2.getUiSchema();
String dbType = connection2.getDatabaseType();
QueryGuessCommand queryGuessCommand = null;
if (node.getMetadataList().size() == 0) {
queryGuessCommand = new QueryGuessCommand(node, null, schema, dbType);
} else {
// modified by hyWang for bug 7190
queryGuessCommand = new QueryGuessCommand(node, node.getMetadataList().get(0), schema, dbType, connection);
}
if (queryGuessCommand != null) {
cc.add(queryGuessCommand);
}
}
}
// context, moved to ChangeValuesFromRepository(bug 5198)
// ConnectionContextHelper.addContextForNodeParameter(node, connectionItem);
} else if (selectedNode.getObject().getProperty().getItem() instanceof ProcessItem) {
ProcessItem processItem = (ProcessItem) selectedNode.getObject().getProperty().getItem();
// command used to set job
String value = processItem.getProperty().getId();
PropertyChangeCommand command4 = new PropertyChangeCommand(node, EParameterName.PROCESS_TYPE_PROCESS.getName(), value);
cc.add(command4);
PropertyChangeCommand command5 = new PropertyChangeCommand(node, EParameterName.PROCESS_TYPE_CONTEXT.getName(), processItem.getProcess().getDefaultContext());
cc.add(command5);
} else if (selectedNode.getObject().getProperty().getItem() instanceof FileItem) {
// hywang add for 6484
if (selectedNode.getObject().getProperty().getItem() instanceof RulesItem) {
RulesItem rulesItem = (RulesItem) selectedNode.getObject().getProperty().getItem();
// String displayName = "Rules:" + rulesItem.getProperty().getLabel(); //$NON-NLS-N$
IElementParameter propertyParam = node.getElementParameterFromField(EParameterFieldType.PROPERTY_TYPE);
if (propertyParam != null) {
propertyParam.getChildParameters().get(EParameterName.PROPERTY_TYPE.getName()).setValue(EmfComponent.REPOSITORY);
// propertyParam.getChildParameters().get(EParameterName.REPOSITORY_PROPERTY_TYPE.getName())
// .setListItemsDisplayName(new String[] { displayName });
final String showId = rulesItem.getProperty().getId();
PropertyChangeCommand command6 = new PropertyChangeCommand(node, EParameterName.REPOSITORY_PROPERTY_TYPE.getName(), showId);
cc.add(command6);
}
}
} else if (selectedNode.getObject().getProperty().getItem() instanceof LinkRulesItem) {
LinkRulesItem linkItem = (LinkRulesItem) selectedNode.getObject().getProperty().getItem();
IElementParameter propertyParam = node.getElementParameterFromField(EParameterFieldType.PROPERTY_TYPE);
if (propertyParam != null) {
propertyParam.getChildParameters().get(EParameterName.PROPERTY_TYPE.getName()).setValue(EmfComponent.REPOSITORY);
// propertyParam.getChildParameters().get(EParameterName.REPOSITORY_PROPERTY_TYPE.getName())
// .setListItemsDisplayName(new String[] { displayName });
final String showId = linkItem.getProperty().getId();
PropertyChangeCommand command7 = new PropertyChangeCommand(node, EParameterName.REPOSITORY_PROPERTY_TYPE.getName(), showId);
cc.add(command7);
}
}
return null;
}
use of org.talend.core.model.properties.ConnectionItem in project tdi-studio-se by Talend.
the class UpdateNodeParameterCommand method updateSchema.
@SuppressWarnings("unchecked")
private void updateSchema() {
Object updateObject = result.getUpdateObject();
if (updateObject == null) {
return;
}
if (updateObject instanceof Node) {
// opened job
Node node = (Node) updateObject;
boolean builtIn = true;
final IExternalNode externalNode = node.getExternalNode();
if (result.getResultType() == EUpdateResult.UPDATE) {
if (result.isChecked()) {
if (result.getParameter() instanceof List) {
// for ebcdic
if (PluginChecker.isEBCDICPluginLoaded()) {
IEBCDICProviderService service = (IEBCDICProviderService) GlobalServiceRegister.getDefault().getService(IEBCDICProviderService.class);
if (service != null) {
if (service.isEbcdicNode(node)) {
List<Object> parameter = (List<Object>) result.getParameter();
if (parameter.size() >= 2) {
IMetadataTable newTable = (IMetadataTable) parameter.get(0);
String schemaName = (String) parameter.get(1);
IMetadataTable metadataTable = MetadataToolHelper.getMetadataTableFromNodeLabel(node, schemaName);
if (metadataTable != null) {
MetadataToolHelper.copyTable(newTable, metadataTable);
}
syncSchemaForEBCDIC(node, metadataTable);
}
return;
}
}
}
// for tMap
if (GlobalServiceRegister.getDefault().isServiceRegistered(IDesignerMapperService.class)) {
IDesignerMapperService service = (IDesignerMapperService) GlobalServiceRegister.getDefault().getService(IDesignerMapperService.class);
if (service != null && externalNode != null && externalNode.getExternalData() != null) {
List<Object> parameter = (List<Object>) result.getParameter();
if (parameter.size() >= 2) {
if (node.getComponent() != null && "tMap".equals(node.getComponent().getName())) {
//$NON-NLS-1$
IMetadataTable newTable = (IMetadataTable) parameter.get(0);
String schemaId = (String) parameter.get(1);
service.updateMapperTableEntries(externalNode, schemaId, newTable);
node.setMetadataList(externalNode.getMetadataList());
syncSchemaForTMap(node);
// update metadataList,or it will cause bug 21080
for (IExternalMapTable latestTable : externalNode.getExternalData().getOutputTables()) {
for (IMetadataTable tableExsit : node.getMetadataList()) {
// find table,and update the table
if (latestTable.getName().equals(tableExsit.getTableName())) {
List<IMetadataColumn> newColumns = newTable.getListColumns();
for (IMetadataColumn column : tableExsit.getListColumns()) {
for (IMetadataColumn newColumn : newColumns) {
if (tableExsit.getTableName().equals(newTable.getTableName()) && newColumn.getLabel().equals(column.getLabel())) {
column.setTalendType(newColumn.getTalendType());
column.setNullable(newColumn.isNullable());
column.setComment(newColumn.getComment());
column.setDefault(newColumn.getDefault());
column.setLength(newColumn.getLength());
column.setType(newColumn.getType());
column.setKey(newColumn.isKey());
column.setPrecision(newColumn.getPrecision());
break;
}
}
}
break;
}
}
}
}
}
}
}
} else if (result.getParameter() instanceof IMetadataTable) {
IMetadataTable newTable = (IMetadataTable) result.getParameter();
// getListColumns());
if (newTable != null) {
INodeConnector nodeConnector = node.getConnectorFromName(newTable.getAttachedConnector());
// if (nodeConnector.getBaseSchema().equals(newTable.getAttachedConnector())) {
if (nodeConnector != null) {
List<IElementParameter> params = node.getElementParametersFromField(EParameterFieldType.SCHEMA_TYPE);
if (params == null || params.isEmpty()) {
params = node.getElementParametersFromField(EParameterFieldType.SCHEMA_REFERENCE);
}
// node.getElementParameterFromField(EParameterFieldType.SCHEMA_TYPE);
if (params != null) {
for (IElementParameter param : params) {
if (!newTable.getAttachedConnector().equals(param.getContext())) {
continue;
}
ChangeMetadataCommand cmd = null;
if (param.getChildParameters() != null && param.getChildParameters().get("REPOSITORY_SCHEMA_TYPE") != null && result.getContextModeConnectionItem() != null) {
final Object value = param.getChildParameters().get("REPOSITORY_SCHEMA_TYPE").getValue();
// for sap
String remark = result.getRemark();
String namePrefix = "";
if (remark != null) {
String[] split = remark.split(UpdatesConstants.SEGMENT_LINE);
if (split.length == 2) {
String tableName = split[1];
String[] tableSplit = tableName.split("/");
if (tableSplit.length == 3) {
namePrefix = tableSplit[0] + "/" + tableSplit[1] + "/";
}
}
}
String idAndName = result.getContextModeConnectionItem().getProperty().getId() + UpdatesConstants.SEGMENT_LINE + namePrefix + newTable.getLabel();
if (idAndName.equals(value)) {
cmd = new ChangeMetadataCommand(node, param, null, newTable);
}
} else {
cmd = new ChangeMetadataCommand(node, param, null, newTable);
}
if (cmd != null) {
// wzhang added to fix 9251. get the current connection.
String propertyValue = (String) node.getPropertyValue(EParameterName.REPOSITORY_PROPERTY_TYPE.getName());
IRepositoryViewObject lastVersion = UpdateRepositoryUtils.getRepositoryObjectById(propertyValue);
Connection repositoryConn = null;
if (lastVersion != null) {
final Item item = lastVersion.getProperty().getItem();
if (item != null && item instanceof ConnectionItem) {
repositoryConn = ((ConnectionItem) item).getConnection();
}
}
cmd.setConnection(repositoryConn);
if (node.getProcess() instanceof IProcess2) {
IUpdateManager updateManager = ((IProcess2) node.getProcess()).getUpdateManager();
if (updateManager instanceof AbstractUpdateManager) {
cmd.setColumnRenameMap(((AbstractUpdateManager) updateManager).getColumnRenamedMap());
}
}
cmd.setRepositoryMode(true);
cmd.execute(true);
}
}
} else {
MetadataToolHelper.copyTable(newTable, node.getMetadataFromConnector(nodeConnector.getName()));
}
// }
}
builtIn = false;
}
}
}
} else if (result.getResultType() == EUpdateResult.RENAME) {
List<Object> parameter = (List<Object>) result.getParameter();
if (parameter.size() >= 3) {
IMetadataTable newTable = (IMetadataTable) parameter.get(0);
String oldSourceId = (String) parameter.get(1);
String newSourceId = (String) parameter.get(2);
// for ebcdic
if (PluginChecker.isEBCDICPluginLoaded()) {
IEBCDICProviderService service = (IEBCDICProviderService) GlobalServiceRegister.getDefault().getService(IEBCDICProviderService.class);
if (service != null) {
if (service.isEbcdicNode(node)) {
String[] sourceIdAndChildName = UpdateManagerUtils.getSourceIdAndChildName(oldSourceId);
final String oldSchemaName = sourceIdAndChildName[1];
sourceIdAndChildName = UpdateManagerUtils.getSourceIdAndChildName(newSourceId);
final String newSchemaName = sourceIdAndChildName[1];
IMetadataTable metadataTable = MetadataToolHelper.getMetadataTableFromNodeLabel(node, oldSchemaName);
if (metadataTable != null && oldSchemaName != null) {
List<Map<String, Object>> paramValues = (List<Map<String, Object>>) node.getPropertyValue(IEbcdicConstant.TABLE_SCHEMAS);
for (Map<String, Object> line : paramValues) {
if (line.get(IEbcdicConstant.FIELD_SCHEMA).equals(oldSchemaName)) {
line.remove(IEbcdicConstant.FIELD_SCHEMA);
line.put(IEbcdicConstant.FIELD_SCHEMA, newSchemaName);
}
}
PropertyChangeCommand cmd = new PropertyChangeCommand(node, IEbcdicConstant.TABLE_SCHEMAS, paramValues);
cmd.execute();
MetadataToolHelper.copyTable(newTable, metadataTable);
metadataTable.setLabel(newSchemaName);
syncSchemaForEBCDIC(node, metadataTable);
}
}
}
}
// for tmap
if (GlobalServiceRegister.getDefault().isServiceRegistered(IDesignerMapperService.class)) {
IDesignerMapperService service = (IDesignerMapperService) GlobalServiceRegister.getDefault().getService(IDesignerMapperService.class);
if (service != null && externalNode != null && externalNode.getExternalData() != null) {
parameter = (List<Object>) result.getParameter();
if (parameter.size() >= 3) {
if (node.getComponent() != null && "tMap".equals(node.getComponent().getName())) {
//$NON-NLS-1$
newTable = (IMetadataTable) parameter.get(0);
String schemaId = (String) parameter.get(1);
String newSchemaId = (String) parameter.get(2);
service.renameMapperTable(externalNode, schemaId, newSchemaId, newTable);
node.setMetadataList(externalNode.getMetadataList());
syncSchemaForTMap(node);
}
}
}
}
String schemaParamName = UpdatesConstants.SCHEMA + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
IElementParameter repositoryParam = node.getElementParameter(schemaParamName);
if (repositoryParam == null) {
schemaParamName = UpdatesConstants.SCHEMA_FLOW + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
repositoryParam = node.getElementParameter(schemaParamName);
}
if (repositoryParam == null) {
IElementParameter schemaParentParam = node.getElementParameterFromField(EParameterFieldType.SCHEMA_REFERENCE);
if (schemaParentParam != null) {
schemaParamName = schemaParentParam.getName() + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
repositoryParam = node.getElementParameter(schemaParamName);
}
}
if (repositoryParam != null && oldSourceId.equals(repositoryParam.getValue())) {
node.setPropertyValue(schemaParamName, newSourceId);
if (newTable != null) {
for (INodeConnector nodeConnector : node.getListConnector()) {
if (nodeConnector.getBaseSchema().equals(newTable.getAttachedConnector())) {
MetadataToolHelper.copyTable(newTable, node.getMetadataFromConnector(nodeConnector.getName()));
}
}
}
builtIn = false;
}
String inputSchemaParamName = UpdatesConstants.INPUT_SCHEMA + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
IElementParameter inputRepositoryParam = node.getElementParameter(inputSchemaParamName);
if (inputRepositoryParam != null && oldSourceId.equals(inputRepositoryParam.getValue())) {
node.setPropertyValue(inputSchemaParamName, newSourceId);
if (newTable != null) {
for (INodeConnector nodeConnector : node.getListConnector()) {
if (nodeConnector.getBaseSchema().equals(newTable.getAttachedConnector())) {
MetadataToolHelper.copyTable(newTable, node.getMetadataFromConnector(nodeConnector.getName()));
}
}
}
builtIn = false;
}
// for tELTAggregate
schemaParamName = UpdatesConstants.SCHEMA_TARGET + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
repositoryParam = node.getElementParameter(schemaParamName);
if (repositoryParam != null && oldSourceId.equals(repositoryParam.getValue())) {
node.setPropertyValue(schemaParamName, newSourceId);
if (newTable != null) {
for (INodeConnector nodeConnector : node.getListConnector()) {
if (nodeConnector.getBaseSchema().equals(repositoryParam.getContext())) {
MetadataToolHelper.copyTable(newTable, node.getMetadataFromConnector(nodeConnector.getName()));
}
}
}
builtIn = false;
}
}
} else if (result.getResultType() == EUpdateResult.BUIL_IN) {
// for tELTAgrregate
if (UpdatesConstants.SCHEMA_TARGET.equals(result.getParameter())) {
node.setPropertyValue(UpdatesConstants.SCHEMA_TARGET + ":" + EParameterName.SCHEMA_TYPE.getName(), EmfComponent.BUILTIN);
} else {
// for ebcdic
if (PluginChecker.isEBCDICPluginLoaded()) {
IEBCDICProviderService service = (IEBCDICProviderService) GlobalServiceRegister.getDefault().getService(IEBCDICProviderService.class);
if (service != null) {
if (service.isEbcdicNode(node)) {
Object parameter = result.getParameter();
if (parameter instanceof Map) {
Map<String, Object> lineValue = (Map<String, Object>) parameter;
lineValue.remove(IEbcdicConstant.FIELD_SCHEMA + IEbcdicConstant.REF_TYPE);
}
// since it is a build-in ebcdic,should change its property before return
node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(), EmfComponent.BUILTIN);
return;
}
}
}
if (PluginChecker.isJobLetPluginLoaded()) {
IJobletProviderService service = (IJobletProviderService) GlobalServiceRegister.getDefault().getService(IJobletProviderService.class);
if (service != null && service.isJobletInOutComponent(node)) {
node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName() + ":" + EParameterName.SCHEMA_TYPE.getName(), EmfComponent.BUILTIN);
}
}
node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(), EmfComponent.BUILTIN);
for (IElementParameter param : node.getElementParameters()) {
SAPParametersUtils.setNoRepositoryParams(param);
}
}
} else if (result.getResultType() == EUpdateResult.DELETE) {
node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(), EmfComponent.BUILTIN);
} else if (result.getResultType() == EUpdateResult.RELOAD) {
List<Object> parameter = (List<Object>) result.getParameter();
String connectionId = null;
String tableLabel = null;
IRepositoryViewObject toReload = null;
IMetadataTable tableToReload = null;
if (parameter instanceof List) {
List listParameter = parameter;
connectionId = (String) node.getPropertyValue(EParameterName.REPOSITORY_PROPERTY_TYPE.getName());
tableLabel = ((String) listParameter.get(0)).split(UpdatesConstants.SEGMENT_LINE)[0];
}
if (connectionId != null) {
try {
toReload = ProxyRepositoryFactory.getInstance().getLastVersion(connectionId);
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
}
if (toReload != null) {
Set<MetadataTable> newTables = null;
Item item = toReload.getProperty().getItem();
if (item instanceof DatabaseConnectionItem) {
DatabaseConnectionItem dbItem = (DatabaseConnectionItem) item;
Connection connection = dbItem.getConnection();
if (connection instanceof DatabaseConnection) {
DatabaseConnection dbConn = (DatabaseConnection) connection;
Set<MetadataTable> tables = ProjectNodeHelper.getTablesFromSpecifiedDataPackage(dbConn);
if (tables != null && !tables.isEmpty()) {
Iterator it = tables.iterator();
while (it.hasNext() && tableToReload == null) {
MetadataTable table = (MetadataTable) it.next();
String label = table.getLabel();
if (tableLabel != null) {
if (label != null && label.equals(tableLabel)) {
tableToReload = ConvertionHelper.convert(table);
break;
}
}
}
}
newTables = ConnectionHelper.getTables(connection);
}
} else {
IGenericWizardService wizardService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IGenericWizardService.class)) {
wizardService = (IGenericWizardService) GlobalServiceRegister.getDefault().getService(IGenericWizardService.class);
}
if (wizardService != null && wizardService.isGenericItem(item)) {
Connection connection = ((ConnectionItem) item).getConnection();
List<MetadataTable> metadataTables = wizardService.getMetadataTables(connection);
newTables = new HashSet<>(metadataTables);
}
}
if (newTables != null && !newTables.isEmpty() && tableToReload == null) {
Iterator<MetadataTable> it = newTables.iterator();
while (it.hasNext() && tableToReload == null) {
MetadataTable table = it.next();
String label = table.getLabel();
if (tableLabel != null) {
if (label != null && label.equals(tableLabel)) {
tableToReload = ConvertionHelper.convert(table);
break;
}
}
}
}
if (tableToReload != null) {
int index = -1;
List<IMetadataTable> tablesInNode = node.getMetadataList();
for (IMetadataTable table : tablesInNode) {
if (table.getLabel().equals(tableToReload.getLabel())) {
index = tablesInNode.indexOf(table);
break;
}
}
if (index >= 0) {
IMetadataTable oldTable = tablesInNode.get(index);
/* dbms and Connector should be transfer when reloaded the table,20024 */
tableToReload.setAttachedConnector(oldTable.getAttachedConnector());
tableToReload.setDbms(oldTable.getDbms());
tablesInNode.remove(index);
tablesInNode.add(index, tableToReload);
builtIn = false;
}
}
}
}
// bug 23326
if (builtIn) {
// bult-in
node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(), EmfComponent.BUILTIN);
}
}
}
use of org.talend.core.model.properties.ConnectionItem in project tdi-studio-se by Talend.
the class UpdateDetectionDialog method removeDuplication.
/**
*
* ggu Comment method "removeDuplication".
*
* for context mode
*/
private void removeDuplication() {
// context mode added
List<UpdateResult> contextResult = new ArrayList<UpdateResult>();
for (UpdateResult result : getInputElements()) {
if (((result.getUpdateType() == EUpdateItemType.CONTEXT && result.getContextModeConnectionItem() != null) || result.getUpdateType() == EUpdateItemType.CONTEXT_GROUP) && result.getResultType() == EUpdateResult.ADD) {
contextResult.add(result);
}
}
// filter
List<ConnectionItem> connItems = new ArrayList<ConnectionItem>();
List<UpdateResult> duplicatedResult = new ArrayList<UpdateResult>();
Iterator<UpdateResult> iterator = contextResult.iterator();
List tempItems = new ArrayList();
List<String> contextGroups = new ArrayList<String>();
while (iterator.hasNext()) {
Map<Object, ConnectionItem> jobAndContext = new HashMap<Object, ConnectionItem>();
UpdateResult result = iterator.next();
if (result.getUpdateType() == EUpdateItemType.CONTEXT) {
ConnectionItem item = result.getContextModeConnectionItem();
jobAndContext.put(result.getJob(), item);
if (tempItems.contains(jobAndContext)) {
// duplicate
duplicatedResult.add(result);
} else {
tempItems.add(item);
}
} else if (result.getUpdateType() == EUpdateItemType.CONTEXT_GROUP) {
if (contextGroups.contains(result.getJobInfor())) {
duplicatedResult.add(result);
} else {
contextGroups.add(result.getJobInfor());
}
}
}
// remove
getInputElements().removeAll(duplicatedResult);
}
use of org.talend.core.model.properties.ConnectionItem in project tdi-studio-se by Talend.
the class AS400CheckController method createControl.
/*
* (non-Javadoc)
*
* @see
* org.talend.designer.core.ui.editor.properties.controllers.AbstractElementPropertySectionController#createControl
* (org.eclipse.swt.widgets.Composite, org.talend.core.model.process.IElementParameter, int, int, int,
* org.eclipse.swt.widgets.Control)
*/
@Override
public Control createControl(final Composite subComposite, final IElementParameter param, final int numInRow, final int nbInRow, final int top, final Control lastControl) {
final DecoratedField dField = new DecoratedField(subComposite, SWT.BORDER, new IControlCreator() {
@Override
public Control createControl(Composite parent, int style) {
return getWidgetFactory().createButton(parent, param.getDisplayName(), SWT.CHECK);
}
});
if (param.isRepositoryValueUsed()) {
FieldDecoration decoration = FieldDecorationRegistry.getDefault().getFieldDecoration(FieldDecorationRegistry.DEC_CONTENT_PROPOSAL);
//$NON-NLS-1$
decoration.setDescription(Messages.getString("CheckController.decoration.description"));
dField.addFieldDecoration(decoration, SWT.RIGHT | SWT.BOTTOM, false);
}
Control cLayout = dField.getLayoutControl();
cLayout.setBackground(subComposite.getBackground());
Button checkBtn = (Button) dField.getControl();
FormData data = new FormData();
data.top = new FormAttachment(0, top);
if (lastControl != null) {
data.left = new FormAttachment(lastControl, 0);
} else {
data.left = new FormAttachment((((numInRow - 1) * MAX_PERCENT) / nbInRow), 0);
}
cLayout.setLayoutData(data);
hashCurControls.put(param.getName(), checkBtn);
checkBtn.setEnabled(!param.isReadOnly());
String propertyType = (String) elem.getPropertyValue(EParameterName.PROPERTY_TYPE.getName());
if (propertyType.equals(EmfComponent.REPOSITORY)) {
IProxyRepositoryFactory factory = DesignerPlugin.getDefault().getProxyRepositoryFactory();
List<ConnectionItem> metadataConnectionsItem = null;
try {
metadataConnectionsItem = factory.getMetadataConnectionsItem();
} catch (PersistenceException e) {
throw new RuntimeException(e);
}
if (metadataConnectionsItem != null) {
for (ConnectionItem connectionItem : metadataConnectionsItem) {
//$NON-NLS-1$
String value = connectionItem.getProperty().getId() + "";
if (value.equals(elem.getPropertyValue(EParameterName.REPOSITORY_PROPERTY_TYPE.getName()))) {
boolean b = getConnection(connectionItem).isStandardSQL();
checkBtn.setSelection(b);
}
}
}
} else {
boolean b = CoreUIPlugin.getDefault().getPreferenceStore().getBoolean(ITalendCorePrefConstants.AS400_SQL_SEG);
checkBtn.setSelection(b);
}
if (elem instanceof Node) {
checkBtn.setToolTipText(VARIABLE_TOOLTIP + param.getVariableName());
}
Point initialSize = checkBtn.computeSize(SWT.DEFAULT, SWT.DEFAULT);
dynamicProperty.setCurRowSize(initialSize.y + ITabbedPropertyConstants.VSPACE);
return cLayout;
}
use of org.talend.core.model.properties.ConnectionItem in project tdi-studio-se by Talend.
the class DynamicTabbedPropertySection method updateRepositoryListExtra.
private void updateRepositoryListExtra(IElementParameter param, String[] repositoryConnectionNameList, String[] repositoryConnectionValueList, boolean extra) {
String paramName = EParameterName.PROPERTY_TYPE.getName();
// if (extra) {
// paramName = extraPropertyTypeName;
// }
String repositoryValue = elem.getElementParameter(paramName).getRepositoryValue();
if (repositoryValue != null) {
List<String> connectionNamesList = new ArrayList<String>();
List<String> connectionValuesList = new ArrayList<String>();
for (String key : repositoryConnectionItemMap.keySet()) {
ConnectionItem connectionItem = repositoryConnectionItemMap.get(key);
Connection connection = connectionItem.getConnection();
String name = //$NON-NLS-1$
getRepositoryAliasName(connectionItem) + ":" + connectionItem.getProperty().getLabel();
if ((connection instanceof DelimitedFileConnection) && (repositoryValue.equals(ERepositoryCategoryType.DELIMITED.getName()))) {
addOrderDisplayNames(connectionValuesList, connectionNamesList, key, name);
}
if ((connection instanceof PositionalFileConnection) && (repositoryValue.equals(ERepositoryCategoryType.POSITIONAL.getName()))) {
addOrderDisplayNames(connectionValuesList, connectionNamesList, key, name);
}
if ((connection instanceof RegexpFileConnection) && (repositoryValue.equals(ERepositoryCategoryType.REGEX.getName()))) {
addOrderDisplayNames(connectionValuesList, connectionNamesList, key, name);
}
if ((connection instanceof XmlFileConnection) && (repositoryValue.equals(ERepositoryCategoryType.XML.getName()))) {
addOrderDisplayNames(connectionValuesList, connectionNamesList, key, name);
}
if ((connection instanceof FileExcelConnection) && (repositoryValue.equals(ERepositoryCategoryType.EXCEL.getName()))) {
addOrderDisplayNames(connectionValuesList, connectionNamesList, key, name);
}
if ((connection instanceof GenericSchemaConnection) && (repositoryValue.equals(ERepositoryCategoryType.GENERIC.getName()))) {
addOrderDisplayNames(connectionValuesList, connectionNamesList, key, name);
}
if ((connection instanceof LDAPSchemaConnection) && (repositoryValue.equals(ERepositoryCategoryType.LDAP.getName()))) {
addOrderDisplayNames(connectionValuesList, connectionNamesList, key, name);
}
if ((connection instanceof SalesforceSchemaConnection) && (repositoryValue.equals(ERepositoryCategoryType.SALESFORCE.getName()))) {
addOrderDisplayNames(connectionValuesList, connectionNamesList, key, name);
}
if ((connection instanceof DatabaseConnection) && (repositoryValue.startsWith(ERepositoryCategoryType.DATABASE.getName()))) {
//$NON-NLS-1$
String currentDbType = (String) RepositoryToComponentProperty.getValue(connection, "TYPE", null);
if (repositoryValue.contains(":")) {
// database //$NON-NLS-1$
// is
// specified
// //$NON-NLS-1$
//$NON-NLS-1$
String neededDbType = repositoryValue.substring(repositoryValue.indexOf(":") + 1);
if (neededDbType.equals(currentDbType)) {
addOrderDisplayNames(connectionValuesList, connectionNamesList, key, name);
}
} else {
addOrderDisplayNames(connectionValuesList, connectionNamesList, key, name);
}
}
if ((connection instanceof HeaderFooterConnection) && (repositoryValue.equals(ERepositoryCategoryType.HEADERFOOTER.getName()))) {
addOrderDisplayNames(connectionValuesList, connectionNamesList, key, name);
}
}
repositoryConnectionNameList = connectionNamesList.toArray(new String[0]);
repositoryConnectionValueList = connectionValuesList.toArray(new String[0]);
} else {
List<String> connectionValuesList = new ArrayList<String>();
List<String> connectionStringList = new ArrayList<String>();
for (String key : repositoryConnectionItemMap.keySet()) {
ConnectionItem connectionItem = repositoryConnectionItemMap.get(key);
String name = connectionItem.getProperty().getLabel();
addOrderDisplayNames(connectionValuesList, connectionStringList, key, name);
}
repositoryConnectionNameList = connectionStringList.toArray(new String[0]);
repositoryConnectionValueList = connectionValuesList.toArray(new String[0]);
}
param.setListItemsDisplayName(repositoryConnectionNameList);
param.setListItemsValue(repositoryConnectionValueList);
if (!repositoryConnectionItemMap.keySet().contains(param.getValue())) {
if (repositoryConnectionNameList.length > 0) {
// paramName = EParameterName.REPOSITORY_PROPERTY_TYPE.getName();
// if (extra) {
// paramName = extraRepositoryPropertyTypeName;
// }
elem.setPropertyValue(paramName, repositoryConnectionValueList[0]);
}
}
}
Aggregations