// ============================================================================
//
// Copyright (C) 2006-2012 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.designer.core.ui.editor.properties.controllers;
import java.beans.PropertyChangeEvent;
import java.util.List;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.gef.commands.Command;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.fieldassist.DecoratedField;
import org.eclipse.jface.fieldassist.FieldDecoration;
import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
import org.eclipse.jface.fieldassist.IControlCreator;
import org.eclipse.jface.fieldassist.TextControlCreator;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
import org.talend.commons.exception.PersistenceException;
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
import org.talend.commons.ui.runtime.image.EImage;
import org.talend.commons.ui.runtime.image.ImageProvider;
import org.talend.commons.ui.swt.dialogs.ErrorDialogWithDetailAreaAndContinueButton;
import org.talend.core.CorePlugin;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.database.EDatabaseTypeName;
import org.talend.core.database.conn.DatabaseConnStrUtil;
import org.talend.core.model.metadata.IMetadataConnection;
import org.talend.core.model.metadata.builder.ConvertionHelper;
import org.talend.core.model.metadata.builder.connection.DatabaseConnection;
import org.talend.core.model.metadata.builder.database.ExtractMetaDataFromDataBase;
import org.talend.core.model.metadata.builder.database.ExtractMetaDataUtils;
import org.talend.core.model.process.EParameterFieldType;
import org.talend.core.model.process.IContextManager;
import org.talend.core.model.process.IElementParameter;
import org.talend.core.model.process.INode;
import org.talend.core.model.properties.DatabaseConnectionItem;
import org.talend.core.model.properties.Item;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.utils.ContextParameterUtils;
import org.talend.core.model.utils.TalendTextUtils;
import org.talend.core.properties.tab.IDynamicProperty;
import org.talend.core.repository.ConnectionStatus;
import org.talend.core.sqlbuilder.util.ConnectionParameters;
import org.talend.core.ui.ISQLBuilderService;
import org.talend.core.ui.metadata.dialog.DbTableSelectorDialog;
import org.talend.core.ui.metadata.dialog.DbTableSelectorObject;
import org.talend.core.ui.metadata.dialog.DbTableSelectorObject.ObjectType;
import org.talend.designer.core.DesignerPlugin;
import org.talend.designer.core.i18n.Messages;
import org.talend.designer.core.model.components.EParameterName;
import org.talend.designer.core.ui.editor.cmd.PropertyChangeCommand;
import org.talend.designer.core.ui.editor.connections.TracesConnectionUtils;
import org.talend.designer.core.ui.editor.nodes.Node;
import org.talend.designer.core.ui.editor.properties.ConfigureConnParamDialog;
import org.talend.designer.core.ui.editor.properties.controllers.creator.SelectAllTextControlCreator;
import org.talend.repository.model.IProxyRepositoryFactory;
/**
* DOC yzhang class global comment. Detailled comment <br/>
*
* $Id: TextController.java 1 2006-12-12 下午01:53:53 +0000 (下午01:53:53) yzhang $
*
*/
public class DbTableController extends AbstractElementPropertySectionController {
private static Logger log = Logger.getLogger(DbTableController.class);
/**
* DOC yzhang TextController constructor comment.
*
* @param dtp
*/
public DbTableController(IDynamicProperty dp) {
super(dp);
}
SelectionListener openTablesListener = new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
if (part == null) {
createListTablesCommand((Button) e.getSource(), new EmptyContextManager());
} else {
createListTablesCommand((Button) e.getSource(), part.getProcess().getContextManager());
}
}
};
SelectionListener openSQLListener = new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
if (part == null) {
createOpenSQLCommand((Button) e.getSource(), new EmptyContextManager());
} else {
createOpenSQLCommand((Button) e.getSource(), part.getProcess().getContextManager());
}
}
};
/*
* (non-Javadoc)
*
* @see
* org.talend.designer.core.ui.editor.properties2.editors.AbstractElementPropertySectionController#createControl()
*/
@Override
public Control createControl(final Composite subComposite, final IElementParameter param, final int numInRow,
final int nbInRow, final int top, final Control lastControl) {
this.curParameter = param;
this.paramFieldType = param.getFieldType();
FormData data;
this.paramFieldType = param.getFieldType();
this.curParameter = param;
Control lastDbControl = null;
Button openListTable = null;
if (!"DATABASE:CDC".equals(param.getFilter())) { //$NON-NLS-1$
openListTable = addListTablesButton(subComposite, param, top, numInRow, nbInRow);
lastDbControl = openListTable;
}
Control openSqlBuilder = null;
if (!isContainSqlMemo() && !"DATABASE:CDC".equals(param.getFilter())) { //$NON-NLS-1$
openSqlBuilder = addOpenSqlBulderButton(subComposite, param, top, numInRow, nbInRow);
FormData data1 = new FormData();
data1.right = new FormAttachment(100, -ITabbedPropertyConstants.HSPACE);
data1.left = new FormAttachment(100, -(ITabbedPropertyConstants.HSPACE + STANDARD_BUTTON_WIDTH));
data1.top = new FormAttachment(0, top);
data1.height = STANDARD_HEIGHT - 2;
openSqlBuilder.setLayoutData(data1);
openSqlBuilder.setToolTipText(Messages.getString("DbTableController.openSQLBuilder")); //$NON-NLS-1$
lastDbControl = openSqlBuilder;
}
data = new FormData();
if (openSqlBuilder != null) {
data.right = new FormAttachment(openSqlBuilder, -5, SWT.LEFT);
data.left = new FormAttachment(openSqlBuilder, -(15 + STANDARD_BUTTON_WIDTH), SWT.LEFT);
} else {
data.right = new FormAttachment(((numInRow * MAX_PERCENT) / nbInRow), 0);
data.left = new FormAttachment(((numInRow * MAX_PERCENT) / nbInRow), -STANDARD_BUTTON_WIDTH);
}
data.top = new FormAttachment(0, top);
data.height = STANDARD_HEIGHT - 2;
if (openListTable != null) {
openListTable.setLayoutData(data);
openListTable.setData(PARAMETER_NAME, param.getName());
openListTable.setEnabled(!param.isReadOnly());
openListTable.addSelectionListener(openTablesListener);
openListTable.setToolTipText(Messages.getString("DbTableController.showTableList")); //$NON-NLS-1$
}
Text labelText;
final DecoratedField dField = new DecoratedField(subComposite, SWT.BORDER, new SelectAllTextControlCreator());
if (param.isRequired()) {
FieldDecoration decoration = FieldDecorationRegistry.getDefault().getFieldDecoration(
FieldDecorationRegistry.DEC_REQUIRED);
dField.addFieldDecoration(decoration, SWT.RIGHT | SWT.TOP, false);
}
if (param.isRepositoryValueUsed()) {
FieldDecoration decoration = FieldDecorationRegistry.getDefault().getFieldDecoration(
FieldDecorationRegistry.DEC_CONTENT_PROPOSAL);
decoration.setDescription(Messages.getString("TextController.decoration.description")); //$NON-NLS-1$
dField.addFieldDecoration(decoration, SWT.RIGHT | SWT.BOTTOM, false);
}
Control cLayout = dField.getLayoutControl();
labelText = (Text) dField.getControl();
labelText.setData(PARAMETER_NAME, param.getName());
editionControlHelper.register(param.getName(), labelText);
cLayout.setBackground(subComposite.getBackground());
labelText.setEditable(!param.isReadOnly());
if (elem instanceof Node) {
labelText.setToolTipText(VARIABLE_TOOLTIP + param.getVariableName());
}
addDragAndDropTarget(labelText);
CLabel labelLabel = getWidgetFactory().createCLabel(subComposite, param.getDisplayName());
data = new FormData();
if (lastControl != null) {
data.left = new FormAttachment(lastControl, 0);
} else {
data.left = new FormAttachment((((numInRow - 1) * MAX_PERCENT) / nbInRow), 0);
}
data.top = new FormAttachment(0, top);
labelLabel.setLayoutData(data);
if (numInRow != 1) {
labelLabel.setAlignment(SWT.RIGHT);
}
// *********************
data = new FormData();
int currentLabelWidth = STANDARD_LABEL_WIDTH;
GC gc = new GC(labelLabel);
Point labelSize = gc.stringExtent(param.getDisplayName());
gc.dispose();
if ((labelSize.x + ITabbedPropertyConstants.HSPACE) > currentLabelWidth) {
currentLabelWidth = labelSize.x + ITabbedPropertyConstants.HSPACE;
}
if (numInRow == 1) {
if (lastControl != null) {
data.left = new FormAttachment(lastControl, currentLabelWidth);
} else {
data.left = new FormAttachment(0, currentLabelWidth);
}
} else {
data.left = new FormAttachment(labelLabel, 0, SWT.RIGHT);
}
if (openListTable != null) {
data.right = new FormAttachment(openListTable, -5, SWT.LEFT);
} else {
data.right = new FormAttachment((numInRow * MAX_PERCENT) / nbInRow, 0);
lastDbControl = labelText;
}
data.top = new FormAttachment(0, top);
cLayout.setLayoutData(data);
// **********************
hashCurControls.put(param.getName(), labelText);
Point initialSize = dField.getLayoutControl().computeSize(SWT.DEFAULT, SWT.DEFAULT);
// curRowSize = initialSize.y + ITabbedPropertyConstants.VSPACE;
dynamicProperty.setCurRowSize(initialSize.y + ITabbedPropertyConstants.VSPACE);
return lastDbControl;
}
/**
* qzhang Comment method "createOpenSQLCommand".
*
* @param button
*/
protected void createOpenSQLCommand(Button button, IContextManager contextManager) {
final Button btn = button;
initConnectionParameters();
if (this.connParameters != null) {
if (isUseExistingConnection()) {
initConnectionParametersWithContext(connectionNode, contextManager.getDefaultContext());
} else {
initConnectionParametersWithContext(elem, contextManager.getDefaultContext());
}
DatabaseConnection connection = getExistConnection();
if (connection == null) {
ISQLBuilderService service = (ISQLBuilderService) GlobalServiceRegister.getDefault().getService(
ISQLBuilderService.class);
connection = service.createConnection(connParameters);
}
boolean isStatus = false;
if (connection != null) {
String contextId = connection.getContextId();
if (contextId == null || "".equals(contextId)) {//$NON-NLS-N$
IMetadataConnection metadataConnection = null;
metadataConnection = ConvertionHelper.convert(connection);
isStatus = checkConnection(metadataConnection);
} else {
isStatus = true;
}
}
if (isStatus) {
openSQLBuilderWithParamer(button);
}
} else {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
String pid = "org.talend.sqlbuilder"; //$NON-NLS-1$
String mainMsg = "Database connection is failed. "; //$NON-NLS-1$
ErrorDialogWithDetailAreaAndContinueButton dialog = new ErrorDialogWithDetailAreaAndContinueButton(composite
.getShell(), pid, mainMsg, connParameters.getConnectionComment());
if (dialog.getCodeOfButton() == Window.OK) {
openParamemerDialog(btn, part.getProcess().getContextManager());
}
}
});
}
}
/**
* DOC zli Comment method "getExistConnection".
*
* @return
*/
private DatabaseConnection getExistConnection() {
String implicitRepositoryId = getImplicitRepositoryId();
String statsLogPrositoryId = getStatsLogRepositoryId();
DatabaseConnection connection = null;
if (implicitRepositoryId != null || statsLogPrositoryId != null) {
if (implicitRepositoryId == null) {
implicitRepositoryId = statsLogPrositoryId;
}
IProxyRepositoryFactory proxyRepositoryFactory = DesignerPlugin.getDefault().getRepositoryService()
.getProxyRepositoryFactory();
try {
IRepositoryViewObject lastVersion = proxyRepositoryFactory.getLastVersion(implicitRepositoryId);
if (implicitRepositoryId.equals(lastVersion.getId())) {
Item item = lastVersion.getProperty().getItem();
if (item instanceof DatabaseConnectionItem) {
connection = (DatabaseConnection) ((DatabaseConnectionItem) item).getConnection();
}
}
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
}
return connection;
}
/**
* DOC yexiaowei Comment method "openSQLBuilderWithParamer".
*
* @param button
*/
private void openSQLBuilderWithParamer(Button button) {
String repositoryType = null;
if (this.curParameter != null) {
IElementParameter propertyTypeParam = elem.getElementParameterFromField(EParameterFieldType.PROPERTY_TYPE,
this.curParameter.getCategory());
if (propertyTypeParam != null) {
propertyTypeParam = propertyTypeParam.getChildParameters().get(EParameterName.PROPERTY_TYPE.getName());
}
repositoryType = (String) propertyTypeParam.getValue();
}
String propertyName = (String) button.getData(PARAMETER_NAME);
if (repositoryType != null) {
openSQLBuilder(repositoryType, propertyName, ""); //$NON-NLS-1$
}
}
/**
* qzhang Comment method "isContainSqlMemo".
*
* @return
*/
private boolean isContainSqlMemo() {
IElementParameter elementParameterFromField = elem.getElementParameterFromField(EParameterFieldType.MEMO_SQL);
return elementParameterFromField != null;
}
/**
* qzhang Comment method "addOpenSqlBulderButton".
*
* @param subComposite
* @param param
* @param top
* @param numInRow
* @param nbInRow
* @return
*/
private Control addOpenSqlBulderButton(Composite subComposite, IElementParameter param, int top, int numInRow, int nbInRow) {
final DecoratedField dField1 = new DecoratedField(subComposite, SWT.PUSH, new IControlCreator() {
public Control createControl(Composite parent, int style) {
return new Button(parent, style);
}
});
Control buttonControl = dField1.getLayoutControl();
Button openSQLEditorButton = (Button) dField1.getControl();
openSQLEditorButton.computeSize(SWT.DEFAULT, SWT.DEFAULT);
openSQLEditorButton.setImage(ImageProvider.getImage(ImageProvider.getImageDesc(EImage.READ_ICON)));
buttonControl.setBackground(subComposite.getBackground());
openSQLEditorButton.setEnabled(!param.isReadOnly());
openSQLEditorButton.setData(NAME, SQLEDITOR);
openSQLEditorButton.setData(PARAMETER_NAME, param.getName());
if (param.getFieldType() == EParameterFieldType.DBTABLE) {
openSQLEditorButton.setEnabled(ExtractMetaDataUtils.haveLoadMetadataNode());
}
openSQLEditorButton.addSelectionListener(openSQLListener);
return buttonControl;
}
/**
* qzhang Comment method "addListTablesButton".
*
* @param subComposite
* @param param
* @param top
* @return
*/
private Button addListTablesButton(final Composite subComposite, final IElementParameter param, final int top, int numInRow,
final int nbInRow) {
Button openListTable = getWidgetFactory().createButton(subComposite, "", SWT.PUSH); //$NON-NLS-1$
openListTable.setImage(ImageProvider.getImage(CorePlugin.getImageDescriptor(DOTS_BUTTON)));
openListTable.setData(PARAMETER_NAME, param.getName());
return openListTable;
}
/**
* qzhang Comment method "createCommand".
*
* @param button
*
* @return
*/
protected void createListTablesCommand(Button button, IContextManager manager) {
initConnectionParameters();
if (this.connParameters != null) {
if (isUseExistingConnection()) {
initConnectionParametersWithContext(connectionNode, manager.getDefaultContext());
} else {
initConnectionParametersWithContext(elem, manager.getDefaultContext());
}
openDbTableSelectorJob(button);
} else {
MessageDialog
.openWarning(
button.getShell(),
Messages.getString("DbTableController.connectionError"), Messages.getString("DbTableController.setParameter")); //$NON-NLS-1$ //$NON-NLS-2$
}
}
/**
* qzhang Comment method "openDbTableSelectorJob".
*
* @param openListTable
*/
private void openDbTableSelectorJob(final Button openListTable) {
Job job = new Job(Messages.getString("DbTableController.openSelectionDialog")) { //$NON-NLS-1$
@Override
protected IStatus run(final IProgressMonitor monitor) {
monitor.beginTask(Messages.getString("DbTableController.waitingForOpen"), IProgressMonitor.UNKNOWN); //$NON-NLS-1$
DatabaseConnection existConnection = getExistConnection();
if (existConnection == null) {
if (connParameters == null) {
initConnectionParameters();
}
existConnection = TracesConnectionUtils.createConnection(connParameters);
}
final DatabaseConnection con = existConnection;
IMetadataConnection iMetadataConnection = null;
final IMetadataConnection[] iMetadata = new IMetadataConnection[1];
boolean isStatus = false;
if (existConnection != null) {
Display.getDefault().syncExec(new Runnable() {
public void run() {
IMetadataConnection convert = ConvertionHelper.convert(con);
iMetadata[0] = convert;
}
});
iMetadataConnection = iMetadata[0];
isStatus = checkConnection(iMetadataConnection);
}
final String dbType = iMetadataConnection.getDbType();
if (!monitor.isCanceled()) {
try {
if (isStatus) {
final List<String> returnTablesFormConnection = ExtractMetaDataFromDataBase
.returnTablesFormConnection(iMetadataConnection);
Display.getDefault().asyncExec(new Runnable() {
public void run() {
final DbTableSelectorObject object = new DbTableSelectorObject();
DbTableSelectorObject connO = new DbTableSelectorObject();
if (dbType != null && dbType.equals(EDatabaseTypeName.ORACLE_OCI.getDisplayName())) {
connO.setLabel(connParameters.getLocalServiceName());
} else if ("".equals(connParameters.getDbName())) { //$NON-NLS-1$
connO.setLabel(connParameters.getDatasource());
} else {
connO.setLabel(connParameters.getDbName());
}
// for general jdbc, there will always no db name and data source as the label, So
// ...
if (connO.getLabel() == null || connO.getLabel().equals("")) { //$NON-NLS-1$
if (elem instanceof INode) {
connO.setLabel(elem.getElementName());
} else {
connO.setLabel("tJDBCConnection");
}
}
connO.setType(ObjectType.DB);
if (monitor.isCanceled()) {
monitor.done();
return;
}
for (String string : returnTablesFormConnection) {
DbTableSelectorObject tableO = new DbTableSelectorObject();
tableO.setLabel(string);
tableO.setType(ObjectType.TABLE);
connO.addChildren(tableO);
}
object.addChildren(connO);
String propertyName = (String) openListTable.getData(PARAMETER_NAME);
DbTableSelectorDialog selectorDialog = new DbTableSelectorDialog(composite.getShell(), object);
if (selectorDialog.open() == DbTableSelectorDialog.OK) {
String name = selectorDialog.getSelectName();
if (name != null) {
Command dbSelectorCommand = new PropertyChangeCommand(elem, propertyName,
TalendTextUtils.addQuotes(name));
executeCommand(dbSelectorCommand);
Text labelText = (Text) hashCurControls.get(propertyName);
labelText.setText(TalendTextUtils.addQuotes(name));
}
}
}
});
} else {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
String pid = "org.talend.sqlbuilder"; //$NON-NLS-1$
String mainMsg = "Database connection is failed. "; //$NON-NLS-1$
ErrorDialogWithDetailAreaAndContinueButton dialog = new ErrorDialogWithDetailAreaAndContinueButton(
composite.getShell(), pid, mainMsg, connParameters.getConnectionComment());
if (dialog.getCodeOfButton() == Window.OK) {
openParamemerDialog(openListTable, part.getProcess().getContextManager());
}
}
});
}
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
monitor.done();
return Status.OK_STATUS;
}
};
if (part != null) {
IWorkbenchSiteProgressService siteps = (IWorkbenchSiteProgressService) part.getSite().getAdapter(
IWorkbenchSiteProgressService.class);
siteps.showInDialog(composite.getShell(), job);
} else {
PlatformUI.getWorkbench().getProgressService().showInDialog(composite.getShell(), job);
}
job.setUser(true);
job.schedule();
}
private void openParamemerDialog(Button button, IContextManager manager) {
initConnectionParameters();
if (connParameters != null) {
ConfigureConnParamDialog paramDialog = new ConfigureConnParamDialog(button.getShell(), connParameters, manager, elem);
if (paramDialog.open() == Window.OK) {
openDbTableSelectorJob(button);
}
} else {
MessageDialog
.openWarning(
button.getShell(),
Messages.getString("DbTableController.connectionError"), Messages.getString("DbTableController.setParameter")); //$NON-NLS-1$ //$NON-NLS-2$
}
}
/**
* nma Comment method "checkConnection".
*
* @param metadataConnection, IContextManager
*/
protected boolean checkConnection(IMetadataConnection metadataConnection, IContextManager contextManager) {
try {
String DBType = ContextParameterUtils.parseScriptContextCode(metadataConnection.getDbType(), contextManager);
String userName = ContextParameterUtils.parseScriptContextCode(metadataConnection.getUsername(), contextManager);
String password = ContextParameterUtils.parseScriptContextCode(metadataConnection.getPassword(), contextManager);
String schema = ContextParameterUtils.parseScriptContextCode(metadataConnection.getSchema(), contextManager);
String driveClass = ContextParameterUtils.parseScriptContextCode(metadataConnection.getDriverClass(), contextManager);
String driverJarPath = ContextParameterUtils.parseScriptContextCode(metadataConnection.getDriverJarPath(),
contextManager);
String dbVersion = ContextParameterUtils.parseScriptContextCode(metadataConnection.getDbVersionString(),
contextManager);
String additionalParams = ContextParameterUtils.parseScriptContextCode(metadataConnection.getAdditionalParams(),
contextManager);
// specially used for URL
String server = ContextParameterUtils.parseScriptContextCode(metadataConnection.getServerName(), contextManager);
String port = ContextParameterUtils.parseScriptContextCode(metadataConnection.getPort(), contextManager);
String sidOrDatabase = ContextParameterUtils.parseScriptContextCode(metadataConnection.getDatabase(), contextManager);
String filePath = ContextParameterUtils.parseScriptContextCode(metadataConnection.getFileFieldName(), contextManager);
String datasource = ContextParameterUtils.parseScriptContextCode(metadataConnection.getDataSourceName(),
contextManager);
String dbRootPath = ContextParameterUtils.parseScriptContextCode(metadataConnection.getDbRootPath(), contextManager);
String additionParam = ContextParameterUtils.parseScriptContextCode(metadataConnection.getAdditionalParams(),
contextManager);
String newURL = DatabaseConnStrUtil.getURLString(DBType, dbVersion, server, userName, password, port, sidOrDatabase,
filePath.toLowerCase(), datasource, dbRootPath, additionParam);
ConnectionStatus testConnection = ExtractMetaDataFromDataBase.testConnection(DBType, newURL, userName, password,
schema, driveClass, driverJarPath, dbVersion, additionalParams);
ConnectionParameters connParameters2 = new ConnectionParameters();
if (connParameters == null) {
connParameters = connParameters2;
}
connParameters.setConnectionComment(testConnection.getMessageException());
if (EDatabaseTypeName.ACCESS.getDisplayName().equals(connParameters.getDbType())) {
return true;
}
return testConnection.getResult();
} catch (Exception e) {
log.error(Messages.getString("CommonWizard.exception") + "\n" + e.toString()); //$NON-NLS-1$ //$NON-NLS-2$
}
return false;
}
/**
* qzhang Comment method "checkConnection".
*
* @param metadataConnection
*/
protected boolean checkConnection(IMetadataConnection metadataConnection) {
try {
ConnectionStatus testConnection = ExtractMetaDataFromDataBase.testConnection(metadataConnection.getDbType(),
metadataConnection.getUrl(), metadataConnection.getUsername(), metadataConnection.getPassword(),
metadataConnection.getSchema(), metadataConnection.getDriverClass(), metadataConnection.getDriverJarPath(),
metadataConnection.getDbVersionString(), metadataConnection.getAdditionalParams());
connParameters.setConnectionComment(testConnection.getMessageException());
if (EDatabaseTypeName.ACCESS.getDisplayName().equals(connParameters.getDbType())) {
return true;
}
return testConnection.getResult();
} catch (Exception e) {
log.error(Messages.getString("CommonWizard.exception") + "\n" + e.toString()); //$NON-NLS-1$ //$NON-NLS-2$
}
return false;
}
/*
* (non-Javadoc)
*
* @see
* org.talend.designer.core.ui.editor.properties.controllers.AbstractElementPropertySectionController#estimateRowSize
* (org.eclipse.swt.widgets.Composite, org.talend.core.model.process.IElementParameter)
*/
@Override
public int estimateRowSize(Composite subComposite, IElementParameter param) {
DecoratedField dField = new DecoratedField(subComposite, SWT.BORDER, new TextControlCreator());
Point initialSize = dField.getLayoutControl().computeSize(SWT.DEFAULT, SWT.DEFAULT);
dField.getLayoutControl().dispose();
return initialSize.y + ITabbedPropertyConstants.VSPACE;
}
/*
* (non-Javadoc)
*
* @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
*/
public void propertyChange(PropertyChangeEvent evt) {
// TODO Auto-generated method stub
}
@Override
public void refresh(IElementParameter param, boolean checkErrorsWhenViewRefreshed) {
Text labelText = (Text) hashCurControls.get(param.getName());
if (labelText == null || labelText.isDisposed()) {
return;
}
Object value = param.getValue();
boolean valueChanged = false;
if (value == null) {
labelText.setText(""); //$NON-NLS-1$
} else {
if (!value.equals(labelText.getText())) {
labelText.setText((String) value);
valueChanged = true;
}
}
if (checkErrorsWhenViewRefreshed || valueChanged) {
checkErrorsForPropertiesOnly(labelText);
}
fixedCursorPosition(param, labelText, value, valueChanged);
}
}