// ============================================================================ // // 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.engines.client.ui.actions; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.navigator.CommonNavigator; import org.talend.commons.exception.PersistenceException; import org.talend.commons.ui.runtime.image.EImage; import org.talend.commons.ui.runtime.image.ImageProvider; import org.talend.core.CorePlugin; import org.talend.core.GlobalServiceRegister; import org.talend.core.context.Context; import org.talend.core.context.RepositoryContext; import org.talend.core.language.ECodeLanguage; import org.talend.core.model.properties.Item; import org.talend.core.model.properties.Property; import org.talend.core.model.properties.SpagoBiServer; import org.talend.core.model.repository.ERepositoryObjectType; import org.talend.core.model.repository.IRepositoryViewObject; import org.talend.core.runtime.CoreRuntimePlugin; import org.talend.mdm.engines.client.ui.wizards.DeployOnMDMExportWizard; import org.talend.mdm.repository.model.mdmmetadata.MDMServerDef; import org.talend.mdm.repository.model.mdmmetadata.MdmmetadataFactory; import org.talend.repository.model.IProxyRepositoryFactory; import org.talend.repository.model.IRepositoryNode; import org.talend.repository.model.IRepositoryNode.ENodeType; import org.talend.repository.model.IRepositoryNode.EProperties; import org.talend.repository.model.RepositoryNode; import org.talend.repository.ui.actions.AContextualAction; import com.amalto.workbench.i18n.Messages; import com.amalto.workbench.service.bridge.IRemoveCommandService; import com.amalto.workbench.utils.MDMServerHelper; /** * Action used to export job scripts. <br/> * * $Id: PublishOnSpagoAction.java 1 2007-04-26 11:25:00 cantoine * */ public final class DeployOnMDMAction extends AContextualAction { private static Logger log = Logger.getLogger(DeployOnMDMAction.class); private static final String EXPORTJOBSCRIPTS = Messages.DeployOnMDMAction_DeployToMDM; private static final String PROP_LAST_SERVER_DEF = "lastServerDef"; //$NON-NLS-1$ /* * (non-Javadoc) * * @see org.talend.repository.ui.actions.ITreeContextualAction#init(org.eclipse.jface.viewers.TreeViewer, * org.eclipse.jface.viewers.IStructuredSelection) */ public void init(TreeViewer viewer, IStructuredSelection selection) { boolean canWork = true; ECodeLanguage language = ((RepositoryContext) CorePlugin.getContext().getProperty(Context.REPOSITORY_CONTEXT_KEY)) .getProject().getLanguage(); if (selection.isEmpty() || language == ECodeLanguage.PERL) {// only Java project can see the action setEnabled(false); return; } if (MDMServerHelper.getServers().size() == 0) { setEnabled(false); return; } List<RepositoryNode> nodes = selection.toList(); for (RepositoryNode node : nodes) { if (node.getType() == ENodeType.REPOSITORY_ELEMENT && node.getProperties(EProperties.CONTENT_TYPE) == ERepositoryObjectType.PROCESS) { continue; } canWork = false; break; } setEnabled(canWork); } @Override public boolean isVisible() { // return isEnabled() && // Activator.getDefault().getPreferenceStore().getBoolean(MDMPreferenceInitializer.MDM_STATUS); return isEnabled(); } public DeployOnMDMAction() { super(); this.setText(EXPORTJOBSCRIPTS); this.setToolTipText(EXPORTJOBSCRIPTS); this.setImageDescriptor(ImageProvider.getImageDesc(EImage.EXPORT_ICON)); } @Override protected void doRun() { List<IRepositoryViewObject> viewObjs = getSelectedViewObject(); DeployOnMDMExportWizard publishWizard = new DeployOnMDMExportWizard(); publishWizard.setWindowTitle(EXPORTJOBSCRIPTS); publishWizard.init(getWorkbench(), (IStructuredSelection) this.getSelection()); Shell activeShell = Display.getCurrent().getActiveShell(); WizardDialog dialog = new WizardDialog(activeShell, publishWizard); dialog.open(); boolean deploySucceed = publishWizard.isDeploySucceed(); if (deploySucceed) { IRemoveCommandService service = (IRemoveCommandService) GlobalServiceRegister.getDefault().getService( IRemoveCommandService.class); SpagoBiServer spagoBiServer = publishWizard.getMdmServer(); MDMServerDef mdmServer = getMdmServer(spagoBiServer); IProxyRepositoryFactory factory = CoreRuntimePlugin.getInstance().getProxyRepositoryFactory(); try { for (IRepositoryViewObject viewObj : viewObjs) { Item item = viewObj.getProperty().getItem(); Property property = item.getProperty(); if (property != null) { boolean eDeliver = property.eDeliver(); property.eSetDeliver(false); property.getAdditionalProperties().put(PROP_LAST_SERVER_DEF, mdmServer.getName()); factory.save(item); property.eSetDeliver(eDeliver); } refreshMdmRepositoryViewTree(); service.removeDeployPhaseCommandOf(ERepositoryObjectType.PROCESS, item); } } catch (PersistenceException e) { log.error(e.getMessage(), e); } } } private List<IRepositoryViewObject> getSelectedViewObject() { IStructuredSelection sel = (IStructuredSelection) getSelection(); List<IRepositoryViewObject> viewObjs = new ArrayList<IRepositoryViewObject>(); for (Object obj : sel.toList()) { if (obj instanceof IRepositoryNode) { IRepositoryNode node = (IRepositoryNode) obj; viewObjs.add(node.getObject()); } } return viewObjs; } private MDMServerDef getMdmServer(SpagoBiServer spagoBiServer) { MDMServerDef mdmServerDef = MdmmetadataFactory.eINSTANCE.createMDMServerDef(); mdmServerDef.setName(spagoBiServer.getShortDescription()); mdmServerDef.setHost(spagoBiServer.getHost()); mdmServerDef.setPort(spagoBiServer.getPort()); mdmServerDef.setUser(spagoBiServer.getLogin()); mdmServerDef.setPasswd(spagoBiServer.getPassword()); return mdmServerDef; } /** * If the MDM Repository View is showing,refresh the navigator tree in it. */ private void refreshMdmRepositoryViewTree() { IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IViewPart mdmRepositoryView = activePage.findView("org.talend.mdm.repository.ui.navigator.MDMRepositoryView");//$NON-NLS-1$ if(mdmRepositoryView instanceof CommonNavigator) { CommonNavigator cNavigator = (CommonNavigator) mdmRepositoryView; cNavigator.getCommonViewer().refresh(); } } }