use of org.talend.designer.core.model.utils.emf.talendfile.ContextType in project tdi-studio-se by Talend.
the class ProcessContextComposite method checkIsSameContextParameter.
/*
* check same ContextParameter or not.
*/
private boolean checkIsSameContextParameter() {
List<ContextItem> allContextItem = ContextUtils.getAllContextItem();
for (IContext context : process.getContextManager().getListContext()) {
for (IContextParameter param : context.getContextParameterList()) {
if (allContextItem != null) {
ContextItem contextItem = ContextUtils.getContextItemById(allContextItem, param.getSource());
ContextType contextType = ContextUtils.getContextTypeByName(contextItem, context.getName(), true);
ContextParameterType contextParameterType = ContextUtils.getContextParameterTypeByName(contextType, param.getName());
if (!ContextUtils.samePropertiesForContextParameter(param, contextParameterType)) {
return false;
}
// if don't open the job to run it(not use the "Detect and update all jobs"), will show
// UpdateDetectionDialog to update the context ,after updated the item, the contextComboViewer still
// set the old one , so need refresh.
IContext runJobViewContext = getSelectedContext();
if (runJobViewContext != null) {
for (IContextParameter tempContext : runJobViewContext.getContextParameterList()) {
if (tempContext.getName().equals(contextParameterType.getName()) && !ContextUtils.samePropertiesForContextParameter(tempContext, contextParameterType)) {
return false;
}
}
}
}
}
}
return true;
}
use of org.talend.designer.core.model.utils.emf.talendfile.ContextType in project tdi-studio-se by Talend.
the class AddContextCommentValueMigrationTask method execute.
@SuppressWarnings("unchecked")
@Override
public ExecutionResult execute(Item item) {
EList<ContextType> contexts = null;
if (item instanceof ProcessItem) {
// process, process_mr, process_storm, route, routelet.
ProcessItem processItem = (ProcessItem) item;
contexts = processItem.getProcess().getContext();
} else if (item instanceof JobletProcessItem) {
JobletProcessItem jobletItem = (JobletProcessItem) item;
contexts = jobletItem.getJobletProcess().getContext();
} else if (item instanceof ContextItem) {
ContextItem contextItem = (ContextItem) item;
contexts = contextItem.getContext();
}
// 2 kinds of situation should be excluded before doing migration to the old context:
// 1.has null, 2.all same comment values;
// 1 is from 6.1.0 release and 5.6.2 patched TPS-1109, all null comment value will set to "".
// for repository context in job, won't change anything because the repository context has been fixed
// the update action will execute when opening job.
boolean hasNull = false, isSame = true;
if (contexts != null && contexts.size() > 1) {
List<String> firstComments = new ArrayList<String>();
for (int x = 0; x < contexts.size(); x++) {
List<ContextParameterType> contextParams = contexts.get(x).getContextParameter();
for (int y = 0; y < contextParams.size(); y++) {
ContextParameterType param = contextParams.get(y);
boolean isBuiltin = param.getRepositoryContextId() == null;
String comment = param.getComment();
if (comment == null) {
if (isBuiltin) {
//$NON-NLS-1$
param.setComment("");
hasNull = true;
}
continue;
}
// comments to show in old item before 5.6.1 are always in the first group.
if (x == 0) {
if (!isBuiltin) {
//$NON-NLS-1$
firstComments.add("NOT_BUILTIN");
} else {
firstComments.add(comment);
}
continue;
}
if (isBuiltin && !comment.equals(firstComments.get(y))) {
isSame = false;
}
}
}
try {
if (hasNull) {
ProxyRepositoryFactory.getInstance().save(item, true);
return ExecutionResult.SUCCESS_NO_ALERT;
}
if (!isSame) {
for (int x = 1; x < contexts.size(); x++) {
List<ContextParameterType> contextParams = contexts.get(x).getContextParameter();
for (int y = 0; y < contextParams.size(); y++) {
ContextParameterType param = contextParams.get(y);
String comment = param.getComment();
if (param.getRepositoryContextId() == null && !firstComments.get(y).equals(comment)) {
if (!firstComments.get(y).equals("NOT_BUILTIN")) {
//$NON-NLS-1$
param.setComment(firstComments.get(y));
}
}
}
}
ProxyRepositoryFactory.getInstance().save(item, true);
return ExecutionResult.SUCCESS_NO_ALERT;
}
} catch (PersistenceException e) {
ExceptionHandler.process(e);
return ExecutionResult.FAILURE;
}
}
return ExecutionResult.NOTHING_TO_DO;
}
use of org.talend.designer.core.model.utils.emf.talendfile.ContextType in project tdi-studio-se by Talend.
the class RemoveDuplicatedContextGroupMigrationTask method execute.
@Override
public ExecutionResult execute(Item item) {
List<?> contexts = null;
if (item instanceof ProcessItem) {
// process, process_mr, process_storm, route, routelet.
ProcessItem processItem = (ProcessItem) item;
contexts = processItem.getProcess().getContext();
} else if (item instanceof JobletProcessItem) {
JobletProcessItem jobletItem = (JobletProcessItem) item;
contexts = jobletItem.getJobletProcess().getContext();
}
Set<String> nameSet = new HashSet<String>();
Iterator<?> iterator = contexts.listIterator();
int count = 0;
while (iterator.hasNext()) {
Object obj = iterator.next();
if (obj instanceof ContextType) {
ContextType context = (ContextType) obj;
if (nameSet.contains(context.getName())) {
iterator.remove();
count++;
} else {
nameSet.add(context.getName());
}
}
}
if (count > 0) {
try {
ProxyRepositoryFactory.getInstance().save(item, true);
return ExecutionResult.SUCCESS_NO_ALERT;
} catch (PersistenceException e) {
ExceptionHandler.process(e);
return ExecutionResult.FAILURE;
}
} else {
return ExecutionResult.NOTHING_TO_DO;
}
}
use of org.talend.designer.core.model.utils.emf.talendfile.ContextType in project tdi-studio-se by Talend.
the class ExportJobUtil method getJobContexts.
/**
*
* Gets the set of current job's context.
*
* @return a List of context names.
*
*/
public static List<String> getJobContexts(ProcessItem processItem) {
List<String> contextNameList = new ArrayList<String>();
for (Object o : ((ProcessTypeImpl) processItem.getProcess()).getContext()) {
if (o instanceof ContextType) {
ContextType context = (ContextType) o;
if (contextNameList.contains(context.getName())) {
continue;
}
contextNameList.add(context.getName());
}
}
return contextNameList;
}
use of org.talend.designer.core.model.utils.emf.talendfile.ContextType in project tdi-studio-se by Talend.
the class JobContextUtils method getContextParametersMapByGroup.
private static Map<String, String> getContextParametersMapByGroup(ProcessItem processItem, String contextGroup) {
ProcessType process = processItem.getProcess();
if (process != null && contextGroup != null) {
EList<?> context = process.getContext();
if (context != null) {
for (Object next : context) {
ContextType ct = (ContextType) next;
if (ct.getName().equals(contextGroup)) {
Map<String, String> contextParams = new HashMap<String, String>();
EList<ContextParameterType> params = ct.getContextParameter();
for (ContextParameterType param : params) {
contextParams.put(param.getName(), param.getRawValue());
}
return contextParams;
}
}
}
}
return Collections.emptyMap();
}
Aggregations