// ============================================================================ // // 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.actions; import java.util.List; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jface.dialogs.IDialogConstants; import org.talend.core.model.repository.IRepositoryViewObject; import org.talend.mdm.repository.core.command.ICommand; import org.talend.mdm.repository.i18n.Messages; import org.talend.mdm.repository.model.mdmmetadata.MDMServerDef; import org.talend.mdm.repository.ui.dialogs.lock.LockedDirtyObjectDialog; import org.talend.mdm.repository.utils.RepositoryResourceUtil; import org.talend.mdm.workbench.serverexplorer.ui.dialogs.SelectServerDefDialog; import com.amalto.workbench.exadapter.ExAdapterManager; import com.amalto.workbench.service.MissingJarService; /** * DOC hbhong class global comment. Detailled comment */ public class DeployToAction extends AbstractDeployAction { IDeployActionExAdapter<DeployToAction> exAdapter; public DeployToAction() { super(Messages.DeployToAction_deployTo); initExAdapter(); } public DeployToAction(String label) { super(label); initExAdapter(); } private void initExAdapter() { exAdapter = ExAdapterManager.getAdapter(this, IDeployActionExAdapter.class); } @Override protected void doRun() { boolean checkMissingJar = MissingJarService.getInstance().checkMissingJar(true); if (!checkMissingJar) { return; } List<IRepositoryViewObject> viewObjs = getSelectedRepositoryViewObject(); if (exAdapter != null) { viewObjs = exAdapter.showDependencyConfigDialog(viewObjs); if (viewObjs == null) { return; } // TO add match rule object viewObjs = getSelectedRepositoryViewObject(viewObjs); filterMatchRuleObjs(viewObjs); } SelectServerDefDialog dialog = getSelectServerDefDialog(viewObjs); if (dialog.open() == IDialogConstants.OK_ID) { // save editors LockedDirtyObjectDialog lockDirtyDialog = new LockedDirtyObjectDialog(getShell(), Messages.AbstractDeployAction_promptToSaveEditors, viewObjs); if (lockDirtyDialog.needShowDialog() && lockDirtyDialog.open() == IDialogConstants.CANCEL_ID) { return; } lockDirtyDialog.saveDirtyObjects(); // deploy MDMServerDef serverDef = dialog.getSelectedServerDef(); IStatus status = deploy(serverDef, viewObjs, ICommand.CMD_MODIFY); if (status.getSeverity() != IStatus.CANCEL) { updateChangedStatus(status); if (status.isMultiStatus()) { showDeployStatus(status); } updateLastServer(status, new NullProgressMonitor()); } } } private SelectServerDefDialog getSelectServerDefDialog(List<IRepositoryViewObject> viewObjs) { SelectServerDefDialog dialog = new SelectServerDefDialog(getShell()); initializeSelection(viewObjs, dialog); return dialog; } /** * set the default selection in SelectServerDefDialog * * @param viewObjs current selected view objects * @param dialog */ private void initializeSelection(List<IRepositoryViewObject> viewObjs, SelectServerDefDialog dialog) { MDMServerDef defServer = null; for (IRepositoryViewObject viewObject : viewObjs) { MDMServerDef tmpServer = RepositoryResourceUtil.getLastServerDef(viewObject); if (defServer == null) { defServer = tmpServer; } else if (tmpServer != null && !RepositoryResourceUtil.isSameMDMServerDef(defServer, tmpServer)) { defServer = null; break; } } dialog.create(); dialog.setSelectServer(defServer); } }