use of org.talend.core.model.process.IExternalData in project tdi-studio-se by Talend.
the class DbMapComponent method inputMetadataColumnAmountChanged.
private void inputMetadataColumnAmountChanged(IODataComponent dataComponent, IExternalNode externalNode) {
List<ColumnNameChanged> removedMetadataColumns = dataComponent.getRemoveMetadataColumns();
IExternalData iExternalData = externalNode.getExternalData();
if (iExternalData == null || removedMetadataColumns == null || removedMetadataColumns.size() == 0) {
return;
}
List<ExternalDbMapTable> metaTableList = (List<ExternalDbMapTable>) iExternalData.getInputTables();
if (metaTableList == null || metaTableList.size() == 0) {
return;
}
// in the eltmap, the input table name is same with it's input connection name
String tableName = dataComponent.getName();
if (StringUtils.isEmpty(tableName)) {
return;
}
for (ExternalDbMapTable metaTable : metaTableList) {
if (tableName.equals(metaTable.getTableName())) {
List<IExternalMapEntry> externalMapEntryList = (List<IExternalMapEntry>) metaTable.returnTableEntries();
if (externalMapEntryList == null || externalMapEntryList.size() == 0) {
continue;
}
if (removedMetadataColumns != null && 0 < removedMetadataColumns.size()) {
for (ColumnNameChanged removedMetadataColumn : removedMetadataColumns) {
if ("".equals(removedMetadataColumn.getNewName())) {
//$NON-NLS-1$
String columnName = removedMetadataColumn.getOldName();
for (int i = externalMapEntryList.size() - 1; 0 <= i; i--) {
IExternalMapEntry mapEntry = externalMapEntryList.get(i);
if (columnName.equals(mapEntry.getName())) {
externalMapEntryList.remove(i);
break;
}
}
}
}
}
}
}
}
use of org.talend.core.model.process.IExternalData in project tdi-studio-se by Talend.
the class MapperManager method isDataChanged.
/*
* (non-Javadoc)
*
* @see org.talend.designer.abstractmap.managers.AbstractMapperManager#isMapperChanged()
*/
@Override
public boolean isDataChanged() {
getAbstractMapComponent().restoreMapperModelFromInternalData();
IExternalData originalExternalData = getOriginalExternalData();
IExternalData currentExternalData = getAbstractMapComponent().getExternalData();
if (originalExternalData == null && currentExternalData == null) {
return false;
}
if (originalExternalData == null && currentExternalData != null) {
return true;
}
return !originalExternalData.equals(currentExternalData) || MapperSettingsManager.getInstance(this).isMapperSettingChanged();
}
use of org.talend.core.model.process.IExternalData in project tdi-studio-se by Talend.
the class NodePart method performRequest.
@Override
public void performRequest(Request req) {
Node node = (Node) getModel();
IExternalData oldExternalData = node.getExternalData();
if (req.getType().equals(RequestConstants.REQ_OPEN)) {
IExternalNode externalNode = null;
if (node.isExternalNode()) {
IElementParameter externalParam = node.getElementParameterFromField(EParameterFieldType.EXTERNAL);
if (externalParam != null && externalParam.isShow(node.getElementParameters())) {
externalNode = ExternalUtilities.getExternalNodeReadyToOpen(node);
}
}
IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if (externalNode != null && (part instanceof AbstractMultiPageTalendEditor)) {
boolean isOriginalNode = false;
ITestContainerProviderService testContainerService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(ITestContainerProviderService.class)) {
testContainerService = (ITestContainerProviderService) GlobalServiceRegister.getDefault().getService(ITestContainerProviderService.class);
if (testContainerService != null) {
isOriginalNode = testContainerService.isOriginalNode(node);
if (isOriginalNode) {
testContainerService.renameConnection(node, true);
}
}
}
int returnValue = externalNode.open(getViewer().getControl().getShell());
if (!node.isReadOnly()) {
if (returnValue == SWT.OK) {
Command cmd = new ExternalNodeChangeCommand(node, externalNode, oldExternalData);
CommandStack cmdStack = (CommandStack) part.getAdapter(CommandStack.class);
cmdStack.execute(cmd);
} else {
externalNode.setExternalData(oldExternalData);
}
}
if (isOriginalNode && (testContainerService != null)) {
testContainerService.renameConnection(node, false);
}
} else {
// add for feature 13361
boolean isJoblet = false;
if (PluginChecker.isJobLetPluginLoaded()) {
AbstractProcessProvider jobletProcessProvider = AbstractProcessProvider.findProcessProviderFromPID(IComponent.JOBLET_PID);
final IJobletProviderService service = (IJobletProviderService) GlobalServiceRegister.getDefault().getService(IJobletProviderService.class);
boolean isAvoidShowJobletAfterDoubleClick = false;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IComponentsLocalProviderService.class)) {
IComponentsLocalProviderService componentService = (IComponentsLocalProviderService) GlobalServiceRegister.getDefault().getService(IComponentsLocalProviderService.class);
if (componentService != null) {
isAvoidShowJobletAfterDoubleClick = componentService.isAvoidToShowJobletAfterDoubleClick();
}
}
if (service != null && service.isJobletComponent(node) && !isAvoidShowJobletAfterDoubleClick) {
isJoblet = true;
String version = (String) node.getPropertyValue(EParameterName.PROCESS_TYPE_VERSION.getName());
final Item jobletItem = jobletProcessProvider.getJobletItem(node, version);
RepositoryWorkUnit<Object> repositoryWorkUnit = new RepositoryWorkUnit<Object>("", this) {
@Override
protected void run() throws LoginException, PersistenceException {
if (jobletItem != null) {
service.openJobletItem((JobletProcessItem) jobletItem);
}
}
};
repositoryWorkUnit.setAvoidUnloadResources(true);
CoreRuntimePlugin.getInstance().getProxyRepositoryFactory().executeRepositoryWorkUnit(repositoryWorkUnit);
}
}
if (!isJoblet) {
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
String processName = (String) node.getPropertyValue(EParameterName.PROCESS_TYPE_PROCESS.getName());
String version = (String) node.getPropertyValue(EParameterName.PROCESS_TYPE_VERSION.getName());
boolean isAvoidShowJobAfterDoubleClick = false;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IComponentsLocalProviderService.class)) {
IComponentsLocalProviderService service = (IComponentsLocalProviderService) GlobalServiceRegister.getDefault().getService(IComponentsLocalProviderService.class);
if (service != null) {
isAvoidShowJobAfterDoubleClick = service.isAvoidToShowJobAfterDoubleClick();
}
}
// bug 20796
boolean isSelectUseDynamic = false;
Object useDynamicJobValue = node.getPropertyValue(EParameterName.USE_DYNAMIC_JOB.getName());
if (useDynamicJobValue != null && useDynamicJobValue instanceof Boolean) {
isSelectUseDynamic = (Boolean) useDynamicJobValue;
}
if (processName != null && !"".equals(processName) && !isAvoidShowJobAfterDoubleClick && !isSelectUseDynamic) {
//$NON-NLS-1$
ItemCacheManager.clearCache();
ProcessItem processItem = ItemCacheManager.getProcessItem(processName, version);
if (processItem == null) {
return;
}
Property updatedProperty = null;
try {
updatedProperty = ProxyRepositoryFactory.getInstance().getLastVersion(new Project(ProjectManager.getInstance().getProject(processItem)), processName).getProperty();
} catch (PersistenceException e) {
CommonExceptionHandler.process(e);
}
// update the property of the node repository object
// node.getObject().setProperty(updatedProperty);
processItem = (ProcessItem) updatedProperty.getItem();
final ProcessItem item = processItem;
RepositoryWorkUnit<Object> repositoryWorkUnit = new RepositoryWorkUnit<Object>("", this) {
@Override
protected void run() throws LoginException, PersistenceException {
try {
if (item != null) {
ERepositoryObjectType repObjType = ERepositoryObjectType.getItemType(item);
IJobEditorHandler editorInputFactory = JobEditorHandlerManager.getInstance().extractEditorInputFactory(repObjType.getType());
editorInputFactory.openJobEditor(editorInputFactory.createJobEditorInput(item, true));
}
} catch (PartInitException e) {
MessageBoxExceptionHandler.process(e);
}
}
};
repositoryWorkUnit.setAvoidUnloadResources(true);
CoreRuntimePlugin.getInstance().getProxyRepositoryFactory().executeRepositoryWorkUnit(repositoryWorkUnit);
} else {
try {
// modified for feature 2454.
page.showView(ComponentSettingsView.ID);
} catch (PartInitException e) {
CommonExceptionHandler.process(e);
}
}
}
}
}
super.performRequest(req);
}
use of org.talend.core.model.process.IExternalData in project tdi-studio-se by Talend.
the class DesignerMapperService method isSameMetadata.
public boolean isSameMetadata(IExternalNode externalNode, String schemaId, IMetadataTable metadataTable) {
boolean isSame = true;
if (externalNode == null || schemaId == null || metadataTable == null) {
return false;
}
if (externalNode instanceof MapperComponent) {
MapperComponent component = (MapperComponent) externalNode;
IExternalData nodeData = externalNode.getExternalData();
if (nodeData != null && nodeData instanceof ExternalMapperData) {
ExternalMapperData mapperData = (ExternalMapperData) nodeData;
List<ExternalMapperTable> outputTables = mapperData.getOutputTables();
if (outputTables != null && outputTables.size() > 0) {
for (ExternalMapperTable outputTable : outputTables) {
if (schemaId.equals(outputTable.getId())) {
final IMetadataTable mapperTable = getMetadataTable(component, outputTable.getName());
if (mapperTable == null || !mapperTable.sameMetadataAs(metadataTable, IMetadataColumn.OPTIONS_NONE)) {
return false;
}
}
}
}
// for (ExternalMapperTable extTable : extTables) {
// isSame = isMetadataSame(extTable, metadataTable);
// if (!isSame)
// return isSame;
// }
}
}
return isSame;
}
use of org.talend.core.model.process.IExternalData in project tdi-studio-se by Talend.
the class DesignerMapperService method renameMapperTable.
public void renameMapperTable(IExternalNode externalNode, String schemaId, String newSchemaId, IMetadataTable metadataTable) {
if (externalNode == null || schemaId == null || metadataTable == null) {
return;
}
if (externalNode instanceof MapperComponent) {
MapperComponent component = (MapperComponent) externalNode;
IExternalData nodeData = externalNode.getExternalData();
if (nodeData != null && nodeData instanceof ExternalMapperData) {
ExternalMapperData mapperData = (ExternalMapperData) nodeData;
List<ExternalMapperTable> outputTables = mapperData.getOutputTables();
if (outputTables != null && outputTables.size() > 0) {
for (ExternalMapperTable outputTable : outputTables) {
if (!schemaId.equals(outputTable.getId())) {
continue;
}
outputTable.setId(newSchemaId);
updateEntriesByMetaColumns(newSchemaId, metadataTable, outputTable, component);
}
}
}
}
}
Aggregations