// CHECKSTYLE:FileLength:OFF
/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2016 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.trans.dialog;
import java.util.ArrayList;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.ShellAdapter;
import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.pentaho.di.core.Const;
import org.pentaho.di.core.util.Utils;
import org.pentaho.di.core.Props;
import org.pentaho.di.core.database.Database;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.logging.ChannelLogTable;
import org.pentaho.di.core.logging.LogStatus;
import org.pentaho.di.core.logging.LogTableField;
import org.pentaho.di.core.logging.LogTableInterface;
import org.pentaho.di.core.logging.MetricsLogTable;
import org.pentaho.di.core.logging.PerformanceLogTable;
import org.pentaho.di.core.logging.StepLogTable;
import org.pentaho.di.core.logging.TransLogTable;
import org.pentaho.di.core.parameters.DuplicateParamException;
import org.pentaho.di.core.parameters.UnknownParamException;
import org.pentaho.di.core.plugins.PluginInterface;
import org.pentaho.di.core.plugins.PluginRegistry;
import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.i18n.BaseMessages;
import org.pentaho.di.repository.KettleRepositoryLostException;
import org.pentaho.di.repository.ObjectId;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.repository.RepositoryDirectoryInterface;
import org.pentaho.di.trans.TransDependency;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.TransMeta.TransformationType;
import org.pentaho.di.trans.step.StepMeta;
import org.pentaho.di.trans.step.StepMetaInterface;
import org.pentaho.di.trans.steps.databaselookup.DatabaseLookupMeta;
import org.pentaho.di.trans.steps.tableinput.TableInputMeta;
import org.pentaho.di.ui.core.PropsUI;
import org.pentaho.di.ui.core.database.dialog.DatabaseDialog;
import org.pentaho.di.ui.core.database.dialog.SQLEditor;
import org.pentaho.di.ui.core.dialog.ErrorDialog;
import org.pentaho.di.ui.core.gui.GUIResource;
import org.pentaho.di.ui.core.gui.WindowProperty;
import org.pentaho.di.ui.core.widget.ColumnInfo;
import org.pentaho.di.ui.core.widget.ComboVar;
import org.pentaho.di.ui.core.widget.FieldDisabledListener;
import org.pentaho.di.ui.core.widget.TableView;
import org.pentaho.di.ui.core.widget.TextVar;
import org.pentaho.di.ui.repository.RepositoryDirectoryUI;
import org.pentaho.di.ui.trans.step.BaseStepDialog;
public class TransDialog extends Dialog {
public static final int LOG_INDEX_TRANS = 0;
public static final int LOG_INDEX_STEP = 1;
public static final int LOG_INDEX_PERFORMANCE = 2;
public static final int LOG_INDEX_CHANNEL = 3;
public static final int LOG_INDEX_METRICS = 4;
private static Class<?> PKG = TransDialog.class; // for i18n purposes, needed by Translator2!!
public static enum Tabs {
TRANS_TAB, PARAM_TAB, LOG_TAB, DATE_TAB, DEP_TAB, MISC_TAB, MONITOR_TAB, EXTRA_TAB,
}
private CTabFolder wTabFolder;
private FormData fdTabFolder;
private CTabItem wTransTab, wParamTab, wLogTab, wDateTab, wDepTab, wMiscTab, wMonitorTab;
private Text wTransname;
private Text wTransFilename;
// Trans description
private Text wTransdescription;
private Label wlExtendeddescription;
private Text wExtendeddescription;
// Trans Status
private Label wlTransstatus;
private CCombo wTransstatus;
private FormData fdlTransstatus, fdTransstatus;
// Trans version
private Text wTransversion;
private FormData fdlExtendeddescription, fdExtendeddescription;
private Text wDirectory;
private Button wbDirectory;
private Text wCreateUser;
private Text wCreateDate;
private Text wModUser;
private Text wModDate;
private Button wbLogconnection;
private ComboVar wLogconnection;
private TextVar wLogSizeLimit;
private TextVar wLogTimeout;
private int previousLogTableIndex = -1;
private TableView wOptionFields;
private TextVar wLogTable;
private TextVar wLogSchema;
private TextVar wLogInterval;
private CCombo wMaxdateconnection;
private Text wMaxdatetable;
private Text wMaxdatefield;
private Text wMaxdateoffset;
private Text wMaxdatediff;
private TableView wFields;
private TableView wParamFields;
private Text wSizeRowset;
private Button wUniqueConnections;
private Button wOK, wGet, wSQL, wCancel;
private FormData fdGet;
private Listener lsOK, lsGet, lsSQL, lsCancel;
private TransMeta transMeta;
private Shell shell;
private SelectionAdapter lsDef;
private ModifyListener lsMod;
private Repository rep;
private PropsUI props;
private RepositoryDirectoryInterface newDirectory;
private int middle;
private int margin;
private String[] connectionNames;
private Button wShowFeedback;
private Text wFeedbackSize;
private TextVar wSharedObjectsFile;
private boolean sharedObjectsFileChanged;
private Button wManageThreads;
private boolean directoryChangeAllowed;
private Label wlDirectory;
private Button wEnableStepPerfMonitor;
private Text wStepPerfInterval;
private CCombo wTransformationType;
private Tabs currentTab = null;
protected boolean changed;
private List wLogTypeList;
private Composite wLogOptionsComposite;
private Composite wLogComp;
private TransLogTable transLogTable;
private PerformanceLogTable performanceLogTable;
private ChannelLogTable channelLogTable;
private StepLogTable stepLogTable;
private MetricsLogTable metricsLogTable;
private DatabaseDialog databaseDialog;
private SelectionAdapter lsModSel;
private TextVar wStepPerfMaxSize;
private ArrayList<TransDialogPluginInterface> extraTabs;
public TransDialog( Shell parent, int style, TransMeta transMeta, Repository rep, Tabs currentTab ) {
this( parent, style, transMeta, rep );
this.currentTab = currentTab;
}
public TransDialog( Shell parent, int style, TransMeta transMeta, Repository rep ) {
super( parent, style );
this.props = PropsUI.getInstance();
this.transMeta = transMeta;
this.rep = rep;
this.newDirectory = null;
directoryChangeAllowed = true;
changed = false;
// Create a copy of the trans log table object
//
transLogTable = (TransLogTable) transMeta.getTransLogTable().clone();
performanceLogTable = (PerformanceLogTable) transMeta.getPerformanceLogTable().clone();
channelLogTable = (ChannelLogTable) transMeta.getChannelLogTable().clone();
stepLogTable = (StepLogTable) transMeta.getStepLogTable().clone();
metricsLogTable = (MetricsLogTable) transMeta.getMetricsLogTable().clone();
}
public TransMeta open() {
Shell parent = getParent();
Display display = parent.getDisplay();
shell = new Shell( parent, SWT.DIALOG_TRIM | SWT.RESIZE | SWT.MAX | SWT.MIN );
props.setLook( shell );
shell.setImage( GUIResource.getInstance().getImageTransGraph() );
lsMod = new ModifyListener() {
public void modifyText( ModifyEvent e ) {
changed = true;
}
};
lsModSel = new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
changed = true;
}
};
FormLayout formLayout = new FormLayout();
formLayout.marginWidth = Const.FORM_MARGIN;
formLayout.marginHeight = Const.FORM_MARGIN;
shell.setLayout( formLayout );
shell.setText( BaseMessages.getString( PKG, "TransDialog.Shell.Title" ) );
middle = props.getMiddlePct();
margin = Const.MARGIN;
wTabFolder = new CTabFolder( shell, SWT.BORDER );
props.setLook( wTabFolder, Props.WIDGET_STYLE_TAB );
wTabFolder.setSimple( false );
addTransTab();
addParamTab();
addLogTab();
addDateTab();
addDepTab();
addMiscTab();
addMonitoringTab();
// See if there are any other tabs to be added...
extraTabs = new ArrayList<TransDialogPluginInterface>();
java.util.List<PluginInterface> transDialogPlugins =
PluginRegistry.getInstance().getPlugins( TransDialogPluginType.class );
for ( PluginInterface transDialogPlugin : transDialogPlugins ) {
try {
TransDialogPluginInterface extraTab =
(TransDialogPluginInterface) PluginRegistry.getInstance().loadClass( transDialogPlugin );
extraTab.addTab( transMeta, parent, wTabFolder );
extraTabs.add( extraTab );
} catch ( Exception e ) {
KettleRepositoryLostException krle = KettleRepositoryLostException.lookupStackStrace( e );
if ( krle != null ) {
throw krle;
}
new ErrorDialog( shell, "Error", "Error loading transformation dialog plugin with id "
+ transDialogPlugin.getIds()[0], e );
}
}
fdTabFolder = new FormData();
fdTabFolder.left = new FormAttachment( 0, 0 );
fdTabFolder.top = new FormAttachment( 0, 0 );
fdTabFolder.right = new FormAttachment( 100, 0 );
fdTabFolder.bottom = new FormAttachment( 100, -50 );
wTabFolder.setLayoutData( fdTabFolder );
// THE BUTTONS
wOK = new Button( shell, SWT.PUSH );
wOK.setText( BaseMessages.getString( PKG, "System.Button.OK" ) );
wSQL = new Button( shell, SWT.PUSH );
wSQL.setText( BaseMessages.getString( PKG, "System.Button.SQL" ) );
wCancel = new Button( shell, SWT.PUSH );
wCancel.setText( BaseMessages.getString( PKG, "System.Button.Cancel" ) );
BaseStepDialog.positionBottomButtons( shell, new Button[] { wOK, wSQL, wCancel }, Const.MARGIN, null );
// Add listeners
lsOK = new Listener() {
public void handleEvent( Event e ) {
ok();
}
};
lsGet = new Listener() {
public void handleEvent( Event e ) {
get();
}
};
lsSQL = new Listener() {
public void handleEvent( Event e ) {
sql();
}
};
lsCancel = new Listener() {
public void handleEvent( Event e ) {
cancel();
}
};
wOK.addListener( SWT.Selection, lsOK );
wGet.addListener( SWT.Selection, lsGet );
wSQL.addListener( SWT.Selection, lsSQL );
wCancel.addListener( SWT.Selection, lsCancel );
lsDef = new SelectionAdapter() {
public void widgetDefaultSelected( SelectionEvent e ) {
ok();
}
};
wTransname.addSelectionListener( lsDef );
wTransdescription.addSelectionListener( lsDef );
wTransversion.addSelectionListener( lsDef );
wMaxdatetable.addSelectionListener( lsDef );
wMaxdatefield.addSelectionListener( lsDef );
wMaxdateoffset.addSelectionListener( lsDef );
wMaxdatediff.addSelectionListener( lsDef );
wSizeRowset.addSelectionListener( lsDef );
wUniqueConnections.addSelectionListener( lsDef );
wFeedbackSize.addSelectionListener( lsDef );
wStepPerfInterval.addSelectionListener( lsDef );
// Detect X or ALT-F4 or something that kills this window...
shell.addShellListener( new ShellAdapter() {
public void shellClosed( ShellEvent e ) {
cancel();
}
} );
if ( currentTab != null ) {
setCurrentTab( currentTab );
} else {
wTabFolder.setSelection( 0 );
}
getData();
BaseStepDialog.setSize( shell );
changed = false;
sharedObjectsFileChanged = false;
shell.open();
while ( !shell.isDisposed() ) {
if ( !display.readAndDispatch() ) {
display.sleep();
}
}
return transMeta;
}
private DatabaseDialog getDatabaseDialog() {
if ( databaseDialog != null ) {
return databaseDialog;
}
databaseDialog = new DatabaseDialog( shell );
return databaseDialog;
}
private void addTransTab() {
// ////////////////////////
// START OF TRANS TAB///
// /
wTransTab = new CTabItem( wTabFolder, SWT.NONE );
wTransTab.setText( BaseMessages.getString( PKG, "TransDialog.TransTab.Label" ) );
Composite wTransComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wTransComp );
FormLayout transLayout = new FormLayout();
transLayout.marginWidth = Const.FORM_MARGIN;
transLayout.marginHeight = Const.FORM_MARGIN;
wTransComp.setLayout( transLayout );
// Transformation name:
Label wlTransname = new Label( wTransComp, SWT.RIGHT );
wlTransname.setText( BaseMessages.getString( PKG, "TransDialog.Transname.Label" ) );
props.setLook( wlTransname );
FormData fdlTransname = new FormData();
fdlTransname.left = new FormAttachment( 0, 0 );
fdlTransname.right = new FormAttachment( middle, -margin );
fdlTransname.top = new FormAttachment( 0, margin );
wlTransname.setLayoutData( fdlTransname );
wTransname = new Text( wTransComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wTransname );
wTransname.addModifyListener( lsMod );
FormData fdTransname = new FormData();
fdTransname.left = new FormAttachment( middle, 0 );
fdTransname.top = new FormAttachment( 0, margin );
fdTransname.right = new FormAttachment( 100, 0 );
wTransname.setLayoutData( fdTransname );
// Transformation name:
Label wlTransFilename = new Label( wTransComp, SWT.RIGHT );
wlTransFilename.setText( BaseMessages.getString( PKG, "TransDialog.TransFilename.Label" ) );
props.setLook( wlTransFilename );
FormData fdlTransFilename = new FormData();
fdlTransFilename.left = new FormAttachment( 0, 0 );
fdlTransFilename.right = new FormAttachment( middle, -margin );
fdlTransFilename.top = new FormAttachment( wTransname, margin );
wlTransFilename.setLayoutData( fdlTransFilename );
wTransFilename = new Text( wTransComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wTransFilename );
wTransFilename.addModifyListener( lsMod );
FormData fdTransFilename = new FormData();
fdTransFilename.left = new FormAttachment( middle, 0 );
fdTransFilename.top = new FormAttachment( wTransname, margin );
fdTransFilename.right = new FormAttachment( 100, 0 );
wTransFilename.setLayoutData( fdTransFilename );
wTransFilename.setEditable( false );
wTransFilename.setBackground( GUIResource.getInstance().getColorLightGray() );
// Transformation description:
Label wlTransdescription = new Label( wTransComp, SWT.RIGHT );
wlTransdescription.setText( BaseMessages.getString( PKG, "TransDialog.Transdescription.Label" ) );
props.setLook( wlTransdescription );
FormData fdlTransdescription = new FormData();
fdlTransdescription.left = new FormAttachment( 0, 0 );
fdlTransdescription.right = new FormAttachment( middle, -margin );
fdlTransdescription.top = new FormAttachment( wTransFilename, margin );
wlTransdescription.setLayoutData( fdlTransdescription );
wTransdescription = new Text( wTransComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wTransdescription );
wTransdescription.addModifyListener( lsMod );
FormData fdTransdescription = new FormData();
fdTransdescription.left = new FormAttachment( middle, 0 );
fdTransdescription.top = new FormAttachment( wTransFilename, margin );
fdTransdescription.right = new FormAttachment( 100, 0 );
wTransdescription.setLayoutData( fdTransdescription );
// Transformation Extended description
wlExtendeddescription = new Label( wTransComp, SWT.RIGHT );
wlExtendeddescription.setText( BaseMessages.getString( PKG, "TransDialog.Extendeddescription.Label" ) );
props.setLook( wlExtendeddescription );
fdlExtendeddescription = new FormData();
fdlExtendeddescription.left = new FormAttachment( 0, 0 );
fdlExtendeddescription.top = new FormAttachment( wTransdescription, margin );
fdlExtendeddescription.right = new FormAttachment( middle, -margin );
wlExtendeddescription.setLayoutData( fdlExtendeddescription );
wExtendeddescription = new Text( wTransComp, SWT.MULTI | SWT.LEFT | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL );
props.setLook( wExtendeddescription, Props.WIDGET_STYLE_FIXED );
wExtendeddescription.addModifyListener( lsMod );
fdExtendeddescription = new FormData();
fdExtendeddescription.left = new FormAttachment( middle, 0 );
fdExtendeddescription.top = new FormAttachment( wTransdescription, margin );
fdExtendeddescription.right = new FormAttachment( 100, 0 );
fdExtendeddescription.bottom = new FormAttachment( 50, -margin );
wExtendeddescription.setLayoutData( fdExtendeddescription );
// Trans Status
wlTransstatus = new Label( wTransComp, SWT.RIGHT );
wlTransstatus.setText( BaseMessages.getString( PKG, "TransDialog.Transstatus.Label" ) );
props.setLook( wlTransstatus );
fdlTransstatus = new FormData();
fdlTransstatus.left = new FormAttachment( 0, 0 );
fdlTransstatus.right = new FormAttachment( middle, 0 );
fdlTransstatus.top = new FormAttachment( wExtendeddescription, margin * 2 );
wlTransstatus.setLayoutData( fdlTransstatus );
wTransstatus = new CCombo( wTransComp, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER );
wTransstatus.add( BaseMessages.getString( PKG, "TransDialog.Draft_Transstatus.Label" ) );
wTransstatus.add( BaseMessages.getString( PKG, "TransDialog.Production_Transstatus.Label" ) );
wTransstatus.add( "" );
wTransstatus.select( -1 ); // +1: starts at -1
wTransstatus.addSelectionListener( lsModSel );
props.setLook( wTransstatus );
fdTransstatus = new FormData();
fdTransstatus.left = new FormAttachment( middle, 0 );
fdTransstatus.top = new FormAttachment( wExtendeddescription, margin * 2 );
fdTransstatus.right = new FormAttachment( 100, 0 );
wTransstatus.setLayoutData( fdTransstatus );
// Transformation Transversion:
Label wlTransversion = new Label( wTransComp, SWT.RIGHT );
wlTransversion.setText( BaseMessages.getString( PKG, "TransDialog.Transversion.Label" ) );
props.setLook( wlTransversion );
FormData fdlTransversion = new FormData();
fdlTransversion.left = new FormAttachment( 0, 0 );
fdlTransversion.right = new FormAttachment( middle, -margin );
fdlTransversion.top = new FormAttachment( wTransstatus, margin );
wlTransversion.setLayoutData( fdlTransversion );
wTransversion = new Text( wTransComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wTransversion );
wTransversion.addModifyListener( lsMod );
FormData fdTransversion = new FormData();
fdTransversion.left = new FormAttachment( middle, 0 );
fdTransversion.top = new FormAttachment( wTransstatus, margin );
fdTransversion.right = new FormAttachment( 100, 0 );
wTransversion.setLayoutData( fdTransversion );
// Directory:
wlDirectory = new Label( wTransComp, SWT.RIGHT );
wlDirectory.setText( BaseMessages.getString( PKG, "TransDialog.Directory.Label" ) );
props.setLook( wlDirectory );
FormData fdlDirectory = new FormData();
fdlDirectory.left = new FormAttachment( 0, 0 );
fdlDirectory.right = new FormAttachment( middle, -margin );
fdlDirectory.top = new FormAttachment( wTransversion, margin );
wlDirectory.setLayoutData( fdlDirectory );
wbDirectory = new Button( wTransComp, SWT.PUSH );
wbDirectory.setToolTipText( BaseMessages.getString( PKG, "TransDialog.selectTransFolder.Tooltip" ) );
wbDirectory.setImage( GUIResource.getInstance().getImageArrow() );
props.setLook( wbDirectory );
FormData fdbDirectory = new FormData();
fdbDirectory.right = new FormAttachment( 100, 0 );
fdbDirectory.top = new FormAttachment( wTransversion, 0 );
wbDirectory.setLayoutData( fdbDirectory );
wbDirectory.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent arg0 ) {
RepositoryDirectoryInterface directoryFrom = transMeta.getRepositoryDirectory();
RepositoryDirectoryInterface rd = RepositoryDirectoryUI.chooseDirectory( shell, rep, directoryFrom );
if ( rd == null ) {
return;
}
// We need to change this in the repository as well!!
// We do this when the user pressed OK
newDirectory = rd;
wDirectory.setText( rd.getPath() );
}
} );
wDirectory = new Text( wTransComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wDirectory );
wDirectory.setEditable( false );
wDirectory.setEnabled( false );
FormData fdDirectory = new FormData();
fdDirectory.left = new FormAttachment( middle, 0 );
fdDirectory.top = new FormAttachment( wTransversion, margin );
fdDirectory.right = new FormAttachment( wbDirectory, 0 );
wDirectory.setLayoutData( fdDirectory );
// Create User:
Label wlCreateUser = new Label( wTransComp, SWT.RIGHT );
wlCreateUser.setText( BaseMessages.getString( PKG, "TransDialog.CreateUser.Label" ) );
props.setLook( wlCreateUser );
FormData fdlCreateUser = new FormData();
fdlCreateUser.left = new FormAttachment( 0, 0 );
fdlCreateUser.right = new FormAttachment( middle, -margin );
fdlCreateUser.top = new FormAttachment( wDirectory, margin );
wlCreateUser.setLayoutData( fdlCreateUser );
wCreateUser = new Text( wTransComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wCreateUser );
wCreateUser.setEditable( false );
wCreateUser.addModifyListener( lsMod );
FormData fdCreateUser = new FormData();
fdCreateUser.left = new FormAttachment( middle, 0 );
fdCreateUser.top = new FormAttachment( wDirectory, margin );
fdCreateUser.right = new FormAttachment( 100, 0 );
wCreateUser.setLayoutData( fdCreateUser );
// Created Date:
Label wlCreateDate = new Label( wTransComp, SWT.RIGHT );
wlCreateDate.setText( BaseMessages.getString( PKG, "TransDialog.CreateDate.Label" ) );
props.setLook( wlCreateDate );
FormData fdlCreateDate = new FormData();
fdlCreateDate.left = new FormAttachment( 0, 0 );
fdlCreateDate.right = new FormAttachment( middle, -margin );
fdlCreateDate.top = new FormAttachment( wCreateUser, margin );
wlCreateDate.setLayoutData( fdlCreateDate );
wCreateDate = new Text( wTransComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wCreateDate );
wCreateDate.setEditable( false );
wCreateDate.addModifyListener( lsMod );
FormData fdCreateDate = new FormData();
fdCreateDate.left = new FormAttachment( middle, 0 );
fdCreateDate.top = new FormAttachment( wCreateUser, margin );
fdCreateDate.right = new FormAttachment( 100, 0 );
wCreateDate.setLayoutData( fdCreateDate );
// Modified User:
Label wlModUser = new Label( wTransComp, SWT.RIGHT );
wlModUser.setText( BaseMessages.getString( PKG, "TransDialog.LastModifiedUser.Label" ) );
props.setLook( wlModUser );
FormData fdlModUser = new FormData();
fdlModUser.left = new FormAttachment( 0, 0 );
fdlModUser.right = new FormAttachment( middle, -margin );
fdlModUser.top = new FormAttachment( wCreateDate, margin );
wlModUser.setLayoutData( fdlModUser );
wModUser = new Text( wTransComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wModUser );
wModUser.setEditable( false );
wModUser.addModifyListener( lsMod );
FormData fdModUser = new FormData();
fdModUser.left = new FormAttachment( middle, 0 );
fdModUser.top = new FormAttachment( wCreateDate, margin );
fdModUser.right = new FormAttachment( 100, 0 );
wModUser.setLayoutData( fdModUser );
// Modified Date:
Label wlModDate = new Label( wTransComp, SWT.RIGHT );
wlModDate.setText( BaseMessages.getString( PKG, "TransDialog.LastModifiedDate.Label" ) );
props.setLook( wlModDate );
FormData fdlModDate = new FormData();
fdlModDate.left = new FormAttachment( 0, 0 );
fdlModDate.right = new FormAttachment( middle, -margin );
fdlModDate.top = new FormAttachment( wModUser, margin );
wlModDate.setLayoutData( fdlModDate );
wModDate = new Text( wTransComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wModDate );
wModDate.setEditable( false );
wModDate.addModifyListener( lsMod );
FormData fdModDate = new FormData();
fdModDate.left = new FormAttachment( middle, 0 );
fdModDate.top = new FormAttachment( wModUser, margin );
fdModDate.right = new FormAttachment( 100, 0 );
wModDate.setLayoutData( fdModDate );
FormData fdTransComp = new FormData();
fdTransComp.left = new FormAttachment( 0, 0 );
fdTransComp.top = new FormAttachment( 0, 0 );
fdTransComp.right = new FormAttachment( 100, 0 );
fdTransComp.bottom = new FormAttachment( 100, 0 );
wTransComp.setLayoutData( fdTransComp );
wTransComp.layout();
wTransTab.setControl( wTransComp );
// ///////////////////////////////////////////////////////////
// / END OF TRANS TAB
// ///////////////////////////////////////////////////////////
}
private void addParamTab() {
// ////////////////////////
// START OF PARAM TAB
// /
wParamTab = new CTabItem( wTabFolder, SWT.NONE );
wParamTab.setText( BaseMessages.getString( PKG, "TransDialog.ParamTab.Label" ) );
FormLayout paramLayout = new FormLayout();
paramLayout.marginWidth = Const.MARGIN;
paramLayout.marginHeight = Const.MARGIN;
Composite wParamComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wParamComp );
wParamComp.setLayout( paramLayout );
Label wlFields = new Label( wParamComp, SWT.RIGHT );
wlFields.setText( BaseMessages.getString( PKG, "TransDialog.Parameters.Label" ) );
props.setLook( wlFields );
FormData fdlFields = new FormData();
fdlFields.left = new FormAttachment( 0, 0 );
fdlFields.top = new FormAttachment( 0, 0 );
wlFields.setLayoutData( fdlFields );
final int FieldsCols = 3;
final int FieldsRows = transMeta.listParameters().length;
ColumnInfo[] colinf = new ColumnInfo[FieldsCols];
colinf[0] =
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.ColumnInfo.Parameter.Label" ), ColumnInfo.COLUMN_TYPE_TEXT,
false );
colinf[1] =
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.ColumnInfo.Default.Label" ), ColumnInfo.COLUMN_TYPE_TEXT,
false );
colinf[2] =
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.ColumnInfo.Description.Label" ),
ColumnInfo.COLUMN_TYPE_TEXT, false );
wParamFields =
new TableView(
transMeta, wParamComp, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI, colinf, FieldsRows, lsMod, props );
FormData fdFields = new FormData();
fdFields.left = new FormAttachment( 0, 0 );
fdFields.top = new FormAttachment( wlFields, margin );
fdFields.right = new FormAttachment( 100, 0 );
fdFields.bottom = new FormAttachment( 100, 0 );
wParamFields.setLayoutData( fdFields );
FormData fdDepComp = new FormData();
fdDepComp.left = new FormAttachment( 0, 0 );
fdDepComp.top = new FormAttachment( 0, 0 );
fdDepComp.right = new FormAttachment( 100, 0 );
fdDepComp.bottom = new FormAttachment( 100, 0 );
wParamComp.setLayoutData( fdDepComp );
wParamComp.layout();
wParamTab.setControl( wParamComp );
// ///////////////////////////////////////////////////////////
// / END OF PARAM TAB
// ///////////////////////////////////////////////////////////
}
private void addLogTab() {
// ////////////////////////
// START OF LOG TAB///
// /
wLogTab = new CTabItem( wTabFolder, SWT.NONE );
wLogTab.setText( BaseMessages.getString( PKG, "TransDialog.LogTab.Label" ) );
FormLayout LogLayout = new FormLayout();
LogLayout.marginWidth = Const.MARGIN;
LogLayout.marginHeight = Const.MARGIN;
wLogComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wLogComp );
wLogComp.setLayout( LogLayout );
// Add a log type List on the left hand side...
//
wLogTypeList = new List( wLogComp, SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER );
props.setLook( wLogTypeList );
wLogTypeList.add( BaseMessages.getString( PKG, "TransDialog.LogTableType.Transformation" ) ); // Index 0
wLogTypeList.add( BaseMessages.getString( PKG, "TransDialog.LogTableType.Step" ) ); // Index 1
wLogTypeList.add( BaseMessages.getString( PKG, "TransDialog.LogTableType.Performance" ) ); // Index 2
wLogTypeList.add( BaseMessages.getString( PKG, "TransDialog.LogTableType.LoggingChannels" ) ); // Index 3
wLogTypeList.add( BaseMessages.getString( PKG, "TransDialog.LogTableType.Metrics" ) ); // Index 3
FormData fdLogTypeList = new FormData();
fdLogTypeList.left = new FormAttachment( 0, 0 );
fdLogTypeList.top = new FormAttachment( 0, 0 );
fdLogTypeList.right = new FormAttachment( middle / 2, 0 );
fdLogTypeList.bottom = new FormAttachment( 100, 0 );
wLogTypeList.setLayoutData( fdLogTypeList );
wLogTypeList.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent arg0 ) {
showLogTypeOptions( wLogTypeList.getSelectionIndex() );
}
} );
// On the right side we see a dynamic area : a composite...
//
wLogOptionsComposite = new Composite( wLogComp, SWT.BORDER );
FormLayout logOptionsLayout = new FormLayout();
logOptionsLayout.marginWidth = Const.MARGIN;
logOptionsLayout.marginHeight = Const.MARGIN;
wLogOptionsComposite.setLayout( logOptionsLayout );
props.setLook( wLogOptionsComposite );
FormData fdLogOptionsComposite = new FormData();
fdLogOptionsComposite.left = new FormAttachment( wLogTypeList, margin );
fdLogOptionsComposite.top = new FormAttachment( 0, 0 );
fdLogOptionsComposite.right = new FormAttachment( 100, 0 );
fdLogOptionsComposite.bottom = new FormAttachment( 100, 0 );
wLogOptionsComposite.setLayoutData( fdLogOptionsComposite );
FormData fdLogComp = new FormData();
fdLogComp.left = new FormAttachment( 0, 0 );
fdLogComp.top = new FormAttachment( 0, 0 );
fdLogComp.right = new FormAttachment( 100, 0 );
fdLogComp.bottom = new FormAttachment( 100, 0 );
wLogComp.setLayoutData( fdLogComp );
wLogComp.layout();
wLogTab.setControl( wLogComp );
// ///////////////////////////////////////////////////////////
// / END OF LOG TAB
// ///////////////////////////////////////////////////////////
}
private void showLogTypeOptions( int index ) {
if ( index != previousLogTableIndex ) {
// Remember the that was entered data...
//
switch ( previousLogTableIndex ) {
case LOG_INDEX_TRANS:
getTransLogTableOptions();
break;
case LOG_INDEX_PERFORMANCE:
getPerformanceLogTableOptions();
break;
case LOG_INDEX_CHANNEL:
getChannelLogTableOptions();
break;
case LOG_INDEX_STEP:
getStepLogTableOptions();
break;
case LOG_INDEX_METRICS:
getMetricsLogTableOptions();
break;
default:
break;
}
// clean the log options composite...
//
for ( Control control : wLogOptionsComposite.getChildren() ) {
control.dispose();
}
switch ( index ) {
case LOG_INDEX_TRANS:
showTransLogTableOptions();
break;
case LOG_INDEX_PERFORMANCE:
showPerformanceLogTableOptions();
break;
case LOG_INDEX_CHANNEL:
showChannelLogTableOptions();
break;
case LOG_INDEX_STEP:
showStepLogTableOptions();
break;
case LOG_INDEX_METRICS:
showMetricsLogTableOptions();
break;
default:
break;
}
}
}
private void getTransLogTableOptions() {
if ( previousLogTableIndex == LOG_INDEX_TRANS ) {
// The connection...
//
transLogTable.setConnectionName( wLogconnection.getText() );
transLogTable.setSchemaName( wLogSchema.getText() );
transLogTable.setTableName( wLogTable.getText() );
transLogTable.setLogInterval( wLogInterval.getText() );
transLogTable.setLogSizeLimit( wLogSizeLimit.getText() );
transLogTable.setTimeoutInDays( wLogTimeout.getText() );
for ( int i = 0; i < transLogTable.getFields().size(); i++ ) {
TableItem item = wOptionFields.table.getItem( i );
LogTableField field = transLogTable.getFields().get( i );
field.setEnabled( item.getChecked() );
field.setFieldName( item.getText( 1 ) );
if ( field.isSubjectAllowed() ) {
field.setSubject( transMeta.findStep( item.getText( 2 ) ) );
}
}
}
}
private Control addDBSchemaTableLogOptions( LogTableInterface logTable ) {
// Log table connection...
//
Label wlLogconnection = new Label( wLogOptionsComposite, SWT.RIGHT );
wlLogconnection.setText( BaseMessages.getString( PKG, "TransDialog.LogConnection.Label" ) );
props.setLook( wlLogconnection );
FormData fdlLogconnection = new FormData();
fdlLogconnection.left = new FormAttachment( 0, 0 );
fdlLogconnection.right = new FormAttachment( middle, -margin );
fdlLogconnection.top = new FormAttachment( 0, 0 );
wlLogconnection.setLayoutData( fdlLogconnection );
wbLogconnection = new Button( wLogOptionsComposite, SWT.PUSH );
wbLogconnection.setText( BaseMessages.getString( PKG, "TransDialog.LogconnectionButton.Label" ) );
wbLogconnection.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
DatabaseMeta databaseMeta = new DatabaseMeta();
databaseMeta.shareVariablesWith( transMeta );
getDatabaseDialog().setDatabaseMeta( databaseMeta );
if ( getDatabaseDialog().open() != null ) {
transMeta.addDatabase( getDatabaseDialog().getDatabaseMeta() );
wLogconnection.add( getDatabaseDialog().getDatabaseMeta().getName() );
wLogconnection.select( wLogconnection.getItemCount() - 1 );
}
}
} );
FormData fdbLogconnection = new FormData();
fdbLogconnection.right = new FormAttachment( 100, 0 );
fdbLogconnection.top = new FormAttachment( 0, 0 );
wbLogconnection.setLayoutData( fdbLogconnection );
wLogconnection = new ComboVar( transMeta, wLogOptionsComposite, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wLogconnection );
wLogconnection.addModifyListener( lsMod );
FormData fdLogconnection = new FormData();
fdLogconnection.left = new FormAttachment( middle, 0 );
fdLogconnection.top = new FormAttachment( 0, 0 );
fdLogconnection.right = new FormAttachment( wbLogconnection, -margin );
wLogconnection.setLayoutData( fdLogconnection );
wLogconnection.setItems( transMeta.getDatabaseNames() );
wLogconnection.setText( Const.NVL( logTable.getConnectionName(), "" ) );
wLogconnection.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogConnection.Tooltip", logTable
.getConnectionNameVariable() ) );
// Log schema ...
//
Label wlLogSchema = new Label( wLogOptionsComposite, SWT.RIGHT );
wlLogSchema.setText( BaseMessages.getString( PKG, "TransDialog.LogSchema.Label" ) );
props.setLook( wlLogSchema );
FormData fdlLogSchema = new FormData();
fdlLogSchema.left = new FormAttachment( 0, 0 );
fdlLogSchema.right = new FormAttachment( middle, -margin );
fdlLogSchema.top = new FormAttachment( wLogconnection, margin );
wlLogSchema.setLayoutData( fdlLogSchema );
wLogSchema = new TextVar( transMeta, wLogOptionsComposite, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wLogSchema );
wLogSchema.addModifyListener( lsMod );
FormData fdLogSchema = new FormData();
fdLogSchema.left = new FormAttachment( middle, 0 );
fdLogSchema.top = new FormAttachment( wLogconnection, margin );
fdLogSchema.right = new FormAttachment( 100, 0 );
wLogSchema.setLayoutData( fdLogSchema );
wLogSchema.setText( Const.NVL( logTable.getSchemaName(), "" ) );
wLogSchema.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogSchema.Tooltip", logTable
.getSchemaNameVariable() ) );
// Log table...
//
Label wlLogtable = new Label( wLogOptionsComposite, SWT.RIGHT );
wlLogtable.setText( BaseMessages.getString( PKG, "TransDialog.Logtable.Label" ) );
props.setLook( wlLogtable );
FormData fdlLogtable = new FormData();
fdlLogtable.left = new FormAttachment( 0, 0 );
fdlLogtable.right = new FormAttachment( middle, -margin );
fdlLogtable.top = new FormAttachment( wLogSchema, margin );
wlLogtable.setLayoutData( fdlLogtable );
wLogTable = new TextVar( transMeta, wLogOptionsComposite, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wLogTable );
wLogTable.addModifyListener( lsMod );
FormData fdLogtable = new FormData();
fdLogtable.left = new FormAttachment( middle, 0 );
fdLogtable.top = new FormAttachment( wLogSchema, margin );
fdLogtable.right = new FormAttachment( 100, 0 );
wLogTable.setLayoutData( fdLogtable );
wLogTable.setText( Const.NVL( logTable.getTableName(), "" ) );
wLogTable.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogTable.Tooltip", logTable
.getTableNameVariable() ) );
return wLogTable;
}
private void showTransLogTableOptions() {
previousLogTableIndex = LOG_INDEX_TRANS;
addDBSchemaTableLogOptions( transLogTable );
// Log interval...
//
Label wlLogInterval = new Label( wLogOptionsComposite, SWT.RIGHT );
wlLogInterval.setText( BaseMessages.getString( PKG, "TransDialog.LogInterval.Label" ) );
props.setLook( wlLogInterval );
FormData fdlLogInterval = new FormData();
fdlLogInterval.left = new FormAttachment( 0, 0 );
fdlLogInterval.right = new FormAttachment( middle, -margin );
fdlLogInterval.top = new FormAttachment( wLogTable, margin );
wlLogInterval.setLayoutData( fdlLogInterval );
wLogInterval = new TextVar( transMeta, wLogOptionsComposite, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wLogInterval );
wLogInterval.addModifyListener( lsMod );
FormData fdLogInterval = new FormData();
fdLogInterval.left = new FormAttachment( middle, 0 );
fdLogInterval.top = new FormAttachment( wLogTable, margin );
fdLogInterval.right = new FormAttachment( 100, 0 );
wLogInterval.setLayoutData( fdLogInterval );
wLogInterval.setText( Const.NVL( transLogTable.getLogInterval(), "" ) );
// The log timeout in days
//
Label wlLogTimeout = new Label( wLogOptionsComposite, SWT.RIGHT );
wlLogTimeout.setText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Label" ) );
wlLogTimeout.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Tooltip" ) );
props.setLook( wlLogTimeout );
FormData fdlLogTimeout = new FormData();
fdlLogTimeout.left = new FormAttachment( 0, 0 );
fdlLogTimeout.right = new FormAttachment( middle, -margin );
fdlLogTimeout.top = new FormAttachment( wLogInterval, margin );
wlLogTimeout.setLayoutData( fdlLogTimeout );
wLogTimeout = new TextVar( transMeta, wLogOptionsComposite, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wLogTimeout.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Tooltip" ) );
props.setLook( wLogTimeout );
wLogTimeout.addModifyListener( lsMod );
FormData fdLogTimeout = new FormData();
fdLogTimeout.left = new FormAttachment( middle, 0 );
fdLogTimeout.top = new FormAttachment( wLogInterval, margin );
fdLogTimeout.right = new FormAttachment( 100, 0 );
wLogTimeout.setLayoutData( fdLogTimeout );
wLogTimeout.setText( Const.NVL( transLogTable.getTimeoutInDays(), "" ) );
// The log size limit
//
Label wlLogSizeLimit = new Label( wLogOptionsComposite, SWT.RIGHT );
wlLogSizeLimit.setText( BaseMessages.getString( PKG, "TransDialog.LogSizeLimit.Label" ) );
wlLogSizeLimit.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogSizeLimit.Tooltip" ) );
props.setLook( wlLogSizeLimit );
FormData fdlLogSizeLimit = new FormData();
fdlLogSizeLimit.left = new FormAttachment( 0, 0 );
fdlLogSizeLimit.right = new FormAttachment( middle, -margin );
fdlLogSizeLimit.top = new FormAttachment( wLogTimeout, margin );
wlLogSizeLimit.setLayoutData( fdlLogSizeLimit );
wLogSizeLimit = new TextVar( transMeta, wLogOptionsComposite, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wLogSizeLimit.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogSizeLimit.Tooltip" ) );
props.setLook( wLogSizeLimit );
wLogSizeLimit.addModifyListener( lsMod );
FormData fdLogSizeLimit = new FormData();
fdLogSizeLimit.left = new FormAttachment( middle, 0 );
fdLogSizeLimit.top = new FormAttachment( wLogTimeout, margin );
fdLogSizeLimit.right = new FormAttachment( 100, 0 );
wLogSizeLimit.setLayoutData( fdLogSizeLimit );
wLogSizeLimit.setText( Const.NVL( transLogTable.getLogSizeLimit(), "" ) );
// Add the fields grid...
//
Label wlFields = new Label( wLogOptionsComposite, SWT.NONE );
wlFields.setText( BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Label" ) );
props.setLook( wlFields );
FormData fdlFields = new FormData();
fdlFields.left = new FormAttachment( 0, 0 );
fdlFields.top = new FormAttachment( wLogSizeLimit, margin * 2 );
wlFields.setLayoutData( fdlFields );
final java.util.List<LogTableField> fields = transLogTable.getFields();
final int nrRows = fields.size();
ColumnInfo[] colinf =
new ColumnInfo[] {
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.FieldName" ),
ColumnInfo.COLUMN_TYPE_TEXT, false ),
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.StepName" ),
ColumnInfo.COLUMN_TYPE_CCOMBO, transMeta.getStepNames() ),
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Description" ),
ColumnInfo.COLUMN_TYPE_TEXT, false, true ), };
FieldDisabledListener disabledListener = new FieldDisabledListener() {
public boolean isFieldDisabled( int rowNr ) {
if ( rowNr >= 0 && rowNr < fields.size() ) {
LogTableField field = fields.get( rowNr );
return !field.isSubjectAllowed();
} else {
return true;
}
}
};
colinf[1].setDisabledListener( disabledListener );
wOptionFields =
new TableView( transMeta, wLogOptionsComposite, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI | SWT.CHECK,
colinf, nrRows, true, lsMod, props );
wOptionFields.setSortable( false );
for ( int i = 0; i < fields.size(); i++ ) {
LogTableField field = fields.get( i );
TableItem item = wOptionFields.table.getItem( i );
item.setChecked( field.isEnabled() );
item
.setText( new String[] {
"", Const.NVL( field.getFieldName(), "" ),
field.getSubject() == null ? "" : field.getSubject().toString(),
Const.NVL( field.getDescription(), "" ) } );
// Exceptions!!!
//
if ( disabledListener.isFieldDisabled( i ) ) {
item.setBackground( 2, GUIResource.getInstance().getColorLightGray() );
}
}
wOptionFields.table.getColumn( 0 ).setText(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Enabled" ) );
FormData fdOptionFields = new FormData();
fdOptionFields.left = new FormAttachment( 0, 0 );
fdOptionFields.top = new FormAttachment( wlFields, margin );
fdOptionFields.right = new FormAttachment( 100, 0 );
fdOptionFields.bottom = new FormAttachment( 100, 0 );
wOptionFields.setLayoutData( fdOptionFields );
wOptionFields.optWidth( true );
wOptionFields.layout();
wLogOptionsComposite.layout( true, true );
wLogComp.layout( true, true );
}
private void getPerformanceLogTableOptions() {
if ( previousLogTableIndex == LOG_INDEX_PERFORMANCE ) {
// The connection...
//
performanceLogTable.setConnectionName( wLogconnection.getText() );
performanceLogTable.setSchemaName( wLogSchema.getText() );
performanceLogTable.setTableName( wLogTable.getText() );
performanceLogTable.setLogInterval( wLogInterval.getText() );
performanceLogTable.setTimeoutInDays( wLogTimeout.getText() );
for ( int i = 0; i < performanceLogTable.getFields().size(); i++ ) {
TableItem item = wOptionFields.table.getItem( i );
LogTableField field = performanceLogTable.getFields().get( i );
field.setEnabled( item.getChecked() );
field.setFieldName( item.getText( 1 ) );
}
}
}
private void showPerformanceLogTableOptions() {
previousLogTableIndex = LOG_INDEX_PERFORMANCE;
addDBSchemaTableLogOptions( performanceLogTable );
// Log interval...
//
Label wlLogInterval = new Label( wLogOptionsComposite, SWT.RIGHT );
wlLogInterval.setText( BaseMessages.getString( PKG, "TransDialog.LogInterval.Label" ) );
props.setLook( wlLogInterval );
FormData fdlLogInterval = new FormData();
fdlLogInterval.left = new FormAttachment( 0, 0 );
fdlLogInterval.right = new FormAttachment( middle, -margin );
fdlLogInterval.top = new FormAttachment( wLogTable, margin );
wlLogInterval.setLayoutData( fdlLogInterval );
wLogInterval = new TextVar( transMeta, wLogOptionsComposite, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wLogInterval );
wLogInterval.addModifyListener( lsMod );
FormData fdLogInterval = new FormData();
fdLogInterval.left = new FormAttachment( middle, 0 );
fdLogInterval.top = new FormAttachment( wLogTable, margin );
fdLogInterval.right = new FormAttachment( 100, 0 );
wLogInterval.setLayoutData( fdLogInterval );
wLogInterval.setText( Const.NVL( performanceLogTable.getLogInterval(), "" ) );
// The log timeout in days
//
Label wlLogTimeout = new Label( wLogOptionsComposite, SWT.RIGHT );
wlLogTimeout.setText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Label" ) );
wlLogTimeout.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Tooltip" ) );
props.setLook( wlLogTimeout );
FormData fdlLogTimeout = new FormData();
fdlLogTimeout.left = new FormAttachment( 0, 0 );
fdlLogTimeout.right = new FormAttachment( middle, -margin );
fdlLogTimeout.top = new FormAttachment( wLogInterval, margin );
wlLogTimeout.setLayoutData( fdlLogTimeout );
wLogTimeout = new TextVar( transMeta, wLogOptionsComposite, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wLogTimeout.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Tooltip" ) );
props.setLook( wLogTimeout );
wLogTimeout.addModifyListener( lsMod );
FormData fdLogTimeout = new FormData();
fdLogTimeout.left = new FormAttachment( middle, 0 );
fdLogTimeout.top = new FormAttachment( wLogInterval, margin );
fdLogTimeout.right = new FormAttachment( 100, 0 );
wLogTimeout.setLayoutData( fdLogTimeout );
wLogTimeout.setText( Const.NVL( performanceLogTable.getTimeoutInDays(), "" ) );
// Add the fields grid...
//
Label wlFields = new Label( wLogOptionsComposite, SWT.NONE );
wlFields.setText( BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Label" ) );
props.setLook( wlFields );
FormData fdlFields = new FormData();
fdlFields.left = new FormAttachment( 0, 0 );
fdlFields.top = new FormAttachment( wLogTimeout, margin * 2 );
wlFields.setLayoutData( fdlFields );
final java.util.List<LogTableField> fields = performanceLogTable.getFields();
final int nrRows = fields.size();
ColumnInfo[] colinf =
new ColumnInfo[] {
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.FieldName" ),
ColumnInfo.COLUMN_TYPE_TEXT, false ),
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Description" ),
ColumnInfo.COLUMN_TYPE_TEXT, false, true ), };
FieldDisabledListener disabledListener = new FieldDisabledListener() {
public boolean isFieldDisabled( int rowNr ) {
if ( rowNr >= 0 && rowNr < fields.size() ) {
LogTableField field = fields.get( rowNr );
return field.isSubjectAllowed();
} else {
return true;
}
}
};
colinf[1].setDisabledListener( disabledListener );
wOptionFields =
new TableView( transMeta, wLogOptionsComposite, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI | SWT.CHECK,
colinf, nrRows, true, lsMod, props );
wOptionFields.setSortable( false );
for ( int i = 0; i < fields.size(); i++ ) {
LogTableField field = fields.get( i );
TableItem item = wOptionFields.table.getItem( i );
item.setChecked( field.isEnabled() );
item.setText( new String[] {
"", Const.NVL( field.getFieldName(), "" ), Const.NVL( field.getDescription(), "" ) } );
}
wOptionFields.table.getColumn( 0 ).setText(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Enabled" ) );
FormData fdOptionFields = new FormData();
fdOptionFields.left = new FormAttachment( 0, 0 );
fdOptionFields.top = new FormAttachment( wlFields, margin );
fdOptionFields.right = new FormAttachment( 100, 0 );
fdOptionFields.bottom = new FormAttachment( 100, 0 );
wOptionFields.setLayoutData( fdOptionFields );
wOptionFields.optWidth( true );
wOptionFields.layout();
wLogOptionsComposite.layout( true, true );
wLogComp.layout( true, true );
}
private void getChannelLogTableOptions() {
if ( previousLogTableIndex == LOG_INDEX_CHANNEL ) {
// The connection...
//
channelLogTable.setConnectionName( wLogconnection.getText() );
channelLogTable.setSchemaName( wLogSchema.getText() );
channelLogTable.setTableName( wLogTable.getText() );
channelLogTable.setTimeoutInDays( wLogTimeout.getText() );
for ( int i = 0; i < channelLogTable.getFields().size(); i++ ) {
TableItem item = wOptionFields.table.getItem( i );
LogTableField field = channelLogTable.getFields().get( i );
field.setEnabled( item.getChecked() );
field.setFieldName( item.getText( 1 ) );
}
}
}
private void getMetricsLogTableOptions() {
if ( previousLogTableIndex == LOG_INDEX_METRICS ) {
// The connection...
//
metricsLogTable.setConnectionName( wLogconnection.getText() );
metricsLogTable.setSchemaName( wLogSchema.getText() );
metricsLogTable.setTableName( wLogTable.getText() );
metricsLogTable.setTimeoutInDays( wLogTimeout.getText() );
for ( int i = 0; i < metricsLogTable.getFields().size(); i++ ) {
TableItem item = wOptionFields.table.getItem( i );
LogTableField field = metricsLogTable.getFields().get( i );
field.setEnabled( item.getChecked() );
field.setFieldName( item.getText( 1 ) );
}
}
}
private void showChannelLogTableOptions() {
previousLogTableIndex = LOG_INDEX_CHANNEL;
addDBSchemaTableLogOptions( channelLogTable );
// The log timeout in days
//
Label wlLogTimeout = new Label( wLogOptionsComposite, SWT.RIGHT );
wlLogTimeout.setText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Label" ) );
wlLogTimeout.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Tooltip" ) );
props.setLook( wlLogTimeout );
FormData fdlLogTimeout = new FormData();
fdlLogTimeout.left = new FormAttachment( 0, 0 );
fdlLogTimeout.right = new FormAttachment( middle, -margin );
fdlLogTimeout.top = new FormAttachment( wLogTable, margin );
wlLogTimeout.setLayoutData( fdlLogTimeout );
wLogTimeout = new TextVar( transMeta, wLogOptionsComposite, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wLogTimeout.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Tooltip" ) );
props.setLook( wLogTimeout );
wLogTimeout.addModifyListener( lsMod );
FormData fdLogTimeout = new FormData();
fdLogTimeout.left = new FormAttachment( middle, 0 );
fdLogTimeout.top = new FormAttachment( wLogTable, margin );
fdLogTimeout.right = new FormAttachment( 100, 0 );
wLogTimeout.setLayoutData( fdLogTimeout );
wLogTimeout.setText( Const.NVL( channelLogTable.getTimeoutInDays(), "" ) );
// Add the fields grid...
//
Label wlFields = new Label( wLogOptionsComposite, SWT.NONE );
wlFields.setText( BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Label" ) );
props.setLook( wlFields );
FormData fdlFields = new FormData();
fdlFields.left = new FormAttachment( 0, 0 );
fdlFields.top = new FormAttachment( wLogTimeout, margin * 2 );
wlFields.setLayoutData( fdlFields );
final java.util.List<LogTableField> fields = channelLogTable.getFields();
final int nrRows = fields.size();
ColumnInfo[] colinf =
new ColumnInfo[] {
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.FieldName" ),
ColumnInfo.COLUMN_TYPE_TEXT, false ),
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Description" ),
ColumnInfo.COLUMN_TYPE_TEXT, false, true ), };
FieldDisabledListener disabledListener = new FieldDisabledListener() {
public boolean isFieldDisabled( int rowNr ) {
if ( rowNr >= 0 && rowNr < fields.size() ) {
LogTableField field = fields.get( rowNr );
return field.isSubjectAllowed();
} else {
return true;
}
}
};
colinf[1].setDisabledListener( disabledListener );
wOptionFields =
new TableView( transMeta, wLogOptionsComposite, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI | SWT.CHECK,
colinf, nrRows, true, lsMod, props );
wOptionFields.setSortable( false );
for ( int i = 0; i < fields.size(); i++ ) {
LogTableField field = fields.get( i );
TableItem item = wOptionFields.table.getItem( i );
item.setChecked( field.isEnabled() );
item.setText( new String[] {
"", Const.NVL( field.getFieldName(), "" ), Const.NVL( field.getDescription(), "" ) } );
}
wOptionFields.table.getColumn( 0 ).setText(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Enabled" ) );
FormData fdOptionFields = new FormData();
fdOptionFields.left = new FormAttachment( 0, 0 );
fdOptionFields.top = new FormAttachment( wlFields, margin );
fdOptionFields.right = new FormAttachment( 100, 0 );
fdOptionFields.bottom = new FormAttachment( 100, 0 );
wOptionFields.setLayoutData( fdOptionFields );
wOptionFields.optWidth( true );
wOptionFields.layout();
wLogOptionsComposite.layout( true, true );
wLogComp.layout( true, true );
}
private void showMetricsLogTableOptions() {
previousLogTableIndex = LOG_INDEX_METRICS;
addDBSchemaTableLogOptions( metricsLogTable );
// The log timeout in days
//
Label wlLogTimeout = new Label( wLogOptionsComposite, SWT.RIGHT );
wlLogTimeout.setText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Label" ) );
wlLogTimeout.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Tooltip" ) );
props.setLook( wlLogTimeout );
FormData fdlLogTimeout = new FormData();
fdlLogTimeout.left = new FormAttachment( 0, 0 );
fdlLogTimeout.right = new FormAttachment( middle, -margin );
fdlLogTimeout.top = new FormAttachment( wLogTable, margin );
wlLogTimeout.setLayoutData( fdlLogTimeout );
wLogTimeout = new TextVar( transMeta, wLogOptionsComposite, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wLogTimeout.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Tooltip" ) );
props.setLook( wLogTimeout );
wLogTimeout.addModifyListener( lsMod );
FormData fdLogTimeout = new FormData();
fdLogTimeout.left = new FormAttachment( middle, 0 );
fdLogTimeout.top = new FormAttachment( wLogTable, margin );
fdLogTimeout.right = new FormAttachment( 100, 0 );
wLogTimeout.setLayoutData( fdLogTimeout );
wLogTimeout.setText( Const.NVL( metricsLogTable.getTimeoutInDays(), "" ) );
// Add the fields grid...
//
Label wlFields = new Label( wLogOptionsComposite, SWT.NONE );
wlFields.setText( BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Label" ) );
props.setLook( wlFields );
FormData fdlFields = new FormData();
fdlFields.left = new FormAttachment( 0, 0 );
fdlFields.top = new FormAttachment( wLogTimeout, margin * 2 );
wlFields.setLayoutData( fdlFields );
final java.util.List<LogTableField> fields = metricsLogTable.getFields();
final int nrRows = fields.size();
ColumnInfo[] colinf =
new ColumnInfo[] {
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.FieldName" ),
ColumnInfo.COLUMN_TYPE_TEXT, false ),
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Description" ),
ColumnInfo.COLUMN_TYPE_TEXT, false, true ), };
FieldDisabledListener disabledListener = new FieldDisabledListener() {
public boolean isFieldDisabled( int rowNr ) {
if ( rowNr >= 0 && rowNr < fields.size() ) {
LogTableField field = fields.get( rowNr );
return field.isSubjectAllowed();
} else {
return true;
}
}
};
colinf[1].setDisabledListener( disabledListener );
wOptionFields =
new TableView( transMeta, wLogOptionsComposite, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI | SWT.CHECK,
colinf, nrRows, true, lsMod, props );
wOptionFields.setSortable( false );
for ( int i = 0; i < fields.size(); i++ ) {
LogTableField field = fields.get( i );
TableItem item = wOptionFields.table.getItem( i );
item.setChecked( field.isEnabled() );
item.setText( new String[] {
"", Const.NVL( field.getFieldName(), "" ), Const.NVL( field.getDescription(), "" ) } );
}
wOptionFields.table.getColumn( 0 ).setText(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Enabled" ) );
FormData fdOptionFields = new FormData();
fdOptionFields.left = new FormAttachment( 0, 0 );
fdOptionFields.top = new FormAttachment( wlFields, margin );
fdOptionFields.right = new FormAttachment( 100, 0 );
fdOptionFields.bottom = new FormAttachment( 100, 0 );
wOptionFields.setLayoutData( fdOptionFields );
wOptionFields.optWidth( true );
wOptionFields.layout();
wLogOptionsComposite.layout( true, true );
wLogComp.layout( true, true );
}
private void getStepLogTableOptions() {
if ( previousLogTableIndex == LOG_INDEX_STEP ) {
// The connection...
//
stepLogTable.setConnectionName( wLogconnection.getText() );
stepLogTable.setSchemaName( wLogSchema.getText() );
stepLogTable.setTableName( wLogTable.getText() );
stepLogTable.setTimeoutInDays( wLogTimeout.getText() );
for ( int i = 0; i < stepLogTable.getFields().size(); i++ ) {
TableItem item = wOptionFields.table.getItem( i );
LogTableField field = stepLogTable.getFields().get( i );
field.setEnabled( item.getChecked() );
field.setFieldName( item.getText( 1 ) );
}
}
}
private void showStepLogTableOptions() {
previousLogTableIndex = LOG_INDEX_STEP;
addDBSchemaTableLogOptions( stepLogTable );
// The log timeout in days
//
Label wlLogTimeout = new Label( wLogOptionsComposite, SWT.RIGHT );
wlLogTimeout.setText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Label" ) );
wlLogTimeout.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Tooltip" ) );
props.setLook( wlLogTimeout );
FormData fdlLogTimeout = new FormData();
fdlLogTimeout.left = new FormAttachment( 0, 0 );
fdlLogTimeout.right = new FormAttachment( middle, -margin );
fdlLogTimeout.top = new FormAttachment( wLogTable, margin );
wlLogTimeout.setLayoutData( fdlLogTimeout );
wLogTimeout = new TextVar( transMeta, wLogOptionsComposite, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wLogTimeout.setToolTipText( BaseMessages.getString( PKG, "TransDialog.LogTimeout.Tooltip" ) );
props.setLook( wLogTimeout );
wLogTimeout.addModifyListener( lsMod );
FormData fdLogTimeout = new FormData();
fdLogTimeout.left = new FormAttachment( middle, 0 );
fdLogTimeout.top = new FormAttachment( wLogTable, margin );
fdLogTimeout.right = new FormAttachment( 100, 0 );
wLogTimeout.setLayoutData( fdLogTimeout );
wLogTimeout.setText( Const.NVL( stepLogTable.getTimeoutInDays(), "" ) );
// Add the fields grid...
//
Label wlFields = new Label( wLogOptionsComposite, SWT.NONE );
wlFields.setText( BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Label" ) );
props.setLook( wlFields );
FormData fdlFields = new FormData();
fdlFields.left = new FormAttachment( 0, 0 );
fdlFields.top = new FormAttachment( wLogTimeout, margin * 2 );
wlFields.setLayoutData( fdlFields );
final java.util.List<LogTableField> fields = stepLogTable.getFields();
final int nrRows = fields.size();
ColumnInfo[] colinf =
new ColumnInfo[] {
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.FieldName" ),
ColumnInfo.COLUMN_TYPE_TEXT, false ),
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Description" ),
ColumnInfo.COLUMN_TYPE_TEXT, false, true ), };
FieldDisabledListener disabledListener = new FieldDisabledListener() {
public boolean isFieldDisabled( int rowNr ) {
if ( rowNr >= 0 && rowNr < fields.size() ) {
LogTableField field = fields.get( rowNr );
return field.isSubjectAllowed();
} else {
return true;
}
}
};
colinf[1].setDisabledListener( disabledListener );
wOptionFields =
new TableView( transMeta, wLogOptionsComposite, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI | SWT.CHECK,
colinf, nrRows, true, lsMod, props );
wOptionFields.setSortable( false );
for ( int i = 0; i < fields.size(); i++ ) {
LogTableField field = fields.get( i );
TableItem item = wOptionFields.table.getItem( i );
item.setChecked( field.isEnabled() );
item.setText( new String[] {
"", Const.NVL( field.getFieldName(), "" ), Const.NVL( field.getDescription(), "" ) } );
}
wOptionFields.table.getColumn( 0 ).setText(
BaseMessages.getString( PKG, "TransDialog.TransLogTable.Fields.Enabled" ) );
FormData fdOptionFields = new FormData();
fdOptionFields.left = new FormAttachment( 0, 0 );
fdOptionFields.top = new FormAttachment( wlFields, margin );
fdOptionFields.right = new FormAttachment( 100, 0 );
fdOptionFields.bottom = new FormAttachment( 100, 0 );
wOptionFields.setLayoutData( fdOptionFields );
wOptionFields.optWidth( true );
wOptionFields.layout();
wLogOptionsComposite.layout( true, true );
wLogComp.layout( true, true );
}
private void addDateTab() {
// ////////////////////////
// START OF DATE TAB///
// /
wDateTab = new CTabItem( wTabFolder, SWT.NONE );
wDateTab.setText( BaseMessages.getString( PKG, "TransDialog.DateTab.Label" ) );
FormLayout DateLayout = new FormLayout();
DateLayout.marginWidth = Const.MARGIN;
DateLayout.marginHeight = Const.MARGIN;
Composite wDateComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wDateComp );
wDateComp.setLayout( DateLayout );
// Max date table connection...
Label wlMaxdateconnection = new Label( wDateComp, SWT.RIGHT );
wlMaxdateconnection.setText( BaseMessages.getString( PKG, "TransDialog.MaxdateConnection.Label" ) );
props.setLook( wlMaxdateconnection );
FormData fdlMaxdateconnection = new FormData();
fdlMaxdateconnection.left = new FormAttachment( 0, 0 );
fdlMaxdateconnection.right = new FormAttachment( middle, -margin );
fdlMaxdateconnection.top = new FormAttachment( 0, 0 );
wlMaxdateconnection.setLayoutData( fdlMaxdateconnection );
wMaxdateconnection = new CCombo( wDateComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wMaxdateconnection );
wMaxdateconnection.addModifyListener( lsMod );
FormData fdMaxdateconnection = new FormData();
fdMaxdateconnection.left = new FormAttachment( middle, 0 );
fdMaxdateconnection.top = new FormAttachment( 0, 0 );
fdMaxdateconnection.right = new FormAttachment( 100, 0 );
wMaxdateconnection.setLayoutData( fdMaxdateconnection );
// Maxdate table...:
Label wlMaxdatetable = new Label( wDateComp, SWT.RIGHT );
wlMaxdatetable.setText( BaseMessages.getString( PKG, "TransDialog.MaxdateTable.Label" ) );
props.setLook( wlMaxdatetable );
FormData fdlMaxdatetable = new FormData();
fdlMaxdatetable.left = new FormAttachment( 0, 0 );
fdlMaxdatetable.right = new FormAttachment( middle, -margin );
fdlMaxdatetable.top = new FormAttachment( wMaxdateconnection, margin );
wlMaxdatetable.setLayoutData( fdlMaxdatetable );
wMaxdatetable = new Text( wDateComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wMaxdatetable );
wMaxdatetable.addModifyListener( lsMod );
FormData fdMaxdatetable = new FormData();
fdMaxdatetable.left = new FormAttachment( middle, 0 );
fdMaxdatetable.top = new FormAttachment( wMaxdateconnection, margin );
fdMaxdatetable.right = new FormAttachment( 100, 0 );
wMaxdatetable.setLayoutData( fdMaxdatetable );
// Maxdate field...:
Label wlMaxdatefield = new Label( wDateComp, SWT.RIGHT );
wlMaxdatefield.setText( BaseMessages.getString( PKG, "TransDialog.MaxdateField.Label" ) );
props.setLook( wlMaxdatefield );
FormData fdlMaxdatefield = new FormData();
fdlMaxdatefield.left = new FormAttachment( 0, 0 );
fdlMaxdatefield.right = new FormAttachment( middle, -margin );
fdlMaxdatefield.top = new FormAttachment( wMaxdatetable, margin );
wlMaxdatefield.setLayoutData( fdlMaxdatefield );
wMaxdatefield = new Text( wDateComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wMaxdatefield );
wMaxdatefield.addModifyListener( lsMod );
FormData fdMaxdatefield = new FormData();
fdMaxdatefield.left = new FormAttachment( middle, 0 );
fdMaxdatefield.top = new FormAttachment( wMaxdatetable, margin );
fdMaxdatefield.right = new FormAttachment( 100, 0 );
wMaxdatefield.setLayoutData( fdMaxdatefield );
// Maxdate offset...:
Label wlMaxdateoffset = new Label( wDateComp, SWT.RIGHT );
wlMaxdateoffset.setText( BaseMessages.getString( PKG, "TransDialog.MaxdateOffset.Label" ) );
props.setLook( wlMaxdateoffset );
FormData fdlMaxdateoffset = new FormData();
fdlMaxdateoffset.left = new FormAttachment( 0, 0 );
fdlMaxdateoffset.right = new FormAttachment( middle, -margin );
fdlMaxdateoffset.top = new FormAttachment( wMaxdatefield, margin );
wlMaxdateoffset.setLayoutData( fdlMaxdateoffset );
wMaxdateoffset = new Text( wDateComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wMaxdateoffset );
wMaxdateoffset.addModifyListener( lsMod );
FormData fdMaxdateoffset = new FormData();
fdMaxdateoffset.left = new FormAttachment( middle, 0 );
fdMaxdateoffset.top = new FormAttachment( wMaxdatefield, margin );
fdMaxdateoffset.right = new FormAttachment( 100, 0 );
wMaxdateoffset.setLayoutData( fdMaxdateoffset );
// Maxdate diff...:
Label wlMaxdatediff = new Label( wDateComp, SWT.RIGHT );
wlMaxdatediff.setText( BaseMessages.getString( PKG, "TransDialog.Maxdatediff.Label" ) );
props.setLook( wlMaxdatediff );
FormData fdlMaxdatediff = new FormData();
fdlMaxdatediff.left = new FormAttachment( 0, 0 );
fdlMaxdatediff.right = new FormAttachment( middle, -margin );
fdlMaxdatediff.top = new FormAttachment( wMaxdateoffset, margin );
wlMaxdatediff.setLayoutData( fdlMaxdatediff );
wMaxdatediff = new Text( wDateComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wMaxdatediff );
wMaxdatediff.addModifyListener( lsMod );
FormData fdMaxdatediff = new FormData();
fdMaxdatediff.left = new FormAttachment( middle, 0 );
fdMaxdatediff.top = new FormAttachment( wMaxdateoffset, margin );
fdMaxdatediff.right = new FormAttachment( 100, 0 );
wMaxdatediff.setLayoutData( fdMaxdatediff );
connectionNames = new String[transMeta.nrDatabases()];
for ( int i = 0; i < transMeta.nrDatabases(); i++ ) {
DatabaseMeta ci = transMeta.getDatabase( i );
wMaxdateconnection.add( ci.getName() );
connectionNames[i] = ci.getName();
}
FormData fdDateComp = new FormData();
fdDateComp.left = new FormAttachment( 0, 0 );
fdDateComp.top = new FormAttachment( 0, 0 );
fdDateComp.right = new FormAttachment( 100, 0 );
fdDateComp.bottom = new FormAttachment( 100, 0 );
wDateComp.setLayoutData( fdDateComp );
wDateComp.layout();
wDateTab.setControl( wDateComp );
// ///////////////////////////////////////////////////////////
// / END OF DATE TAB
// ///////////////////////////////////////////////////////////
}
private void addDepTab() {
// ////////////////////////
// START OF Dep TAB///
// /
wDepTab = new CTabItem( wTabFolder, SWT.NONE );
wDepTab.setText( BaseMessages.getString( PKG, "TransDialog.DepTab.Label" ) );
FormLayout DepLayout = new FormLayout();
DepLayout.marginWidth = Const.MARGIN;
DepLayout.marginHeight = Const.MARGIN;
Composite wDepComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wDepComp );
wDepComp.setLayout( DepLayout );
Label wlFields = new Label( wDepComp, SWT.RIGHT );
wlFields.setText( BaseMessages.getString( PKG, "TransDialog.Fields.Label" ) );
props.setLook( wlFields );
FormData fdlFields = new FormData();
fdlFields.left = new FormAttachment( 0, 0 );
fdlFields.top = new FormAttachment( 0, 0 );
wlFields.setLayoutData( fdlFields );
final int FieldsCols = 3;
final int FieldsRows = transMeta.nrDependencies();
ColumnInfo[] colinf = new ColumnInfo[FieldsCols];
colinf[0] =
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.ColumnInfo.Connection.Label" ),
ColumnInfo.COLUMN_TYPE_CCOMBO, connectionNames );
colinf[1] =
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.ColumnInfo.Table.Label" ), ColumnInfo.COLUMN_TYPE_TEXT,
false );
colinf[2] =
new ColumnInfo(
BaseMessages.getString( PKG, "TransDialog.ColumnInfo.Field.Label" ), ColumnInfo.COLUMN_TYPE_TEXT,
false );
wFields =
new TableView(
transMeta, wDepComp, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI, colinf, FieldsRows, lsMod, props );
wGet = new Button( wDepComp, SWT.PUSH );
wGet.setText( BaseMessages.getString( PKG, "TransDialog.GetDependenciesButton.Label" ) );
fdGet = new FormData();
fdGet.bottom = new FormAttachment( 100, 0 );
fdGet.left = new FormAttachment( 50, 0 );
wGet.setLayoutData( fdGet );
FormData fdFields = new FormData();
fdFields.left = new FormAttachment( 0, 0 );
fdFields.top = new FormAttachment( wlFields, margin );
fdFields.right = new FormAttachment( 100, 0 );
fdFields.bottom = new FormAttachment( wGet, 0 );
wFields.setLayoutData( fdFields );
FormData fdDepComp = new FormData();
fdDepComp.left = new FormAttachment( 0, 0 );
fdDepComp.top = new FormAttachment( 0, 0 );
fdDepComp.right = new FormAttachment( 100, 0 );
fdDepComp.bottom = new FormAttachment( 100, 0 );
wDepComp.setLayoutData( fdDepComp );
wDepComp.layout();
wDepTab.setControl( wDepComp );
// ///////////////////////////////////////////////////////////
// / END OF DEP TAB
// ///////////////////////////////////////////////////////////
}
private void addMiscTab() {
// ////////////////////////
// START OF PERFORMANCE TAB///
// /
wMiscTab = new CTabItem( wTabFolder, SWT.NONE );
wMiscTab.setText( BaseMessages.getString( PKG, "TransDialog.MiscTab.Label" ) );
Composite wMiscComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wMiscComp );
FormLayout perfLayout = new FormLayout();
perfLayout.marginWidth = Const.FORM_MARGIN;
perfLayout.marginHeight = Const.FORM_MARGIN;
wMiscComp.setLayout( perfLayout );
// Rows in Rowset:
Label wlSizeRowset = new Label( wMiscComp, SWT.RIGHT );
wlSizeRowset.setText( BaseMessages.getString( PKG, "TransDialog.SizeRowset.Label" ) );
wlSizeRowset.setToolTipText( BaseMessages.getString( PKG, "TransDialog.SizeRowset.Tooltip" ) );
props.setLook( wlSizeRowset );
FormData fdlSizeRowset = new FormData();
fdlSizeRowset.left = new FormAttachment( 0, 0 );
fdlSizeRowset.right = new FormAttachment( middle, -margin );
fdlSizeRowset.top = new FormAttachment( 0, margin );
wlSizeRowset.setLayoutData( fdlSizeRowset );
wSizeRowset = new Text( wMiscComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wSizeRowset.setToolTipText( BaseMessages.getString( PKG, "TransDialog.SizeRowset.Tooltip" ) );
props.setLook( wSizeRowset );
wSizeRowset.addModifyListener( lsMod );
FormData fdSizeRowset = new FormData();
fdSizeRowset.left = new FormAttachment( middle, 0 );
fdSizeRowset.top = new FormAttachment( 0, margin );
fdSizeRowset.right = new FormAttachment( 100, 0 );
wSizeRowset.setLayoutData( fdSizeRowset );
// Show feedback in transformations steps?
Label wlShowFeedback = new Label( wMiscComp, SWT.RIGHT );
wlShowFeedback.setText( BaseMessages.getString( PKG, "TransDialog.ShowFeedbackRow.Label" ) );
props.setLook( wlShowFeedback );
FormData fdlShowFeedback = new FormData();
fdlShowFeedback.left = new FormAttachment( 0, 0 );
fdlShowFeedback.top = new FormAttachment( wSizeRowset, margin );
fdlShowFeedback.right = new FormAttachment( middle, -margin );
wlShowFeedback.setLayoutData( fdlShowFeedback );
wShowFeedback = new Button( wMiscComp, SWT.CHECK );
props.setLook( wShowFeedback );
wShowFeedback.addSelectionListener( lsModSel );
FormData fdShowFeedback = new FormData();
fdShowFeedback.left = new FormAttachment( middle, 0 );
fdShowFeedback.top = new FormAttachment( wSizeRowset, margin );
fdShowFeedback.right = new FormAttachment( 100, 0 );
wShowFeedback.setLayoutData( fdShowFeedback );
// Feedback size
Label wlFeedbackSize = new Label( wMiscComp, SWT.RIGHT );
wlFeedbackSize.setText( BaseMessages.getString( PKG, "TransDialog.FeedbackSize.Label" ) );
props.setLook( wlFeedbackSize );
FormData fdlFeedbackSize = new FormData();
fdlFeedbackSize.left = new FormAttachment( 0, 0 );
fdlFeedbackSize.right = new FormAttachment( middle, -margin );
fdlFeedbackSize.top = new FormAttachment( wShowFeedback, margin );
wlFeedbackSize.setLayoutData( fdlFeedbackSize );
wFeedbackSize = new Text( wMiscComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wFeedbackSize );
wFeedbackSize.addModifyListener( lsMod );
FormData fdFeedbackSize = new FormData();
fdFeedbackSize.left = new FormAttachment( middle, 0 );
fdFeedbackSize.right = new FormAttachment( 100, -margin );
fdFeedbackSize.top = new FormAttachment( wShowFeedback, margin );
wFeedbackSize.setLayoutData( fdFeedbackSize );
// Unique connections
Label wlUniqueConnections = new Label( wMiscComp, SWT.RIGHT );
wlUniqueConnections.setText( BaseMessages.getString( PKG, "TransDialog.UniqueConnections.Label" ) );
props.setLook( wlUniqueConnections );
FormData fdlUniqueConnections = new FormData();
fdlUniqueConnections.left = new FormAttachment( 0, 0 );
fdlUniqueConnections.right = new FormAttachment( middle, -margin );
fdlUniqueConnections.top = new FormAttachment( wFeedbackSize, margin );
wlUniqueConnections.setLayoutData( fdlUniqueConnections );
wUniqueConnections = new Button( wMiscComp, SWT.CHECK );
props.setLook( wUniqueConnections );
wUniqueConnections.addSelectionListener( lsModSel );
FormData fdUniqueConnections = new FormData();
fdUniqueConnections.left = new FormAttachment( middle, 0 );
fdUniqueConnections.top = new FormAttachment( wFeedbackSize, margin );
fdUniqueConnections.right = new FormAttachment( 100, 0 );
wUniqueConnections.setLayoutData( fdUniqueConnections );
// Shared objects file
Label wlSharedObjectsFile = new Label( wMiscComp, SWT.RIGHT );
wlSharedObjectsFile.setText( BaseMessages.getString( PKG, "TransDialog.SharedObjectsFile.Label" ) );
props.setLook( wlSharedObjectsFile );
FormData fdlSharedObjectsFile = new FormData();
fdlSharedObjectsFile.left = new FormAttachment( 0, 0 );
fdlSharedObjectsFile.right = new FormAttachment( middle, -margin );
fdlSharedObjectsFile.top = new FormAttachment( wUniqueConnections, margin );
wlSharedObjectsFile.setLayoutData( fdlSharedObjectsFile );
wSharedObjectsFile = new TextVar( transMeta, wMiscComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wlSharedObjectsFile.setToolTipText( BaseMessages.getString( PKG, "TransDialog.SharedObjectsFile.Tooltip" ) );
wSharedObjectsFile.setToolTipText( BaseMessages.getString( PKG, "TransDialog.SharedObjectsFile.Tooltip" ) );
props.setLook( wSharedObjectsFile );
FormData fdSharedObjectsFile = new FormData();
fdSharedObjectsFile.left = new FormAttachment( middle, 0 );
fdSharedObjectsFile.top = new FormAttachment( wUniqueConnections, margin );
fdSharedObjectsFile.right = new FormAttachment( 100, 0 );
wSharedObjectsFile.setLayoutData( fdSharedObjectsFile );
wSharedObjectsFile.addModifyListener( new ModifyListener() {
public void modifyText( ModifyEvent arg0 ) {
sharedObjectsFileChanged = true;
}
} );
// Show feedback in transformations steps?
Label wlManageThreads = new Label( wMiscComp, SWT.RIGHT );
wlManageThreads.setText( BaseMessages.getString( PKG, "TransDialog.ManageThreadPriorities.Label" ) );
props.setLook( wlManageThreads );
FormData fdlManageThreads = new FormData();
fdlManageThreads.left = new FormAttachment( 0, 0 );
fdlManageThreads.top = new FormAttachment( wSharedObjectsFile, margin );
fdlManageThreads.right = new FormAttachment( middle, -margin );
wlManageThreads.setLayoutData( fdlManageThreads );
wManageThreads = new Button( wMiscComp, SWT.CHECK );
wManageThreads.addSelectionListener( lsModSel );
props.setLook( wManageThreads );
FormData fdManageThreads = new FormData();
fdManageThreads.left = new FormAttachment( middle, 0 );
fdManageThreads.top = new FormAttachment( wSharedObjectsFile, margin );
fdManageThreads.right = new FormAttachment( 100, 0 );
wManageThreads.setLayoutData( fdManageThreads );
// Single threaded option ...
Label wlTransformationType = new Label( wMiscComp, SWT.RIGHT );
wlTransformationType.setText( BaseMessages.getString( PKG, "TransDialog.TransformationType.Label" ) );
wlTransformationType.setToolTipText( BaseMessages.getString(
PKG, "TransDialog.TransformationType.Tooltip", Const.CR ) );
props.setLook( wlTransformationType );
FormData fdlTransformationType = new FormData();
fdlTransformationType.left = new FormAttachment( 0, 0 );
fdlTransformationType.right = new FormAttachment( middle, -margin );
fdlTransformationType.top = new FormAttachment( wManageThreads, margin );
wlTransformationType.setLayoutData( fdlTransformationType );
wTransformationType = new CCombo( wMiscComp, SWT.NORMAL );
wTransformationType.setToolTipText( BaseMessages.getString(
PKG, "TransDialog.TransformationType.Tooltip", Const.CR ) );
wTransformationType.addSelectionListener( lsModSel );
props.setLook( wTransformationType );
FormData fdTransformationType = new FormData();
fdTransformationType.left = new FormAttachment( middle, 0 );
fdTransformationType.top = new FormAttachment( wManageThreads, margin );
fdTransformationType.right = new FormAttachment( 100, 0 );
wTransformationType.setLayoutData( fdTransformationType );
wTransformationType.setItems( TransformationType.getTransformationTypesDescriptions() );
FormData fdMiscComp = new FormData();
fdMiscComp.left = new FormAttachment( 0, 0 );
fdMiscComp.top = new FormAttachment( 0, 0 );
fdMiscComp.right = new FormAttachment( 100, 0 );
fdMiscComp.bottom = new FormAttachment( 100, 0 );
wMiscComp.setLayoutData( fdMiscComp );
wMiscComp.layout();
wMiscTab.setControl( wMiscComp );
// ///////////////////////////////////////////////////////////
// / END OF PERF TAB
// ///////////////////////////////////////////////////////////
}
private void addMonitoringTab() {
// ////////////////////////
// START OF MONITORING TAB///
// /
wMonitorTab = new CTabItem( wTabFolder, SWT.NONE );
wMonitorTab.setText( BaseMessages.getString( PKG, "TransDialog.MonitorTab.Label" ) );
Composite wMonitorComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wMonitorComp );
FormLayout monitorLayout = new FormLayout();
monitorLayout.marginWidth = Const.FORM_MARGIN;
monitorLayout.marginHeight = Const.FORM_MARGIN;
wMonitorComp.setLayout( monitorLayout );
//
// Enable step performance monitoring?
//
Label wlEnableStepPerfMonitor = new Label( wMonitorComp, SWT.LEFT );
wlEnableStepPerfMonitor.setText( BaseMessages.getString( PKG, "TransDialog.StepPerformanceMonitoring.Label" ) );
props.setLook( wlEnableStepPerfMonitor );
FormData fdlSchemaName = new FormData();
fdlSchemaName.left = new FormAttachment( 0, 0 );
fdlSchemaName.right = new FormAttachment( middle, -margin );
fdlSchemaName.top = new FormAttachment( 0, 0 );
wlEnableStepPerfMonitor.setLayoutData( fdlSchemaName );
wEnableStepPerfMonitor = new Button( wMonitorComp, SWT.CHECK );
props.setLook( wEnableStepPerfMonitor );
FormData fdEnableStepPerfMonitor = new FormData();
fdEnableStepPerfMonitor.left = new FormAttachment( middle, 0 );
fdEnableStepPerfMonitor.right = new FormAttachment( 100, 0 );
fdEnableStepPerfMonitor.top = new FormAttachment( 0, 0 );
wEnableStepPerfMonitor.setLayoutData( fdEnableStepPerfMonitor );
wEnableStepPerfMonitor.addSelectionListener( lsModSel );
wEnableStepPerfMonitor.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent selectionEvent ) {
setFlags();
}
} );
//
// Step performance interval
//
Label wlStepPerfInterval = new Label( wMonitorComp, SWT.LEFT );
wlStepPerfInterval.setText( BaseMessages.getString( PKG, "TransDialog.StepPerformanceInterval.Label" ) );
props.setLook( wlStepPerfInterval );
FormData fdlStepPerfInterval = new FormData();
fdlStepPerfInterval.left = new FormAttachment( 0, 0 );
fdlStepPerfInterval.right = new FormAttachment( middle, -margin );
fdlStepPerfInterval.top = new FormAttachment( wEnableStepPerfMonitor, margin );
wlStepPerfInterval.setLayoutData( fdlStepPerfInterval );
wStepPerfInterval = new Text( wMonitorComp, SWT.LEFT | SWT.BORDER | SWT.SINGLE );
props.setLook( wStepPerfInterval );
FormData fdStepPerfInterval = new FormData();
fdStepPerfInterval.left = new FormAttachment( middle, 0 );
fdStepPerfInterval.right = new FormAttachment( 100, 0 );
fdStepPerfInterval.top = new FormAttachment( wEnableStepPerfMonitor, margin );
wStepPerfInterval.setLayoutData( fdStepPerfInterval );
wStepPerfInterval.addModifyListener( lsMod );
//
// Step performance interval
//
Label wlStepPerfMaxSize = new Label( wMonitorComp, SWT.LEFT );
wlStepPerfMaxSize.setText( BaseMessages.getString( PKG, "TransDialog.StepPerformanceMaxSize.Label" ) );
wlStepPerfMaxSize.setToolTipText( BaseMessages.getString( PKG, "TransDialog.StepPerformanceMaxSize.Tooltip" ) );
props.setLook( wlStepPerfMaxSize );
FormData fdlStepPerfMaxSize = new FormData();
fdlStepPerfMaxSize.left = new FormAttachment( 0, 0 );
fdlStepPerfMaxSize.right = new FormAttachment( middle, -margin );
fdlStepPerfMaxSize.top = new FormAttachment( wStepPerfInterval, margin );
wlStepPerfMaxSize.setLayoutData( fdlStepPerfMaxSize );
wStepPerfMaxSize = new TextVar( transMeta, wMonitorComp, SWT.LEFT | SWT.BORDER | SWT.SINGLE );
wStepPerfMaxSize.setToolTipText( BaseMessages.getString( PKG, "TransDialog.StepPerformanceMaxSize.Tooltip" ) );
props.setLook( wStepPerfMaxSize );
FormData fdStepPerfMaxSize = new FormData();
fdStepPerfMaxSize.left = new FormAttachment( middle, 0 );
fdStepPerfMaxSize.right = new FormAttachment( 100, 0 );
fdStepPerfMaxSize.top = new FormAttachment( wStepPerfInterval, margin );
wStepPerfMaxSize.setLayoutData( fdStepPerfMaxSize );
wStepPerfMaxSize.addModifyListener( lsMod );
FormData fdMonitorComp = new FormData();
fdMonitorComp.left = new FormAttachment( 0, 0 );
fdMonitorComp.top = new FormAttachment( 0, 0 );
fdMonitorComp.right = new FormAttachment( 100, 0 );
fdMonitorComp.bottom = new FormAttachment( 100, 0 );
wMonitorComp.setLayoutData( fdMonitorComp );
wMonitorComp.layout();
wMonitorTab.setControl( wMonitorComp );
// ///////////////////////////////////////////////////////////
// / END OF MONITORING TAB
// ///////////////////////////////////////////////////////////
}
public void dispose() {
shell.dispose();
}
/**
* Copy information from the meta-data input to the dialog fields.
*/
public void getData() {
wTransname.setText( Const.NVL( transMeta.getName(), "" ) );
wTransFilename.setText( Const.NVL( transMeta.getFilename(), "" ) );
wTransdescription.setText( Const.NVL( transMeta.getDescription(), "" ) );
wExtendeddescription.setText( Const.NVL( transMeta.getExtendedDescription(), "" ) );
wTransversion.setText( Const.NVL( transMeta.getTransversion(), "" ) );
wTransstatus.select( transMeta.getTransstatus() - 1 );
if ( transMeta.getCreatedUser() != null ) {
wCreateUser.setText( transMeta.getCreatedUser() );
}
if ( transMeta.getCreatedDate() != null ) {
wCreateDate.setText( transMeta.getCreatedDate().toString() );
}
if ( transMeta.getModifiedUser() != null ) {
wModUser.setText( transMeta.getModifiedUser() );
}
if ( transMeta.getModifiedDate() != null ) {
wModDate.setText( transMeta.getModifiedDate().toString() );
}
if ( transMeta.getMaxDateConnection() != null ) {
wMaxdateconnection.setText( transMeta.getMaxDateConnection().getName() );
}
if ( transMeta.getMaxDateTable() != null ) {
wMaxdatetable.setText( transMeta.getMaxDateTable() );
}
if ( transMeta.getMaxDateField() != null ) {
wMaxdatefield.setText( transMeta.getMaxDateField() );
}
wMaxdateoffset.setText( Double.toString( transMeta.getMaxDateOffset() ) );
wMaxdatediff.setText( Double.toString( transMeta.getMaxDateDifference() ) );
// The dependencies
for ( int i = 0; i < transMeta.nrDependencies(); i++ ) {
TableItem item = wFields.table.getItem( i );
TransDependency td = transMeta.getDependency( i );
DatabaseMeta conn = td.getDatabase();
String table = td.getTablename();
String field = td.getFieldname();
if ( conn != null ) {
item.setText( 1, conn.getName() );
}
if ( table != null ) {
item.setText( 2, table );
}
if ( field != null ) {
item.setText( 3, field );
}
}
// The named parameters
String[] parameters = transMeta.listParameters();
for ( int idx = 0; idx < parameters.length; idx++ ) {
TableItem item = wParamFields.table.getItem( idx );
String defValue;
try {
defValue = transMeta.getParameterDefault( parameters[idx] );
} catch ( UnknownParamException e ) {
defValue = "";
}
String description;
try {
description = transMeta.getParameterDescription( parameters[idx] );
} catch ( UnknownParamException e ) {
description = "";
}
item.setText( 1, parameters[idx] );
item.setText( 2, Const.NVL( defValue, "" ) );
item.setText( 3, Const.NVL( description, "" ) );
}
wSizeRowset.setText( Integer.toString( transMeta.getSizeRowset() ) );
wUniqueConnections.setSelection( transMeta.isUsingUniqueConnections() );
wShowFeedback.setSelection( transMeta.isFeedbackShown() );
wFeedbackSize.setText( Integer.toString( transMeta.getFeedbackSize() ) );
wSharedObjectsFile.setText( Const.NVL( transMeta.getSharedObjectsFile(), "" ) );
wManageThreads.setSelection( transMeta.isUsingThreadPriorityManagment() );
wTransformationType.setText( transMeta.getTransformationType().getDescription() );
wFields.setRowNums();
wFields.optWidth( true );
wParamFields.setRowNums();
wParamFields.optWidth( true );
// Directory:
if ( transMeta.getRepositoryDirectory() != null && transMeta.getRepositoryDirectory().getPath() != null ) {
wDirectory.setText( transMeta.getRepositoryDirectory().getPath() );
}
// Performance monitoring tab:
//
wEnableStepPerfMonitor.setSelection( transMeta.isCapturingStepPerformanceSnapShots() );
wStepPerfInterval.setText( Long.toString( transMeta.getStepPerformanceCapturingDelay() ) );
wStepPerfMaxSize.setText( Const.NVL( transMeta.getStepPerformanceCapturingSizeLimit(), "" ) );
wTransname.selectAll();
wTransname.setFocus();
for ( TransDialogPluginInterface extraTab : extraTabs ) {
try {
extraTab.getData( transMeta );
} catch ( Exception e ) {
new ErrorDialog( shell, "Error", "Error adding extra plugin tab", e );
}
}
setFlags();
}
public void setFlags() {
wbDirectory.setEnabled( rep != null );
// wDirectory.setEnabled(rep!=null);
wlDirectory.setEnabled( rep != null );
// wlStepLogtable.setEnabled(wEnableStepPerfMonitor.getSelection());
// wStepLogtable.setEnabled(wEnableStepPerfMonitor.getSelection());
// wlLogSizeLimit.setEnabled(wLogfield.getSelection());
// wLogSizeLimit.setEnabled(wLogfield.getSelection());
}
private void cancel() {
props.setScreen( new WindowProperty( shell ) );
transMeta = null;
dispose();
}
private void ok() {
boolean OK = true;
getLogInfo();
transMeta.setTransLogTable( transLogTable );
transMeta.setPerformanceLogTable( performanceLogTable );
transMeta.setChannelLogTable( channelLogTable );
transMeta.setStepLogTable( stepLogTable );
transMeta.setMetricsLogTable( metricsLogTable );
// transMeta.setStepPerformanceLogTable(wStepLogtable.getText());
transMeta.setMaxDateConnection( transMeta.findDatabase( wMaxdateconnection.getText() ) );
transMeta.setMaxDateTable( wMaxdatetable.getText() );
transMeta.setMaxDateField( wMaxdatefield.getText() );
transMeta.setName( wTransname.getText() );
transMeta.setDescription( wTransdescription.getText() );
transMeta.setExtendedDescription( wExtendeddescription.getText() );
transMeta.setTransversion( wTransversion.getText() );
if ( wTransstatus.getSelectionIndex() != 2 ) {
transMeta.setTransstatus( wTransstatus.getSelectionIndex() + 1 );
} else {
transMeta.setTransstatus( -1 );
}
try {
transMeta.setMaxDateOffset( Double.parseDouble( wMaxdateoffset.getText() ) );
} catch ( Exception e ) {
MessageBox mb = new MessageBox( shell, SWT.ICON_ERROR | SWT.OK );
mb.setText( BaseMessages.getString( PKG, "TransDialog.InvalidOffsetNumber.DialogTitle" ) );
mb.setMessage( BaseMessages.getString( PKG, "TransDialog.InvalidOffsetNumber.DialogMessage" ) );
mb.open();
wMaxdateoffset.setFocus();
wMaxdateoffset.selectAll();
OK = false;
}
try {
transMeta.setMaxDateDifference( Double.parseDouble( wMaxdatediff.getText() ) );
} catch ( Exception e ) {
MessageBox mb = new MessageBox( shell, SWT.ICON_ERROR | SWT.OK );
mb.setText( BaseMessages.getString( PKG, "TransDialog.InvalidDateDifferenceNumber.DialogTitle" ) );
mb.setMessage( BaseMessages.getString( PKG, "TransDialog.InvalidDateDifferenceNumber.DialogMessage" ) );
mb.open();
wMaxdatediff.setFocus();
wMaxdatediff.selectAll();
OK = false;
}
// Clear and add current dependencies
transMeta.removeAllDependencies();
int nrNonEmptyFields = wFields.nrNonEmpty();
for ( int i = 0; i < nrNonEmptyFields; i++ ) {
TableItem item = wFields.getNonEmpty( i );
DatabaseMeta db = transMeta.findDatabase( item.getText( 1 ) );
String tablename = item.getText( 2 );
String fieldname = item.getText( 3 );
TransDependency td = new TransDependency( db, tablename, fieldname );
transMeta.addDependency( td );
}
// Clear and add parameters
transMeta.eraseParameters();
nrNonEmptyFields = wParamFields.nrNonEmpty();
for ( int i = 0; i < nrNonEmptyFields; i++ ) {
TableItem item = wParamFields.getNonEmpty( i );
try {
transMeta.addParameterDefinition( item.getText( 1 ), item.getText( 2 ), item.getText( 3 ) );
} catch ( DuplicateParamException e ) {
// Ignore the duplicate parameter.
}
}
transMeta.activateParameters();
transMeta.setSizeRowset( Const.toInt( wSizeRowset.getText(), Const.ROWS_IN_ROWSET ) );
transMeta.setUsingUniqueConnections( wUniqueConnections.getSelection() );
transMeta.setFeedbackShown( wShowFeedback.getSelection() );
transMeta.setFeedbackSize( Const.toInt( wFeedbackSize.getText(), Const.ROWS_UPDATE ) );
transMeta.setSharedObjectsFile( wSharedObjectsFile.getText() );
transMeta.setUsingThreadPriorityManagment( wManageThreads.getSelection() );
transMeta.setTransformationType( TransformationType.values()[Const.indexOfString( wTransformationType
.getText(), TransformationType.getTransformationTypesDescriptions() )] );
if ( directoryChangeAllowed && transMeta.getObjectId() != null ) {
if ( newDirectory != null ) {
RepositoryDirectoryInterface dirFrom = transMeta.getRepositoryDirectory();
try {
ObjectId newId = rep.renameTransformation( transMeta.getObjectId(), newDirectory, transMeta.getName() );
transMeta.setObjectId( newId );
transMeta.setRepositoryDirectory( newDirectory );
} catch ( KettleException ke ) {
transMeta.setRepositoryDirectory( dirFrom );
OK = false;
new ErrorDialog( shell,
BaseMessages.getString( PKG, "TransDialog.ErrorMovingTransformation.DialogTitle" ),
BaseMessages.getString( PKG, "TransDialog.ErrorMovingTransformation.DialogMessage" ), ke );
}
}
} else {
// Just update to the new selected directory...
//
if ( newDirectory != null ) {
transMeta.setRepositoryDirectory( newDirectory );
}
}
// Performance monitoring tab:
//
transMeta.setCapturingStepPerformanceSnapShots( wEnableStepPerfMonitor.getSelection() );
transMeta.setStepPerformanceCapturingSizeLimit( wStepPerfMaxSize.getText() );
try {
long stepPerformanceCapturingDelay = Long.parseLong( wStepPerfInterval.getText() );
// values equal or less than zero cause problems during monitoring
if ( stepPerformanceCapturingDelay <= 0 && transMeta.isCapturingStepPerformanceSnapShots() ) {
throw new KettleException();
} else {
if ( stepPerformanceCapturingDelay <= 0 ) {
// PDI-4848: Default to 1 second if step performance monitoring is disabled
stepPerformanceCapturingDelay = 1000;
}
transMeta.setStepPerformanceCapturingDelay( stepPerformanceCapturingDelay );
}
} catch ( Exception e ) {
MessageBox mb = new MessageBox( shell, SWT.ICON_ERROR | SWT.OK );
mb.setText( BaseMessages.getString( PKG, "TransDialog.InvalidStepPerfIntervalNumber.DialogTitle" ) );
mb.setMessage( BaseMessages.getString( PKG, "TransDialog.InvalidStepPerfIntervalNumber.DialogMessage" ) );
mb.open();
wStepPerfInterval.setFocus();
wStepPerfInterval.selectAll();
OK = false;
}
for ( TransDialogPluginInterface extraTab : extraTabs ) {
try {
extraTab.ok( transMeta );
} catch ( Exception e ) {
new ErrorDialog( shell, "Error", "Error getting information from extra plugin tab", e );
}
}
if ( OK ) {
transMeta.setChanged( changed || transMeta.hasChanged() );
dispose();
}
}
// Get the dependencies
private void get() {
Table table = wFields.table;
for ( int i = 0; i < transMeta.nrSteps(); i++ ) {
StepMeta stepMeta = transMeta.getStep( i );
String con = null;
String tab = null;
TableItem item = null;
StepMetaInterface sii = stepMeta.getStepMetaInterface();
if ( sii instanceof TableInputMeta ) {
TableInputMeta tii = (TableInputMeta) stepMeta.getStepMetaInterface();
if ( tii.getDatabaseMeta() == null ) {
MessageBox mb = new MessageBox( shell, SWT.OK | SWT.ICON_ERROR );
mb.setMessage( BaseMessages.getString( PKG, "TransDialog.DatabaseMetaNotSet.Text" ) );
mb.open();
return;
}
con = tii.getDatabaseMeta().getName();
tab = getTableFromSQL( tii.getSQL() );
if ( tab == null ) {
tab = stepMeta.getName();
}
}
if ( sii instanceof DatabaseLookupMeta ) {
DatabaseLookupMeta dvli = (DatabaseLookupMeta) stepMeta.getStepMetaInterface();
con = dvli.getDatabaseMeta().getName();
tab = dvli.getTablename();
if ( tab == null ) {
tab = stepMeta.getName();
}
break;
}
if ( tab != null || con != null ) {
item = new TableItem( table, SWT.NONE );
if ( con != null ) {
item.setText( 1, con );
}
if ( tab != null ) {
item.setText( 2, tab );
}
}
}
wFields.setRowNums();
}
private String getTableFromSQL( String sql ) {
if ( sql == null ) {
return null;
}
int idxfrom = sql.toUpperCase().indexOf( "FROM" );
int idxto = sql.toUpperCase().indexOf( "WHERE" );
if ( idxfrom == -1 ) {
return null;
}
if ( idxto == -1 ) {
idxto = sql.length();
}
return sql.substring( idxfrom + 5, idxto );
}
/**
* Generates code for create table... Conversions done by Database
*/
private void sql() {
getLogInfo();
try {
boolean allOK = true;
for ( LogTableInterface logTable : new LogTableInterface[] {
transLogTable, performanceLogTable, channelLogTable, stepLogTable, metricsLogTable, } ) {
if ( logTable.getDatabaseMeta() != null && !Utils.isEmpty( logTable.getTableName() ) ) {
// OK, we have something to work with!
//
Database db = null;
try {
db = new Database( transMeta, logTable.getDatabaseMeta() );
db.shareVariablesWith( transMeta );
db.connect();
StringBuilder ddl = new StringBuilder();
RowMetaInterface fields = logTable.getLogRecord( LogStatus.START, null, null ).getRowMeta();
String tableName = db.environmentSubstitute( logTable.getTableName() );
String schemaTable =
logTable.getDatabaseMeta().getQuotedSchemaTableCombination(
db.environmentSubstitute( logTable.getSchemaName() ), tableName );
String createTable = db.getDDL( schemaTable, fields );
if ( !Utils.isEmpty( createTable ) ) {
ddl.append( "-- " ).append( logTable.getLogTableType() ).append( Const.CR );
ddl.append( "--" ).append( Const.CR ).append( Const.CR );
ddl.append( createTable ).append( Const.CR );
}
java.util.List<RowMetaInterface> indexes = logTable.getRecommendedIndexes();
for ( int i = 0; i < indexes.size(); i++ ) {
RowMetaInterface index = indexes.get( i );
if ( !index.isEmpty() ) {
String createIndex =
db.getCreateIndexStatement( schemaTable, "IDX_" + tableName + "_" + ( i + 1 ), index
.getFieldNames(), false, false, false, true );
if ( !Utils.isEmpty( createIndex ) ) {
ddl.append( createIndex );
}
}
}
if ( ddl.length() > 0 ) {
allOK = false;
SQLEditor sqledit =
new SQLEditor(
transMeta, shell, SWT.NONE, logTable.getDatabaseMeta(), transMeta.getDbCache(), ddl
.toString() );
sqledit.open();
}
} finally {
if ( db != null ) {
db.disconnect();
}
}
}
}
if ( allOK ) {
MessageBox mb = new MessageBox( shell, SWT.OK | SWT.ICON_INFORMATION );
mb.setText( BaseMessages.getString( PKG, "TransDialog.NoSqlNedds.DialogTitle" ) );
mb.setMessage( BaseMessages.getString( PKG, "TransDialog.NoSqlNedds.DialogMessage" ) );
mb.open();
}
} catch ( Exception e ) {
new ErrorDialog( shell, BaseMessages.getString( PKG, "TransDialog.ErrorOccurred.DialogTitle" ), BaseMessages
.getString( PKG, "TransDialog.ErrorOccurred.DialogMessage" ), e );
}
}
private void getLogInfo() {
getTransLogTableOptions();
getPerformanceLogTableOptions();
getChannelLogTableOptions();
getStepLogTableOptions();
getMetricsLogTableOptions();
}
public boolean isSharedObjectsFileChanged() {
return sharedObjectsFileChanged;
}
public void setDirectoryChangeAllowed( boolean directoryChangeAllowed ) {
this.directoryChangeAllowed = directoryChangeAllowed;
}
private void setCurrentTab( Tabs currentTab ) {
switch ( currentTab ) {
case PARAM_TAB:
wTabFolder.setSelection( wParamTab );
break;
case MISC_TAB:
wTabFolder.setSelection( wMiscTab );
break;
case DATE_TAB:
wTabFolder.setSelection( wDateTab );
break;
case LOG_TAB:
wTabFolder.setSelection( wLogTab );
break;
case DEP_TAB:
wTabFolder.setSelection( wDepTab );
break;
case MONITOR_TAB:
wTabFolder.setSelection( wMonitorTab );
break;
case EXTRA_TAB:
if ( extraTabs.size() > 0 ) {
wTabFolder.setSelection( extraTabs.get( 0 ).getTab() );
}
break;
case TRANS_TAB:
default:
wTabFolder.setSelection( wTransTab );
break;
}
}
}