// ============================================================================ // // 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.process; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.talend.core.model.repository.IRepositoryViewObject; import org.talend.mdm.repository.core.AbstractRepositoryAction; import org.talend.mdm.repository.core.IServerObjectRepositoryType; import org.talend.mdm.repository.core.service.ContainerCacheService; import org.talend.mdm.repository.i18n.Messages; import org.talend.mdm.repository.model.mdmmetadata.MDMServerDef; import org.talend.mdm.repository.plugin.RepositoryPlugin; import org.talend.mdm.repository.ui.editors.XObjectBrowser2; import org.talend.mdm.repository.ui.editors.XObjectBrowserInput2; import org.talend.mdm.repository.utils.EclipseResourceManager; import org.talend.mdm.workbench.serverexplorer.core.ServerDefService; import org.talend.mdm.workbench.serverexplorer.ui.actions.IEventMgrService; import org.talend.mdm.workbench.serverexplorer.ui.dialogs.SelectServerDefDialog; import com.amalto.workbench.models.TreeObject; import com.amalto.workbench.service.MissingJarService; public class MDMEventManagerAction extends AbstractRepositoryAction implements IEventMgrService { private static Log log = LogFactory.getLog(MDMEventManagerAction.class); private IWorkbenchPage page = null; private MDMServerDef mdmServerDef; private static final ImageDescriptor EM_IMG = EclipseResourceManager.getImageDescriptor(RepositoryPlugin.PLUGIN_ID, "/icons/sub_engine.png"); //$NON-NLS-1$ public MDMEventManagerAction() { super(Messages.EventManager_text); setImageDescriptor(EM_IMG); } @Override protected void doRun() { boolean checkMissingJar = MissingJarService.getInstance().checkMissingJar(true); if (!checkMissingJar) { return; } MDMServerDef serverDef = getServerDef(); if (serverDef != null) { try { ServerDefService.checkMDMConnection(serverDef); } catch (Exception e) { MessageDialog.openError(getShell(), Messages.MDMEventManagerAction_CheckConnection, Messages.MDMEventManagerAction_connectFailed); return; } IRepositoryViewObject eventViewObj = getEventMangerViewObject(); TreeObject treeObj = createModel(); XObjectBrowserInput2 input = new XObjectBrowserInput2(eventViewObj, treeObj, Messages.EventManager_text); input.setServerDef(serverDef); if (page == null) { this.page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); } try { this.page.openEditor(input, XObjectBrowser2.EDITOR_ID); } catch (PartInitException e) { log.error(e.getMessage(), e); } setServerDef(null); } } private MDMServerDef getServerDef() { if (mdmServerDef != null) { return mdmServerDef; } SelectServerDefDialog dlg = new SelectServerDefDialog(getShell()); dlg.create(); if (dlg.open() == IDialogConstants.OK_ID) { return dlg.getSelectedServerDef(); } return null; } private IRepositoryViewObject getEventMangerViewObject() { IRepositoryViewObject eventViewObj = null; List<Object> selectedObject = getSelectedObject(); if (selectedObject != null && selectedObject.size() > 0) { eventViewObj = (IRepositoryViewObject) selectedObject.get(0); } else { eventViewObj = ContainerCacheService.get(IServerObjectRepositoryType.TYPE_EVENTMANAGER, ""); //$NON-NLS-1$ } return eventViewObj; } private TreeObject createModel() { TreeObject treeObj = new TreeObject("treeObject", null, TreeObject.SUBSCRIPTION_ENGINE, null, null); //$NON-NLS-1$ return treeObj; } public void run(MDMServerDef serverDef) { setServerDef(serverDef); run(); } private void setServerDef(MDMServerDef serverDef) { this.mdmServerDef = serverDef; } @Override public String getGroupName() { return GROUP_COMMON; } }