@SuppressWarnings("unchecked") private static List<NodeType> getProcessNodeTypes(IRepositoryNode node) { Item item = node.getObject().getProperty().getItem(); if (item instanceof ProcessItem) { ProcessType process = ((ProcessItem) item).getProcess(); return process.getNode(); } return Collections.emptyList(); }
/* * (non-Javadoc) * * @see * org.talend.core.model.migration.TXMLMapChangeAllInOneValueMigrationTask * (org .talend.core.model.properties.Item) */ @Override public ExecutionResult execute(Item item) { IProxyRepositoryFactory factory = CorePlugin.getDefault().getRepositoryService().getProxyRepositoryFactory(); ProcessType processType = getProcessType(item); boolean modified = false; if (processType != null) { for (Object obj : processType.getNode()) { NodeType nodeType = (NodeType) obj; if (nodeType.getComponentName().startsWith("tXMLMap")) { XmlMapData xmlMapdata = (XmlMapData) nodeType.getNodeData(); EList<OutputXmlTree> outputTables = xmlMapdata.getOutputTrees(); EList<InputXmlTree> inputTables = xmlMapdata.getInputTrees(); boolean hasDocumentInTheMainInputTable = false; for (InputXmlTree inputTable : inputTables) { if (!(inputTable.isLookup())) { for (TreeNode inputEntry : inputTable.getNodes()) { if ("id_Document".equals(inputEntry.getType())) { hasDocumentInTheMainInputTable = true; } } } } if (hasDocumentInTheMainInputTable) { for (OutputXmlTree outputTable : outputTables) { for (TreeNode outputEntry : outputTable.getNodes()) { if ("id_Document".equals(outputEntry.getType())) { if (!outputTable.isAllInOne()) { outputTable.setAllInOne(true); modified = true; break; } } } } } } } } try { if (modified) { factory.save(item, true); return ExecutionResult.SUCCESS_WITH_ALERT; } else { return ExecutionResult.SUCCESS_NO_ALERT; } } catch (Exception e) { ExceptionHandler.process(e); return ExecutionResult.FAILURE; } }
@Override public ExecutionResult execute(Item item) { try { ProcessType processType = getProcessType(item); if (getProject().getLanguage() == ECodeLanguage.JAVA || processType == null) { return ExecutionResult.NOTHING_TO_DO; } else { List<String> namesList = new ArrayList<String>(); for (Object o : processType.getNode()) { NodeType nt = (NodeType) o; namesList.add(ComponentUtilities.getNodeUniqueName(nt)); } for (Object o : processType.getConnection()) { ConnectionType currentConnection = (ConnectionType) o; int lineStyle = currentConnection.getLineStyle(); EConnectionType connectionType = EConnectionType.getTypeFromId(lineStyle); if (connectionType.hasConnectionCategory(EConnectionType.FLOW)) { namesList.add(currentConnection.getLabel()); } } final String[] namesArrays = namesList.toArray(new String[0]); IComponentFilter filter1 = new IComponentFilter() { /* * (non-Javadoc) * * @see org.talend.core.model.components.filters.IComponentFilter#accept(org.talend.designer.core.model.utils.emf.talendfile.NodeType) */ public boolean accept(NodeType node) { return true; } }; IComponentConversion componentConversion = new IComponentConversion() { RefArraySyntaxReplacerForPerl parser = new RefArraySyntaxReplacerForPerl(); /* * (non-Javadoc) * * @see org.talend.core.model.components.conversions.IComponentConversion#transform(org.talend.designer.core.model.utils.emf.talendfile.NodeType) */ public void transform(NodeType node) { for (Object o : node.getElementParameter()) { ElementParameterType pType = (ElementParameterType) o; if (pType.getField().equals("TABLE")) { // $NON-NLS-1$ for (ElementValueType elementValue : (List<ElementValueType>) pType.getElementValue()) { elementValue.getValue(); String value = elementValue.getValue(); if (value != null) { String newValue = parser.processReplacementOperations(value, namesArrays); elementValue.setValue(newValue); } } } else { String value = pType.getValue(); if (value != null) { String newValue = parser.processReplacementOperations(value, namesArrays); pType.setValue(newValue); } } } } }; ModifyComponentsAction.searchAndModify( item, processType, filter1, Arrays.<IComponentConversion>asList(componentConversion)); return ExecutionResult.SUCCESS_WITH_ALERT; } } catch (Exception e) { ExceptionHandler.process(e); return ExecutionResult.FAILURE; } }