/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2013 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.sap.SAPR3DatabaseMeta;
import org.pentaho.di.i18n.BaseMessages;
import org.pentaho.di.ui.core.PropsUI;
import org.pentaho.di.ui.core.database.wizard.CreateDatabaseWizard;
/**
*
* On page one we select the database connection SAP/R3 specific settings 1) The data tablespace 2) The index tablespace
*
* @author Jens Bleuel
* @since 22-mar-2006
*/
public class CreateDatabaseWizardPageSAPR3 extends WizardPage {
private static Class<?> PKG = CreateDatabaseWizard.class; // for i18n purposes, needed by Translator2!!
private Label wlHostname;
private Text wHostname;
private FormData fdlHostname, fdHostname;
// SAP
private Label wlSAPLanguage, wlSAPSystemNumber, wlSAPClient;
private Text wSAPLanguage, wSAPSystemNumber, wSAPClient;
private FormData fdlSAPLanguage, fdlSAPSystemNumber, fdlSAPClient;
private FormData fdSAPLanguage, fdSAPSystemNumber, fdSAPClient;
private PropsUI props;
private DatabaseMeta info;
public CreateDatabaseWizardPageSAPR3( String arg, PropsUI props, DatabaseMeta info ) {
super( arg );
this.props = props;
this.info = info;
setTitle( BaseMessages.getString( PKG, "CreateDatabaseWizardPageSAPR3.DialogTitle" ) );
setDescription( BaseMessages.getString( PKG, "CreateDatabaseWizardPageSAPR3.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, "CreateDatabaseWizardPageSAPR3.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 );
}
} );
wlSAPLanguage = new Label( composite, SWT.RIGHT );
wlSAPLanguage.setText( BaseMessages.getString( PKG, "CreateDatabaseWizardPageSAPR3.Language.Label" ) );
props.setLook( wlSAPLanguage );
fdlSAPLanguage = new FormData();
fdlSAPLanguage.top = new FormAttachment( wHostname, margin );
fdlSAPLanguage.left = new FormAttachment( 0, 0 );
fdlSAPLanguage.right = new FormAttachment( middle, 0 );
wlSAPLanguage.setLayoutData( fdlSAPLanguage );
wSAPLanguage = new Text( composite, SWT.SINGLE | SWT.BORDER );
props.setLook( wSAPLanguage );
fdSAPLanguage = new FormData();
fdSAPLanguage.top = new FormAttachment( wHostname, margin );
fdSAPLanguage.left = new FormAttachment( middle, margin );
fdSAPLanguage.right = new FormAttachment( 100, 0 );
wSAPLanguage.setLayoutData( fdSAPLanguage );
wSAPLanguage.addModifyListener( new ModifyListener() {
public void modifyText( ModifyEvent arg0 ) {
setPageComplete( false );
}
} );
wlSAPSystemNumber = new Label( composite, SWT.RIGHT );
wlSAPSystemNumber.setText( BaseMessages.getString( PKG, "CreateDatabaseWizardPageSAPR3.SystemNumber.Label" ) );
props.setLook( wlSAPSystemNumber );
fdlSAPSystemNumber = new FormData();
fdlSAPSystemNumber.top = new FormAttachment( wSAPLanguage, margin );
fdlSAPSystemNumber.left = new FormAttachment( 0, 0 );
fdlSAPSystemNumber.right = new FormAttachment( middle, 0 );
wlSAPSystemNumber.setLayoutData( fdlSAPSystemNumber );
wSAPSystemNumber = new Text( composite, SWT.SINGLE | SWT.BORDER );
props.setLook( wSAPSystemNumber );
fdSAPSystemNumber = new FormData();
fdSAPSystemNumber.top = new FormAttachment( wSAPLanguage, margin );
fdSAPSystemNumber.left = new FormAttachment( middle, margin );
fdSAPSystemNumber.right = new FormAttachment( 100, 0 );
wSAPSystemNumber.setLayoutData( fdSAPSystemNumber );
wSAPSystemNumber.addModifyListener( new ModifyListener() {
public void modifyText( ModifyEvent arg0 ) {
setPageComplete( false );
}
} );
wlSAPClient = new Label( composite, SWT.RIGHT );
wlSAPClient.setText( BaseMessages.getString( PKG, "CreateDatabaseWizardPageSAPR3.SAPClient.Label" ) );
props.setLook( wlSAPClient );
fdlSAPClient = new FormData();
fdlSAPClient.top = new FormAttachment( wSAPSystemNumber, margin );
fdlSAPClient.left = new FormAttachment( 0, 0 );
fdlSAPClient.right = new FormAttachment( middle, 0 );
wlSAPClient.setLayoutData( fdlSAPClient );
wSAPClient = new Text( composite, SWT.SINGLE | SWT.BORDER );
props.setLook( wSAPClient );
fdSAPClient = new FormData();
fdSAPClient.top = new FormAttachment( wSAPSystemNumber, margin );
fdSAPClient.left = new FormAttachment( middle, margin );
fdSAPClient.right = new FormAttachment( 100, 0 );
wSAPClient.setLayoutData( fdSAPClient );
wSAPClient.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( info.getHostname(), "" ) );
wSAPLanguage.setText( Const.NVL( info.getAttributes().getProperty(
SAPR3DatabaseMeta.ATTRIBUTE_SAP_LANGUAGE, "" ), "" ) );
wSAPSystemNumber.setText( Const.NVL( info.getAttributes().getProperty(
SAPR3DatabaseMeta.ATTRIBUTE_SAP_SYSTEM_NUMBER, "" ), "" ) );
wSAPClient.setText( Const.NVL(
info.getAttributes().getProperty( SAPR3DatabaseMeta.ATTRIBUTE_SAP_CLIENT, "" ), "" ) );
}
public boolean canFlipToNextPage() {
String server =
wHostname.getText() != null ? wHostname.getText().length() > 0 ? wHostname.getText() : null : null;
String language =
wSAPLanguage.getText() != null
? wSAPLanguage.getText().length() > 0 ? wSAPLanguage.getText() : null : null;
String systemNumber =
wSAPSystemNumber.getText() != null ? wSAPSystemNumber.getText().length() > 0
? wSAPSystemNumber.getText() : null : null;
String client =
wSAPClient.getText() != null ? wSAPClient.getText().length() > 0 ? wSAPClient.getText() : null : null;
if ( server == null || language == null || systemNumber == null || client == null ) {
setErrorMessage( BaseMessages.getString( PKG, "CreateDatabaseWizardPageSAPR3.ErrorMessage.InvalidInput" ) );
return false;
} else {
getDatabaseInfo();
setErrorMessage( null );
setMessage( BaseMessages.getString( PKG, "CreateDatabaseWizardPageSAPR3.Message.Next" ) );
return true;
}
}
public DatabaseMeta getDatabaseInfo() {
if ( wHostname.getText() != null && wHostname.getText().length() > 0 ) {
info.setHostname( wHostname.getText() );
}
if ( wSAPLanguage.getText() != null && wSAPLanguage.getText().length() > 0 ) {
info.getAttributes().put( SAPR3DatabaseMeta.ATTRIBUTE_SAP_LANGUAGE, wSAPLanguage.getText() );
}
if ( wSAPSystemNumber.getText() != null && wSAPSystemNumber.getText().length() > 0 ) {
info.getAttributes().put( SAPR3DatabaseMeta.ATTRIBUTE_SAP_SYSTEM_NUMBER, wSAPSystemNumber.getText() );
}
if ( wSAPClient.getText() != null && wSAPClient.getText().length() > 0 ) {
info.getAttributes().put( SAPR3DatabaseMeta.ATTRIBUTE_SAP_CLIENT, wSAPClient.getText() );
}
return info;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.wizard.WizardPage#getNextPage()
*/
public IWizardPage getNextPage() {
IWizard wiz = getWizard();
return wiz.getPage( "2" );
}
}