use of org.talend.core.model.update.IUpdateItemType in project tdi-studio-se by Talend.
the class CreateNodeContainerCommand method execute.
@Override
public void execute() {
if (this.location != null) {
this.nodeContainer.getNode().setLocation(this.location);
}
updatePaletteRecentlyUsedList();
AbstractProcessProvider provider = AbstractProcessProvider.findProcessProviderFromPID(nodeContainer.getNode().getComponent().getPluginExtension());
IElementParameter ep = nodeContainer.getNode().getElementParameter(EParameterName.UNIQUE_NAME.getName());
process.addUniqueNodeName(ep.getValue().toString());
if (provider == null || (provider != null && provider.containNodeInMemoryNotProcess())) {
this.process.addNodeContainer(this.nodeContainer);
process.checkStartNodes();
nodeContainer.getNode().checkAndRefreshNode();
refreshRelatedNodes();
// }
if (nodeContainer.getNode().getComponent().getComponentType() == EComponentType.JOBLET) {
IUpdateItemType jobletContextType = UpdateManagerProviderDetector.INSTANCE.getUpdateItemType(UpdateManagerHelper.TYPE_JOBLET_CONTEXT);
if (jobletContextType != null) {
process.getUpdateManager().update(jobletContextType);
}
}
} else {
String name = provider.getComponentProcess().getName() + " " + provider.getComponentProcess().getVersion();
MessageDialog warningMessageDialog = new MessageDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Can't create node", null, "Joblet process " + name + " is not saved. Please save it first", MessageDialog.OK, new String[] { "OK" }, 0);
warningMessageDialog.open();
}
}
use of org.talend.core.model.update.IUpdateItemType in project tdi-studio-se by Talend.
the class UpdateCheckResult method getName.
@Override
@SuppressWarnings("unchecked")
public String getName() {
IUpdateItemType updateType = getUpdateType();
String displayName = updateType.getDisplayLabel();
if (updateType instanceof EUpdateItemType) {
switch((EUpdateItemType) updateType) {
case NODE_SCHEMA:
if (getResultType() == EUpdateResult.RENAME) {
List<Object> param = (List<Object>) getParameter();
String[] oldSourceIdAndChildName = UpdateManagerUtils.getSourceIdAndChildName((String) param.get(1));
String[] newSourceIdAndChildName = UpdateManagerUtils.getSourceIdAndChildName((String) param.get(2));
String display = UpdateManagerHelper.getRenamedDisplay(oldSourceIdAndChildName[1], newSourceIdAndChildName[1]);
if (display != null) {
displayName = display;
}
} else if (getResultType() == EUpdateResult.DELETE) {
// table delete by deselect
List<Object> param = (List<Object>) getParameter();
String tableDeleted = (String) param.get(0);
EUpdateResult status = (EUpdateResult) param.get(1);
String display = getDeleteOrReloadDisplay(tableDeleted, status);
if (display != null) {
displayName = display;
}
} else if (getResultType() == EUpdateResult.RELOAD) {
// table reload by deselect and reselect
List<Object> param = (List<Object>) getParameter();
String tableReload = (String) param.get(0);
EUpdateResult status = (EUpdateResult) param.get(1);
String display = getDeleteOrReloadDisplay(tableReload, status);
if (display != null) {
displayName = display;
}
} else {
if (getUpdateObject() instanceof INode && getParameter() instanceof List && PluginChecker.isEBCDICPluginLoaded()) {
IEBCDICProviderService service = (IEBCDICProviderService) GlobalServiceRegister.getDefault().getService(IEBCDICProviderService.class);
if (service != null && service.isEbcdicNode((INode) getUpdateObject())) {
List<Object> paramObjs = (List<Object>) getParameter();
if (paramObjs.size() >= 2) {
Object schemaName = paramObjs.get(1);
if (schemaName instanceof String) {
displayName = displayName + UpdateManagerUtils.addBrackets((String) schemaName);
}
}
}
}
}
break;
case NODE_PROPERTY:
case NODE_QUERY:
case JOBLET_SCHEMA:
case NODE_VALIDATION_RULE:
break;
case JOB_PROPERTY_EXTRA:
displayName = displayName + UpdateManagerUtils.addBrackets(EComponentCategory.EXTRA.getTitle());
break;
case JOB_PROPERTY_STATS_LOGS:
displayName = displayName + UpdateManagerUtils.addBrackets(EComponentCategory.STATSANDLOGS.getTitle());
break;
case JOB_PROPERTY_HEADERFOOTER:
displayName = displayName + UpdateManagerUtils.addBrackets(EComponentCategory.HEADERFOOTER.getTitle());
break;
case CONTEXT_GROUP:
if (getUpdateObject() != null && getUpdateObject() instanceof IContext) {
displayName = ((IContext) getUpdateObject()).getName();
}
break;
case CONTEXT:
// case JOBLET_CONTEXT:
{
String display = null;
switch(getResultType()) {
case RENAME:
List<Object> param = (List<Object>) getParameter();
display = UpdateManagerHelper.getRenamedDisplay((String) param.get(1), (String) param.get(2));
break;
default:
if (getUpdateObject() instanceof Collection) {
display = UpdateManagerHelper.getCollectionsDisplay(getUpdateObject(), false);
}
break;
}
if (display != null) {
displayName = display;
}
break;
}
case JOBLET_RENAMED:
{
List<Object> param = (List<Object>) getParameter();
String display = UpdateManagerHelper.getRenamedDisplay((String) param.get(1), (String) param.get(2));
if (display != null) {
displayName = display;
}
break;
}
case RELOAD:
case JUNIT_RELOAD:
if (getParameter() != null && getParameter() instanceof PropertyChangeEvent) {
PropertyChangeEvent event = (PropertyChangeEvent) getParameter();
// reload all compoennts.
if (event.getSource() != null && !(event.getSource() instanceof IProcess)) {
displayName = updateType.getDisplayLabel();
break;
}
}
break;
default:
}
return displayName;
} else {
return UpdateManagerProviderDetector.INSTANCE.getResultName(this);
}
}
use of org.talend.core.model.update.IUpdateItemType in project tdi-studio-se by Talend.
the class UpdateNodeParameterCommand method execute.
@Override
public void execute() {
if (result == null) {
return;
}
Object updateObject = result.getUpdateObject();
if (updateObject == null || (!(updateObject instanceof Node)) || (!(result.getJob() instanceof IProcess))) {
return;
}
// instance of node before might not be good (loaded while check updates needed)
// so get the instance of the node of the current job in this object.
IProcess process = (IProcess) result.getJob();
for (INode node : process.getGraphicalNodes()) {
if (node.getUniqueName().equals(((Node) updateObject).getUniqueName())) {
updateObject = node;
result.setUpdateObject(updateObject);
break;
}
}
IUpdateItemType updateType = result.getUpdateType();
if (updateType instanceof EUpdateItemType) {
switch((EUpdateItemType) updateType) {
case NODE_PROPERTY:
updateProperty();
break;
case NODE_SCHEMA:
updateSchema();
break;
case NODE_QUERY:
updateQuery();
break;
case NODE_SAP_FUNCTION:
updateSAPParameters();
break;
case NODE_SAP_IDOC:
updateSAPIDocParameters();
break;
case NODE_VALIDATION_RULE:
updateValidationRule();
break;
default:
return;
}
}
// else { // for extension
Node node = (Node) updateObject;
if (node.getProcess() instanceof IProcess2) {
PropertyChangeCommand pcc = new PropertyChangeCommand(node, EParameterName.UPDATE_COMPONENTS.getName(), Boolean.TRUE);
boolean executed = false;
if (process instanceof IGEFProcess) {
IDesignerCoreUIService designerCoreUIService = CoreUIPlugin.getDefault().getDesignerCoreUIService();
if (designerCoreUIService != null) {
executed = designerCoreUIService.executeCommand((IGEFProcess) process, pcc);
}
}
if (!executed) {
pcc.execute();
}
}
}
use of org.talend.core.model.update.IUpdateItemType in project tdi-studio-se by Talend.
the class UpdateJobletNodeCommand method execute.
/**
* this function is moved from the method updateGraphicalNodes.
*/
@SuppressWarnings("unchecked")
@Override
public void execute() {
Object job = result.getJob();
if (job == null) {
return;
}
if (job instanceof Process) {
Process process = (Process) job;
Object parameter = result.getParameter();
// update property change events
if (parameter instanceof PropertyChangeEvent) {
PropertyChangeEvent evt = (PropertyChangeEvent) parameter;
updatePropertyChangeEvents(process, evt);
} else {
//
IUpdateItemType updateType = result.getUpdateType();
if (updateType instanceof EUpdateItemType) {
switch((EUpdateItemType) updateType) {
case JOBLET_RENAMED:
if (!(parameter instanceof List)) {
return;
}
List<Object> params = (List<Object>) parameter;
if (params.size() != 3) {
return;
}
final String oldName = (String) params.get(1);
final String newName = (String) params.get(2);
updateRenaming(process, oldName, newName);
break;
case RELOAD:
List<Node> jobletNodes = (List<Node>) result.getUpdateObject();
if (jobletNodes != null && !jobletNodes.isEmpty()) {
for (Node node : jobletNodes) {
IComponent newComponent = ComponentsFactoryProvider.getInstance().get(node.getComponent().getName(), process.getComponentsType());
if (newComponent == null) {
continue;
}
// node loaded is from loading in the check.
// need to get the instance from process, or this process will be done with wrong
// instance
// of node.
Node currentNode = getOriginalNodeFromProcess(node);
boolean neesPro = needPropagate(currentNode);
if (currentNode.isJoblet() || currentNode.isMapReduce()) {
// maybe no need modify
List<IElementParameter> tempList = new ArrayList<IElementParameter>(currentNode.getElementParameters());
if (result.isNeedReloadJoblet()) {
reloadNode(currentNode, newComponent);
}
if (currentNode.getNodeContainer() instanceof AbstractJobletContainer) {
for (IElementParameter para : tempList) {
currentNode.getElementParameter(para.getName()).setValue(para.getValue());
}
((AbstractJobletContainer) currentNode.getNodeContainer()).updateJobletNodes(true);
}
} else {
reloadNode(currentNode, newComponent);
}
propagate(currentNode, neesPro);
}
process.checkProcess();
}
break;
case JOBLET_SCHEMA:
updateSchema(process, (Node) result.getUpdateObject());
break;
default:
}
}
// else { // for extension
}
}
}
use of org.talend.core.model.update.IUpdateItemType in project tdi-studio-se by Talend.
the class UpdateMainParameterCommand method execute.
@Override
public void execute() {
if (result == null) {
return;
}
Object job = result.getJob();
if (job == null) {
return;
}
if (job instanceof IProcess2) {
Process process = (Process) job;
EComponentCategory category = null;
IUpdateItemType updateType = result.getUpdateType();
if (updateType instanceof EUpdateItemType) {
switch((EUpdateItemType) updateType) {
case JOB_PROPERTY_EXTRA:
category = EComponentCategory.EXTRA;
break;
case JOB_PROPERTY_STATS_LOGS:
category = EComponentCategory.STATSANDLOGS;
break;
case JOB_PROPERTY_HEADERFOOTER:
category = EComponentCategory.HEADERFOOTER;
break;
case JOB_PROPERTY_STORM:
if (ComponentCategory.CATEGORY_4_SPARKSTREAMING.getName().equals(process.getComponentsType())) {
category = EComponentCategory.SPARK_JOB_CONFIG;
}
break;
case JOB_PROPERTY_MAPREDUCE:
if (ComponentCategory.CATEGORY_4_MAPREDUCE.getName().equals(process.getComponentsType())) {
category = EComponentCategory.MAPREDUCE_JOB_CONFIG_FOR_HADOOP;
} else if (ComponentCategory.CATEGORY_4_SPARK.getName().equals(process.getComponentsType())) {
category = EComponentCategory.SPARK_JOB_CONFIG;
}
break;
default:
}
if (category == EComponentCategory.HEADERFOOTER) {
if (result.getResultType() == EUpdateResult.UPDATE) {
if (result.isChecked()) {
for (IElementParameter param : process.getElementParameters()) {
if (param.getCategory() == EComponentCategory.HEADERFOOTER) {
IElementParameter headerIDParameter = process.getElementParameter(EParameterName.HEADERFOOTER_HEADERID.getName());
if (headerIDParameter != null) {
IRepositoryViewObject lastVersion = UpdateRepositoryUtils.getRepositoryObjectById((String) headerIDParameter.getValue());
HeaderFooterConnection repositoryConnection = null;
if (lastVersion != null) {
final Item item = lastVersion.getProperty().getItem();
if (item != null && item instanceof ConnectionItem) {
repositoryConnection = (HeaderFooterConnection) ((HeaderFooterConnectionItem) item).getConnection();
if (repositoryConnection != null) {
Boolean isHeader = repositoryConnection.isIsHeader();
String libraries = repositoryConnection.getLibraries();
String mainCode = repositoryConnection.getMainCode();
String imports = repositoryConnection.getImports();
process.getElementParameter(EParameterName.HEADER_ENABLED.getName()).setValue(isHeader);
process.getElementParameter(EParameterName.HEADER_LIBRARY.getName()).setValue(libraries);
process.getElementParameter(EParameterName.HEADER_CODE.getName()).setValue(mainCode);
process.getElementParameter(EParameterName.HEADER_IMPORT.getName()).setValue(imports);
}
}
}
}
IElementParameter footerIDParameter = process.getElementParameter(EParameterName.HEADERFOOTER_FOOTERID.getName());
if (footerIDParameter != null) {
IRepositoryViewObject lastVersion = UpdateRepositoryUtils.getRepositoryObjectById((String) footerIDParameter.getValue());
HeaderFooterConnection repositoryConnection = null;
if (lastVersion != null) {
final Item item = lastVersion.getProperty().getItem();
if (item != null && item instanceof ConnectionItem) {
repositoryConnection = (HeaderFooterConnection) ((HeaderFooterConnectionItem) item).getConnection();
if (repositoryConnection != null) {
Boolean isHeader = repositoryConnection.isIsHeader();
String libraries = repositoryConnection.getLibraries();
String mainCode = repositoryConnection.getMainCode();
String imports = repositoryConnection.getImports();
process.getElementParameter(EParameterName.FOOTER_ENABLED.getName()).setValue(!isHeader);
process.getElementParameter(EParameterName.FOOTER_LIBRARY.getName()).setValue(libraries);
process.getElementParameter(EParameterName.FOOTER_CODE.getName()).setValue(mainCode);
process.getElementParameter(EParameterName.FOOTER_IMPORT.getName()).setValue(imports);
}
}
}
}
}
}
}
}
} else if (category != null) {
boolean repository = false;
if (result.getResultType() == EUpdateResult.UPDATE) {
// upgrade from repository
if (result.isChecked()) {
IElementParameter property = process.getElementParameterFromField(EParameterFieldType.PROPERTY_TYPE, category);
if (property != null) {
Map<String, IElementParameter> childParameters = property.getChildParameters();
if (childParameters != null) {
IElementParameter elementParameter = childParameters.get(EParameterName.PROPERTY_TYPE.getName());
// is repository
if (elementParameter != null && EmfComponent.REPOSITORY.equals(elementParameter.getValue())) {
for (IElementParameter param : process.getElementParameters()) {
if (param.getCategory() != category) {
continue;
}
String repositoryValue = param.getRepositoryValue();
if (param.isShow(process.getElementParameters()) && (repositoryValue != null) && (!param.getName().equals(EParameterName.PROPERTY_TYPE.getName()))) {
Object objectValue = RepositoryToComponentProperty.getValue((org.talend.core.model.metadata.builder.connection.Connection) result.getParameter(), repositoryValue, null);
if (objectValue != null) {
if (param.getFieldType().equals(EParameterFieldType.CLOSED_LIST) && repositoryValue.equals(UpdatesConstants.TYPE)) {
boolean found = false;
String[] items = param.getListRepositoryItems();
for (int i = 0; (i < items.length) && (!found); i++) {
if (objectValue.equals(items[i])) {
found = true;
process.setPropertyValue(param.getName(), param.getListItemsValue()[i]);
}
}
} else if (EParameterName.HADOOP_ADVANCED_PROPERTIES.getName().equals(param.getName()) || EParameterName.SPARK_ADVANCED_PROPERTIES.getName().equals(param.getName())) {
List<Map> list = (ArrayList) param.getValue();
for (Map map : list) {
if (map.get("BUILDIN") != null && map.get("BUILDIN").equals("TRUE")) {
if (objectValue instanceof List) {
((List) objectValue).add(map);
}
}
}
process.setPropertyValue(param.getName(), objectValue);
} else {
process.setPropertyValue(param.getName(), objectValue);
}
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
repository = true;
}
}
}
}
}
}
}
}
IElementParameter property = process.getElementParameterFromField(EParameterFieldType.PROPERTY_TYPE, category);
Map<String, IElementParameter> childParameters = null;
if (property != null) {
childParameters = property.getChildParameters();
}
if (!repository) {
if (childParameters != null) {
IElementParameter elementParameter = childParameters.get(EParameterName.PROPERTY_TYPE.getName());
elementParameter.setValue(EmfComponent.BUILTIN);
}
// built-in
IElementParameter dbTypeParam = null;
IElementParameter impliciteDbType = null;
for (IElementParameter param : process.getElementParameters()) {
if (param.getCategory() != category) {
continue;
}
String repositoryValue = param.getRepositoryValue();
if (param.isShow(process.getElementParameters()) && (repositoryValue != null)) {
// for mysql db verion
if (EParameterName.DB_TYPE.getName().equals(param.getName()) && "TYPE".equals(repositoryValue)) {
dbTypeParam = param;
}
if ("DB_TYPE_IMPLICIT_CONTEXT".equals(param.getName()) && "TYPE".equals(repositoryValue)) {
impliciteDbType = param;
}
if (EParameterName.DB_VERSION.getName().equals(repositoryValue) && dbTypeParam != null && dbTypeParam.getValue() != null) {
final int indexOfItem = dbTypeParam.getIndexOfItemFromList(dbTypeParam.getValue().toString());
String dbType = dbTypeParam.getListItemsDisplayCodeName()[indexOfItem];
setDBVersionForMysql(param, dbType);
} else if (EParameterName.DB_VERSION.getName().equals(repositoryValue) && impliciteDbType != null && impliciteDbType.getValue() != null) {
final int indexOfItem = impliciteDbType.getIndexOfItemFromList(impliciteDbType.getValue().toString());
String dbType = impliciteDbType.getListItemsDisplayCodeName()[indexOfItem];
setDBVersionForMysql(param, dbType);
}
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
} else {
if (childParameters != null) {
IElementParameter elementParameter = childParameters.get(EParameterName.REPOSITORY_PROPERTY_TYPE.getName());
ConnectionItem connItem = UpdateRepositoryUtils.getConnectionItemByItemId((String) elementParameter.getValue());
ConnectionContextHelper.addContextForProcessParameter(process, connItem, category, false);
}
}
}
}
// else { // for extension
}
}
Aggregations