// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.mdm.repository.ui.wizards.process; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.ui.IWorkbenchPartSite; import org.talend.mdm.repository.core.impl.transformerV2.ITransformerV2NodeConsDef; import org.talend.mdm.repository.i18n.Messages; import org.talend.mdm.repository.model.mdmserverobject.MdmserverobjectFactory; import org.talend.mdm.repository.model.mdmserverobject.WSTransformerProcessStepE; import org.talend.mdm.repository.model.mdmserverobject.WSTransformerV2E; import org.talend.mdm.repository.utils.JobTemplateUtil; import com.amalto.workbench.utils.Util; /** * DOC hbhong class global comment. Detailled comment */ public class NewProcessWizard extends Wizard implements ITransformerV2NodeConsDef { // BEFORE public static final int BEFORE_TYPE = 100; // RUNNABLE public static final int RUNNABLE_TYPE = 101; private SelectProcessTypePage selectProcessTypePage; private InputProcessNamePage inputProcessNamePage; private final IWorkbenchPartSite site; private ConfigRedirectURLPage configRedirectURLPage; private ConfigReturnMessagePage configReturnMessagePage; private WSTransformerV2E transformer; // private Boolean toCreateJob; private String[] returnMessages; private String redirectUrl; private String processName; private boolean enableRedirect; private List<IMDMJobTemplate> jobTemplates; private int type;// use it to decide which type of process can be create,if 0,all type is permitted public WSTransformerV2E getNewProcess() { return this.transformer; } public NewProcessWizard(IWorkbenchPartSite site, int type) { this.site = site; this.type = type; setWindowTitle(Messages.NewProcessWizard_title); } @Override public void addPages() { selectProcessTypePage = new SelectProcessTypePage(type); inputProcessNamePage = new InputProcessNamePage(site, type); configRedirectURLPage = new ConfigRedirectURLPage(); configReturnMessagePage = new ConfigReturnMessagePage(); // add addPage(selectProcessTypePage); addPage(inputProcessNamePage); addPage(configRedirectURLPage); addPage(configReturnMessagePage); // add job template generate page jobTemplates = JobTemplateUtil.getJobTemplateGenPages(); for (IMDMJobTemplate jobPage : jobTemplates) { if (jobPage instanceof WizardPage) { addPage((WizardPage) jobPage); } } } @Override public boolean performFinish() { String processName = inputProcessNamePage.getProcessName(); int processType = inputProcessNamePage.getProcessType(); String processdesc = inputProcessNamePage.getProcessDesc(); transformer = MdmserverobjectFactory.eINSTANCE.createWSTransformerV2E(); transformer.setName(processName); if (processdesc == null || processdesc.length() == 0) { processdesc = Messages.bind(Messages.NewProcessWizard_TemplateProcess, processName); } transformer.setDescription(processdesc); List<WSTransformerProcessStepE> steps = new ArrayList<WSTransformerProcessStepE>(); createProcessStep(steps, processType); transformer.getProcessSteps().addAll(steps); saveParams(); return true; } public Boolean isCreateJob() { if (toCreateJob == null) { toCreateJob = new Boolean(false); if (jobTemplates != null && jobTemplates.size() > 0) { IMDMJobTemplate jobtemplate = jobTemplates.get(0); toCreateJob = jobtemplate.createJob(); } } return toCreateJob; } @Override public boolean canFinish() { IWizardPage currentPage = getContainer().getCurrentPage(); if (currentPage.isPageComplete() && currentPage.getNextPage() == null) { return true; } return false; } /** * DOC hbhong Comment method "createProcessStep". * * @param steps * @param processType */ private void createProcessStep(List<WSTransformerProcessStepE> steps, int processType) { String processName = inputProcessNamePage.getProcessName(); boolean createJob = isCreateJob(); switch (processType) { case TYPE_BEFOREDEL: case TYPE_BEFORESAVE: String[] messageParams = configReturnMessagePage.getMessageParams(); WSTransformerProcessStepE messageStep = ProcessStepFactory.createProcessStep(ProcessStepFactory.STEP_RETURN_MESSAGE, messageParams, processName, createJob); steps.add(messageStep); break; case TYPE_ENTITYACTION: WSTransformerProcessStepE updateStep = ProcessStepFactory.createProcessStep(ProcessStepFactory.STEP_UPDATE_REPORT, null, processName, createJob); WSTransformerProcessStepE escapeStep = ProcessStepFactory.createProcessStep(ProcessStepFactory.STEP_ESCAPE, null, processName, createJob); steps.add(updateStep); steps.add(escapeStep); String url = configRedirectURLPage.getUrl(); // job name can't contains #,$ etc processName = processName.replaceAll("#|\\$", ""); //$NON-NLS-1$ //$NON-NLS-2$ WSTransformerProcessStepE callJobStep = ProcessStepFactory.createProcessStep(ProcessStepFactory.STEP_REDIRECT, url, processName, createJob); steps.add(callJobStep); break; case TYPE_WELCOMEACTION: // job name can't contains #,$ etc processName = processName.replaceAll("#|\\$", ""); //$NON-NLS-1$ //$NON-NLS-2$ boolean isEnterprise = Util.IsEnterPrise(); url = configRedirectURLPage.getUrl(); if (isEnterprise && createJob) { if (url != null && url.length() > 0) { callJobStep = ProcessStepFactory.createCallJobStep(processName, ProcessStepFactory.VAR_OUTPUT_URL, ProcessStepFactory.VAR_DEFAULT); } else { callJobStep = ProcessStepFactory.createCallJobStep(processName, ProcessStepFactory.VAR_OUTPUT, ProcessStepFactory.VAR_DEFAULT); } } else { if (url != null && url.length() > 0) { callJobStep = ProcessStepFactory.createRedirectStep(url, ProcessStepFactory.VAR_OUTPUT_URL); } else { callJobStep = ProcessStepFactory.createRedirectStep(url, ProcessStepFactory.VAR_OUTPUT); } } steps.add(callJobStep); break; case TYPE_OTHER: if (createJob) { // job name can't contains #,$ etc processName = processName.replaceAll("#|\\$", ""); //$NON-NLS-1$ //$NON-NLS-2$ callJobStep = ProcessStepFactory .createProcessStep(ProcessStepFactory.STEP_REDIRECT, null, processName, createJob); steps.add(callJobStep); } break; case TYPE_SMARTVIEW: WSTransformerProcessStepE xsltStep = ProcessStepFactory.createSmartViewStep(); steps.add(xsltStep); break; default: break; } } private void saveParams() { type = inputProcessNamePage.getProcessType();// here used for create job returnMessages = configReturnMessagePage.getMessageParams(); enableRedirect = configRedirectURLPage.isEnableRedirect(); redirectUrl = configRedirectURLPage.getUrl(); processName = inputProcessNamePage.getProcessName(); } public int getType() { return this.type; } public String[] getReturnMessages() { return this.returnMessages; } public String getRedirectUrl() { return this.redirectUrl; } public String getProcessName() { return this.processName; } public boolean isEnableRedirect() { return this.enableRedirect; } public List<IMDMJobTemplate> getJobTemplates() { return this.jobTemplates; } }