// ============================================================================ // // 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.dataprofiler.core.ui.editor.connection; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.PartInitException; import org.eclipse.ui.part.FileEditorInput; import org.talend.commons.exception.ExceptionHandler; import org.talend.core.database.conn.ConnParameterKeys; import org.talend.core.model.metadata.builder.connection.DatabaseConnection; import org.talend.core.model.properties.ConnectionItem; import org.talend.core.model.properties.DatabaseConnectionItem; import org.talend.core.model.repository.IRepositoryViewObject; import org.talend.dataprofiler.core.CorePlugin; import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl; import org.talend.dataprofiler.core.ui.editor.AbstractItemEditorInput; import org.talend.dataprofiler.core.ui.editor.CommonFormEditor; import org.talend.dataprofiler.core.ui.utils.WorkbenchUtils; import org.talend.dq.CWMPlugin; import org.talend.dq.helper.RepositoryNodeHelper; import org.talend.dq.nodes.ConnectionRepNode; import org.talend.dq.nodes.DBConnectionRepNode; import org.talend.repository.model.IRepositoryNode; import org.talend.resource.EResourceConstant; /** * DOC rli class global comment. Detailled comment */ public class ConnectionEditor extends CommonFormEditor { private static final String ID = "ConnectionEditor.masterPage";//$NON-NLS-1$ public ConnectionEditor() { } @Override protected void addPages() { masterPage = new ConnectionInfoPage(this, ID, DefaultMessagesImpl.getString("ConnectionEditor.connectionSettings")); //$NON-NLS-1$ try { addPage(masterPage); setPartName(masterPage.getIntactElemenetName()); } catch (PartInitException e) { ExceptionHandler.process(e); } } @Override public void dispose() { super.dispose(); refreshHadoopCluster(); } @Override public void setFocus() { super.setFocus(); refreshHadoopCluster(); } // if the node is a hive connection, need to check its related link in hadoop cluster: added TDQ-10600 private void refreshHadoopCluster() { // TDQ-10717: fix a ClassCastException: the editor input can be org.eclipse.ui.part.FileEditorInput type if (getEditorInput() instanceof AbstractItemEditorInput) { String hadoopClusterId = ((DatabaseConnection) ((AbstractItemEditorInput) getEditorInput()).getModel()) .getParameters().get(ConnParameterKeys.CONN_PARA_KEY_HADOOP_CLUSTER_ID); if (hadoopClusterId != null) { IRepositoryNode rootNode = RepositoryNodeHelper.getMetadataFolderNode(EResourceConstant.HADOOP_CLUSTER); if (rootNode != null) { CorePlugin.getDefault().refreshDQView(rootNode); } } } } @Override public void doSave(IProgressMonitor monitor) { if (masterPage.isDirty()) { masterPage.doSave(monitor); setPartName(masterPage.getIntactElemenetName()); // MOD qiongli 2012-11-29 avoid item is proxy(get item form IRepositoryViewObject). ConnectionRepNode connectionRepNode = ((ConnectionInfoPage) getMasterPage()).getCurrentRepNode(); if (connectionRepNode != null && connectionRepNode instanceof DBConnectionRepNode) { IRepositoryViewObject object = connectionRepNode.getObject(); if (object != null) { ConnectionItem item = (ConnectionItem) object.getProperty().getItem(); String name = ((DatabaseConnectionItem) item).getConnection().getName(); CWMPlugin.getDefault().updateConnetionAliasByName(item.getConnection(), masterPage.getOldDataproviderName()); masterPage.setOldDataproviderName(name); } } // refresh the analysis editor if (masterPage.isNameTextUpdate()) { WorkbenchUtils.nodifyDependedAnalysis((ConnectionItem) connectionRepNode.getObject().getProperty().getItem()); // WorkbenchUtils.refreshCurrentAnalysisEditor(); masterPage.setModify(false); // TDQ-11312 if (this.getEditorInput() instanceof FileEditorInput) { this.setInput(masterPage.getEditorInput()); } } } setEditorObject(((ConnectionInfoPage) getMasterPage()).getCurrentRepNode()); super.doSave(monitor); } @Override protected void firePropertyChange(final int propertyId) { super.firePropertyChange(propertyId); } /* * (non-Javadoc) * * @see org.eclipse.ui.part.EditorPart#setInput(org.eclipse.ui.IEditorInput) */ @Override protected void setInput(IEditorInput input) { super.setInput(input); } @Override public List<String> getPreferredPerspectiveId() { return null; } @Override public void refreshEditor() { masterPage.initialize(this); ((ConnectionInfoPage) getMasterPage()).refreshTextInfo(); setPartName((masterPage.getIntactElemenetName())); firePropertyChange(org.eclipse.ui.IWorkbenchPart.PROP_TITLE); } }