/*! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-2017 by Pentaho : http://www.pentaho.com * ******************************************************************************* * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ package org.pentaho.di.ui.core.database.wizard; import org.eclipse.jface.wizard.IWizard; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.pentaho.di.core.Const; import org.pentaho.di.core.database.DatabaseMeta; import org.pentaho.di.core.database.InformixDatabaseMeta; import org.pentaho.di.core.database.OracleDatabaseMeta; import org.pentaho.di.i18n.BaseMessages; import org.pentaho.di.ui.core.PropsUI; /** * * On page one we select the database connection JDBC settings 1) The servername 2) The port 3) The database name * * @author Matt * @since 04-apr-2005 */ public class CreateDatabaseWizardPageJDBC extends WizardPage { private static final String DATA_SERVICES_PLUGIN_ID = "KettleThin"; private static final String DEFAULT_WEB_APPLICATION_NAME = "pentaho"; private static Class<?> PKG = CreateDatabaseWizard.class; // for i18n purposes, needed by Translator2!! private Label wlHostname; private Text wHostname; private FormData fdlHostname, fdHostname; private Label wlPort; private Text wPort; private FormData fdlPort, fdPort; private Label wlDBName; private Text wDBName; private FormData fdlDBName, fdDBName; private PropsUI props; private DatabaseMeta databaseMeta; private boolean defaultWebAppNameSet = false; public CreateDatabaseWizardPageJDBC( String arg, PropsUI props, DatabaseMeta info ) { super( arg ); this.props = props; this.databaseMeta = info; setTitle( BaseMessages.getString( PKG, "CreateDatabaseWizardPageJDBC.DialogTitle" ) ); setDescription( BaseMessages.getString( PKG, "CreateDatabaseWizardPageJDBC.DialogMessage" ) ); setPageComplete( false ); } public void createControl( Composite parent ) { int margin = Const.MARGIN; int middle = props.getMiddlePct(); // create the composite to hold the widgets Composite composite = new Composite( parent, SWT.NONE ); props.setLook( composite ); FormLayout compLayout = new FormLayout(); compLayout.marginHeight = Const.FORM_MARGIN; compLayout.marginWidth = Const.FORM_MARGIN; composite.setLayout( compLayout ); // HOSTNAME wlHostname = new Label( composite, SWT.RIGHT ); wlHostname.setText( BaseMessages.getString( PKG, "CreateDatabaseWizardPageJDBC.Hostname.Label" ) ); props.setLook( wlHostname ); fdlHostname = new FormData(); fdlHostname.top = new FormAttachment( 0, 0 ); fdlHostname.left = new FormAttachment( 0, 0 ); fdlHostname.right = new FormAttachment( middle, 0 ); wlHostname.setLayoutData( fdlHostname ); wHostname = new Text( composite, SWT.SINGLE | SWT.BORDER ); props.setLook( wHostname ); fdHostname = new FormData(); fdHostname.top = new FormAttachment( 0, 0 ); fdHostname.left = new FormAttachment( middle, margin ); fdHostname.right = new FormAttachment( 100, 0 ); wHostname.setLayoutData( fdHostname ); wHostname.addModifyListener( new ModifyListener() { public void modifyText( ModifyEvent arg0 ) { setPageComplete( false ); } } ); // PORT wlPort = new Label( composite, SWT.RIGHT ); wlPort.setText( BaseMessages.getString( PKG, "CreateDatabaseWizardPageJDBC.Port.Label" ) ); props.setLook( wlPort ); fdlPort = new FormData(); fdlPort.top = new FormAttachment( wHostname, margin ); fdlPort.left = new FormAttachment( 0, 0 ); fdlPort.right = new FormAttachment( middle, 0 ); wlPort.setLayoutData( fdlPort ); wPort = new Text( composite, SWT.SINGLE | SWT.BORDER ); props.setLook( wPort ); wPort.setText( databaseMeta.getDatabasePortNumberString() ); fdPort = new FormData(); fdPort.top = new FormAttachment( wHostname, margin ); fdPort.left = new FormAttachment( middle, margin ); fdPort.right = new FormAttachment( 100, 0 ); wPort.setLayoutData( fdPort ); wPort.addModifyListener( new ModifyListener() { public void modifyText( ModifyEvent arg0 ) { setPageComplete( false ); } } ); // DATABASE NAME wlDBName = new Label( composite, SWT.RIGHT ); props.setLook( wlDBName ); fdlDBName = new FormData(); fdlDBName.top = new FormAttachment( wPort, margin ); fdlDBName.left = new FormAttachment( 0, 0 ); fdlDBName.right = new FormAttachment( middle, 0 ); wlDBName.setLayoutData( fdlDBName ); wDBName = new Text( composite, SWT.SINGLE | SWT.BORDER ); props.setLook( wDBName ); fdDBName = new FormData(); fdDBName.top = new FormAttachment( wPort, margin ); fdDBName.left = new FormAttachment( middle, margin ); fdDBName.right = new FormAttachment( 100, 0 ); wDBName.setLayoutData( fdDBName ); wDBName.addModifyListener( new ModifyListener() { public void modifyText( ModifyEvent arg0 ) { setPageComplete( false ); } } ); // set the composite as the control for this page setControl( composite ); } public void setData() { wHostname.setText( Const.NVL( databaseMeta.getHostname(), "" ) ); wPort.setText( Const.NVL( databaseMeta.getDatabasePortNumberString(), "" ) ); if ( !defaultWebAppNameSet && isDataServiceConnection() ) { wDBName.setText( DEFAULT_WEB_APPLICATION_NAME ); defaultWebAppNameSet = true; } else { wDBName.setText( Const.NVL( databaseMeta.getDatabaseName(), "" ) ); } if ( isDataServiceConnection() ) { wlDBName.setText( BaseMessages.getString( PKG, "CreateDatabaseWizardPageJDBC.WebAppName.Label" ) ); } else { wlDBName.setText( BaseMessages.getString( PKG, "CreateDatabaseWizardPageJDBC.DBName.Label" ) ); } } public boolean canFlipToNextPage() { String server = wHostname.getText().length() > 0 ? wHostname.getText() : null; String port = wPort.getText().length() > 0 ? wPort.getText() : null; String dbname = wDBName.getText().length() > 0 ? wDBName.getText() : null; if ( ( server == null || port == null || dbname == null ) && !isDataServiceConnection() ) { setErrorMessage( BaseMessages.getString( PKG, "CreateDatabaseWizardPageJDBC.ErrorMessage.InvalidInput" ) ); return false; } if ( ( server == null || port == null ) && isDataServiceConnection() ) { setErrorMessage( BaseMessages.getString( PKG, "CreateDatabaseWizardPageJDBC.PDSHostPort.ErrorMessage" ) ); return false; } getDatabaseInfo(); setErrorMessage( null ); setMessage( BaseMessages.getString( PKG, "CreateDatabaseWizardPageJDBC.Message.Input" ) ); return true; } public DatabaseMeta getDatabaseInfo() { databaseMeta.setHostname( wHostname.getText() ); databaseMeta.setDBPort( wPort.getText() ); databaseMeta.setDBName( wDBName.getText() ); return databaseMeta; } /* * (non-Javadoc) * * @see org.eclipse.jface.wizard.WizardPage#getNextPage() */ public IWizardPage getNextPage() { IWizard wiz = getWizard(); IWizardPage nextPage; if ( databaseMeta.getDatabaseInterface() instanceof OracleDatabaseMeta ) { nextPage = wiz.getPage( "oracle" ); // Oracle } else if ( databaseMeta.getDatabaseInterface() instanceof InformixDatabaseMeta ) { nextPage = wiz.getPage( "ifx" ); // Informix } else { nextPage = wiz.getPage( "2" ); // page 2 } return nextPage; } private boolean isDataServiceConnection() { return DATA_SERVICES_PLUGIN_ID.equals( databaseMeta.getPluginId() ); } }