/*! ****************************************************************************** * * 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.steps.rest; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.events.FocusListener; 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.graphics.Cursor; import org.eclipse.swt.graphics.Point; 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.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; 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.exception.KettleException; import org.pentaho.di.core.row.RowMetaInterface; import org.pentaho.di.i18n.BaseMessages; import org.pentaho.di.trans.TransMeta; import org.pentaho.di.trans.step.BaseStepMeta; import org.pentaho.di.trans.step.StepDialogInterface; import org.pentaho.di.trans.step.StepMeta; import org.pentaho.di.trans.steps.rest.RestMeta; import org.pentaho.di.ui.core.PropsUI; import org.pentaho.di.ui.core.dialog.ErrorDialog; import org.pentaho.di.ui.core.widget.ColumnInfo; import org.pentaho.di.ui.core.widget.ComboVar; import org.pentaho.di.ui.core.widget.PasswordTextVar; import org.pentaho.di.ui.core.widget.TableView; import org.pentaho.di.ui.core.widget.TextVar; import org.pentaho.di.ui.trans.step.BaseStepDialog; public class RestDialog extends BaseStepDialog implements StepDialogInterface { private static Class<?> PKG = RestMeta.class; // for i18n purposes, needed by Translator2!! private Label wlApplicationType; private ComboVar wApplicationType; private FormData fdlApplicationType, fdApplicationType; private Label wlMethod; private ComboVar wMethod; private FormData fdlMethod, fdMethod; private Label wlUrl; private TextVar wUrl; private FormData fdlUrl, fdUrl; private Label wlResult; private TextVar wResult; private FormData fdlResult, fdResult; private Label wlResultCode; private TextVar wResultCode; private FormData fdlResultCode, fdResultCode; private Label wlFields; private TableView wFields; private FormData fdlFields, fdFields; private Label wlUrlInField; private Button wUrlInField; private FormData fdlUrlInField, fdUrlInField; private Label wlUrlField; private ComboVar wUrlField; private FormData fdlUrlField, fdUrlField; private Label wlMethodInField; private Button wMethodInField; private FormData fdlMethodInField, fdMethodInField; private Label wlPreemptive; private Button wPreemptive; private FormData fdlPreemptive, fdPreemptive; private Label wlMethodField; private ComboVar wMethodField; private FormData fdlMethodField, fdMethodField; private RestMeta input; private Map<String, Integer> inputFields; private Label wlBody; private ComboVar wBody; private FormData fdlBody, fdBody; private Button wGetHeaders; private ColumnInfo[] colinf, colinfoparams; private String[] fieldNames; private Label wlHttpLogin; private TextVar wHttpLogin; private Label wlHttpPassword; private TextVar wHttpPassword; private Label wlProxyHost; private TextVar wProxyHost; private Label wlProxyPort; private TextVar wProxyPort; private CTabFolder wTabFolder; private CTabItem wGeneralTab, wAdditionalTab, wParametersTab, wMatrixParametersTab, wAuthTab, wSSLTab; private FormData fdTabFolder; private Composite wGeneralComp, wAdditionalComp; private FormData fdGeneralComp, fdAdditionalComp; private Composite wParametersComp, wMatrixParametersComp; private FormData fdParametersComp, fdMatrixParametersComp; private Composite wAuthComp; private FormData fdAuthComp; private Composite wSSLComp; private FormData fdSSLComp; private Label wlParameters, wlMatrixParameters; private TableView wParameters, wMatrixParameters; private FormData fdlParameters, fdlMatrixParameters, fdParameters, fdMatrixParameters; private Label wlResponseTime; private TextVar wResponseTime; private FormData fdlResponseTime, fdResponseTime; private Label wlResponseHeader; private TextVar wResponseHeader; private FormData fdlResponseHeader, fdResponseHeader; private Label wlTrustStorePassword; private TextVar wTrustStorePassword; private FormData fdlTrustStorePassword, fdTrustStorePassword; private Label wlTrustStoreFile; private TextVar wTrustStoreFile; private Button wbTrustStoreFile; private FormData fdbTrustStoreFile; private FormData fdlTrustStoreFile, fdTrustStoreFile; private boolean gotPreviousFields = false; private Button wMatrixGet; private Listener lsMatrixGet; public RestDialog( Shell parent, Object in, TransMeta transMeta, String sname ) { super( parent, (BaseStepMeta) in, transMeta, sname ); input = (RestMeta) in; inputFields = new HashMap<String, Integer>(); } public String open() { Shell parent = getParent(); Display display = parent.getDisplay(); shell = new Shell( parent, SWT.DIALOG_TRIM | SWT.RESIZE | SWT.MAX | SWT.MIN ); props.setLook( shell ); setShellImage( shell, input ); ModifyListener lsMod = new ModifyListener() { public void modifyText( ModifyEvent e ) { input.setChanged(); } }; changed = input.hasChanged(); FormLayout formLayout = new FormLayout(); formLayout.marginWidth = Const.FORM_MARGIN; formLayout.marginHeight = Const.FORM_MARGIN; shell.setLayout( formLayout ); shell.setText( BaseMessages.getString( PKG, "RestDialog.Shell.Title" ) ); int middle = props.getMiddlePct(); int margin = Const.MARGIN; // Stepname line wlStepname = new Label( shell, SWT.RIGHT ); wlStepname.setText( BaseMessages.getString( PKG, "RestDialog.Stepname.Label" ) ); props.setLook( wlStepname ); fdlStepname = new FormData(); fdlStepname.left = new FormAttachment( 0, 0 ); fdlStepname.right = new FormAttachment( middle, -margin ); fdlStepname.top = new FormAttachment( 0, margin ); wlStepname.setLayoutData( fdlStepname ); wStepname = new Text( shell, SWT.SINGLE | SWT.LEFT | SWT.BORDER ); wStepname.setText( stepname ); props.setLook( wStepname ); wStepname.addModifyListener( lsMod ); fdStepname = new FormData(); fdStepname.left = new FormAttachment( middle, 0 ); fdStepname.top = new FormAttachment( 0, margin ); fdStepname.right = new FormAttachment( 100, 0 ); wStepname.setLayoutData( fdStepname ); wTabFolder = new CTabFolder( shell, SWT.BORDER ); props.setLook( wTabFolder, PropsUI.WIDGET_STYLE_TAB ); // //////////////////////// // START OF GENERAL TAB /// // //////////////////////// wGeneralTab = new CTabItem( wTabFolder, SWT.NONE ); wGeneralTab.setText( BaseMessages.getString( PKG, "RestDialog.GeneralTab.Title" ) ); wGeneralComp = new Composite( wTabFolder, SWT.NONE ); props.setLook( wGeneralComp ); FormLayout fileLayout = new FormLayout(); fileLayout.marginWidth = 3; fileLayout.marginHeight = 3; wGeneralComp.setLayout( fileLayout ); // //////////////////////// // START Settings GROUP Group gSettings = new Group( wGeneralComp, SWT.SHADOW_ETCHED_IN ); gSettings.setText( BaseMessages.getString( PKG, "RestDialog.SettingsGroup.Label" ) ); FormLayout SettingsLayout = new FormLayout(); SettingsLayout.marginWidth = 3; SettingsLayout.marginHeight = 3; gSettings.setLayout( SettingsLayout ); props.setLook( gSettings ); wlUrl = new Label( gSettings, SWT.RIGHT ); wlUrl.setText( BaseMessages.getString( PKG, "RestDialog.URL.Label" ) ); props.setLook( wlUrl ); fdlUrl = new FormData(); fdlUrl.left = new FormAttachment( 0, 0 ); fdlUrl.right = new FormAttachment( middle, -margin ); fdlUrl.top = new FormAttachment( wGeneralComp, margin * 2 ); wlUrl.setLayoutData( fdlUrl ); wUrl = new TextVar( transMeta, gSettings, SWT.SINGLE | SWT.LEFT | SWT.BORDER ); props.setLook( wUrl ); wUrl.addModifyListener( lsMod ); fdUrl = new FormData(); fdUrl.left = new FormAttachment( middle, 0 ); fdUrl.top = new FormAttachment( wGeneralComp, margin * 2 ); fdUrl.right = new FormAttachment( 100, 0 ); wUrl.setLayoutData( fdUrl ); // UrlInField line wlUrlInField = new Label( gSettings, SWT.RIGHT ); wlUrlInField.setText( BaseMessages.getString( PKG, "RestDialog.UrlInField.Label" ) ); props.setLook( wlUrlInField ); fdlUrlInField = new FormData(); fdlUrlInField.left = new FormAttachment( 0, 0 ); fdlUrlInField.top = new FormAttachment( wUrl, margin ); fdlUrlInField.right = new FormAttachment( middle, -margin ); wlUrlInField.setLayoutData( fdlUrlInField ); wUrlInField = new Button( gSettings, SWT.CHECK ); props.setLook( wUrlInField ); fdUrlInField = new FormData(); fdUrlInField.left = new FormAttachment( middle, 0 ); fdUrlInField.top = new FormAttachment( wUrl, margin ); fdUrlInField.right = new FormAttachment( 100, 0 ); wUrlInField.setLayoutData( fdUrlInField ); wUrlInField.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent e ) { input.setChanged(); activeUrlInfield(); } } ); // UrlField Line wlUrlField = new Label( gSettings, SWT.RIGHT ); wlUrlField.setText( BaseMessages.getString( PKG, "RestDialog.UrlField.Label" ) ); props.setLook( wlUrlField ); fdlUrlField = new FormData(); fdlUrlField.left = new FormAttachment( 0, 0 ); fdlUrlField.right = new FormAttachment( middle, -margin ); fdlUrlField.top = new FormAttachment( wUrlInField, margin ); wlUrlField.setLayoutData( fdlUrlField ); wUrlField = new ComboVar( transMeta, gSettings, SWT.BORDER | SWT.READ_ONLY ); wUrlField.setEditable( true ); props.setLook( wUrlField ); wUrlField.addModifyListener( lsMod ); fdUrlField = new FormData(); fdUrlField.left = new FormAttachment( middle, 0 ); fdUrlField.top = new FormAttachment( wUrlInField, margin ); fdUrlField.right = new FormAttachment( 100, -margin ); wUrlField.setLayoutData( fdUrlField ); wUrlField.addFocusListener( new FocusListener() { public void focusLost( org.eclipse.swt.events.FocusEvent e ) { } public void focusGained( org.eclipse.swt.events.FocusEvent e ) { Cursor busy = new Cursor( shell.getDisplay(), SWT.CURSOR_WAIT ); shell.setCursor( busy ); setStreamFields(); shell.setCursor( null ); busy.dispose(); } } ); // Method Line wlMethod = new Label( gSettings, SWT.RIGHT ); wlMethod.setText( BaseMessages.getString( PKG, "RestDialog.Method.Label" ) ); props.setLook( wlMethod ); fdlMethod = new FormData(); fdlMethod.left = new FormAttachment( 0, 0 ); fdlMethod.right = new FormAttachment( middle, -margin ); fdlMethod.top = new FormAttachment( wUrlField, 2 * margin ); wlMethod.setLayoutData( fdlMethod ); wMethod = new ComboVar( transMeta, gSettings, SWT.BORDER | SWT.READ_ONLY ); wMethod.setEditable( true ); props.setLook( wMethod ); wMethod.addModifyListener( lsMod ); fdMethod = new FormData(); fdMethod.left = new FormAttachment( middle, 0 ); fdMethod.top = new FormAttachment( wUrlField, 2 * margin ); fdMethod.right = new FormAttachment( 100, -margin ); wMethod.setLayoutData( fdMethod ); wMethod.setItems( RestMeta.HTTP_METHODS ); wMethod.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent e ) { setMethod(); } } ); // MethodInField line wlMethodInField = new Label( gSettings, SWT.RIGHT ); wlMethodInField.setText( BaseMessages.getString( PKG, "RestDialog.MethodInField.Label" ) ); props.setLook( wlMethodInField ); fdlMethodInField = new FormData(); fdlMethodInField.left = new FormAttachment( 0, 0 ); fdlMethodInField.top = new FormAttachment( wMethod, margin ); fdlMethodInField.right = new FormAttachment( middle, -margin ); wlMethodInField.setLayoutData( fdlMethodInField ); wMethodInField = new Button( gSettings, SWT.CHECK ); props.setLook( wMethodInField ); fdMethodInField = new FormData(); fdMethodInField.left = new FormAttachment( middle, 0 ); fdMethodInField.top = new FormAttachment( wMethod, margin ); fdMethodInField.right = new FormAttachment( 100, 0 ); wMethodInField.setLayoutData( fdMethodInField ); wMethodInField.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent e ) { input.setChanged(); activeMethodInfield(); } } ); // MethodField Line wlMethodField = new Label( gSettings, SWT.RIGHT ); wlMethodField.setText( BaseMessages.getString( PKG, "RestDialog.MethodField.Label" ) ); props.setLook( wlMethodField ); fdlMethodField = new FormData(); fdlMethodField.left = new FormAttachment( 0, 0 ); fdlMethodField.right = new FormAttachment( middle, -margin ); fdlMethodField.top = new FormAttachment( wMethodInField, margin ); wlMethodField.setLayoutData( fdlMethodField ); wMethodField = new ComboVar( transMeta, gSettings, SWT.BORDER | SWT.READ_ONLY ); wMethodField.setEditable( true ); props.setLook( wMethodField ); wMethodField.addModifyListener( lsMod ); fdMethodField = new FormData(); fdMethodField.left = new FormAttachment( middle, 0 ); fdMethodField.top = new FormAttachment( wMethodInField, margin ); fdMethodField.right = new FormAttachment( 100, -margin ); wMethodField.setLayoutData( fdMethodField ); wMethodField.addFocusListener( new FocusListener() { public void focusLost( org.eclipse.swt.events.FocusEvent e ) { } public void focusGained( org.eclipse.swt.events.FocusEvent e ) { Cursor busy = new Cursor( shell.getDisplay(), SWT.CURSOR_WAIT ); shell.setCursor( busy ); setStreamFields(); shell.setCursor( null ); busy.dispose(); } } ); // Body Line wlBody = new Label( gSettings, SWT.RIGHT ); wlBody.setText( BaseMessages.getString( PKG, "RestDialog.Body.Label" ) ); props.setLook( wlBody ); fdlBody = new FormData(); fdlBody.left = new FormAttachment( 0, 0 ); fdlBody.right = new FormAttachment( middle, -margin ); fdlBody.top = new FormAttachment( wMethodField, 2 * margin ); wlBody.setLayoutData( fdlBody ); wBody = new ComboVar( transMeta, gSettings, SWT.BORDER | SWT.READ_ONLY ); wBody.setEditable( true ); props.setLook( wBody ); wBody.addModifyListener( lsMod ); fdBody = new FormData(); fdBody.left = new FormAttachment( middle, 0 ); fdBody.top = new FormAttachment( wMethodField, 2 * margin ); fdBody.right = new FormAttachment( 100, -margin ); wBody.setLayoutData( fdBody ); wBody.addFocusListener( new FocusListener() { public void focusLost( org.eclipse.swt.events.FocusEvent e ) { } public void focusGained( org.eclipse.swt.events.FocusEvent e ) { Cursor busy = new Cursor( shell.getDisplay(), SWT.CURSOR_WAIT ); shell.setCursor( busy ); setStreamFields(); shell.setCursor( null ); busy.dispose(); } } ); // ApplicationType Line wlApplicationType = new Label( gSettings, SWT.RIGHT ); wlApplicationType.setText( BaseMessages.getString( PKG, "RestDialog.ApplicationType.Label" ) ); props.setLook( wlApplicationType ); fdlApplicationType = new FormData(); fdlApplicationType.left = new FormAttachment( 0, 0 ); fdlApplicationType.right = new FormAttachment( middle, -margin ); fdlApplicationType.top = new FormAttachment( wBody, 2 * margin ); wlApplicationType.setLayoutData( fdlApplicationType ); wApplicationType = new ComboVar( transMeta, gSettings, SWT.BORDER | SWT.READ_ONLY ); wApplicationType.setEditable( true ); props.setLook( wApplicationType ); wApplicationType.addModifyListener( lsMod ); fdApplicationType = new FormData(); fdApplicationType.left = new FormAttachment( middle, 0 ); fdApplicationType.top = new FormAttachment( wBody, 2 * margin ); fdApplicationType.right = new FormAttachment( 100, -margin ); wApplicationType.setLayoutData( fdApplicationType ); wApplicationType.setItems( RestMeta.APPLICATION_TYPES ); wApplicationType.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent e ) { input.setChanged(); } } ); FormData fdSettings = new FormData(); fdSettings.left = new FormAttachment( 0, 0 ); fdSettings.right = new FormAttachment( 100, 0 ); fdSettings.top = new FormAttachment( wStepname, margin ); gSettings.setLayoutData( fdSettings ); // END Output Settings GROUP // //////////////////////// // //////////////////////// // START Output Fields GROUP Group gOutputFields = new Group( wGeneralComp, SWT.SHADOW_ETCHED_IN ); gOutputFields.setText( BaseMessages.getString( PKG, "RestDialog.OutputFieldsGroup.Label" ) ); FormLayout OutputFieldsLayout = new FormLayout(); OutputFieldsLayout.marginWidth = 3; OutputFieldsLayout.marginHeight = 3; gOutputFields.setLayout( OutputFieldsLayout ); props.setLook( gOutputFields ); // Result line... wlResult = new Label( gOutputFields, SWT.RIGHT ); wlResult.setText( BaseMessages.getString( PKG, "RestDialog.Result.Label" ) ); props.setLook( wlResult ); fdlResult = new FormData(); fdlResult.left = new FormAttachment( 0, 0 ); fdlResult.right = new FormAttachment( middle, -margin ); fdlResult.top = new FormAttachment( gSettings, margin ); wlResult.setLayoutData( fdlResult ); wResult = new TextVar( transMeta, gOutputFields, SWT.SINGLE | SWT.LEFT | SWT.BORDER ); props.setLook( wResult ); wResult.addModifyListener( lsMod ); fdResult = new FormData(); fdResult.left = new FormAttachment( middle, 0 ); fdResult.top = new FormAttachment( gSettings, margin * 2 ); fdResult.right = new FormAttachment( 100, -margin ); wResult.setLayoutData( fdResult ); // Resultcode line... wlResultCode = new Label( gOutputFields, SWT.RIGHT ); wlResultCode.setText( BaseMessages.getString( PKG, "RestDialog.ResultCode.Label" ) ); props.setLook( wlResultCode ); fdlResultCode = new FormData(); fdlResultCode.left = new FormAttachment( 0, 0 ); fdlResultCode.right = new FormAttachment( middle, -margin ); fdlResultCode.top = new FormAttachment( wResult, margin ); wlResultCode.setLayoutData( fdlResultCode ); wResultCode = new TextVar( transMeta, gOutputFields, SWT.SINGLE | SWT.LEFT | SWT.BORDER ); props.setLook( wResultCode ); wResultCode.addModifyListener( lsMod ); fdResultCode = new FormData(); fdResultCode.left = new FormAttachment( middle, 0 ); fdResultCode.top = new FormAttachment( wResult, margin ); fdResultCode.right = new FormAttachment( 100, -margin ); wResultCode.setLayoutData( fdResultCode ); // Response time line... wlResponseTime = new Label( gOutputFields, SWT.RIGHT ); wlResponseTime.setText( BaseMessages.getString( PKG, "RestDialog.ResponseTime.Label" ) ); props.setLook( wlResponseTime ); fdlResponseTime = new FormData(); fdlResponseTime.left = new FormAttachment( 0, 0 ); fdlResponseTime.right = new FormAttachment( middle, -margin ); fdlResponseTime.top = new FormAttachment( wResultCode, margin ); wlResponseTime.setLayoutData( fdlResponseTime ); wResponseTime = new TextVar( transMeta, gOutputFields, SWT.SINGLE | SWT.LEFT | SWT.BORDER ); props.setLook( wResponseTime ); wResponseTime.addModifyListener( lsMod ); fdResponseTime = new FormData(); fdResponseTime.left = new FormAttachment( middle, 0 ); fdResponseTime.top = new FormAttachment( wResultCode, margin ); fdResponseTime.right = new FormAttachment( 100, 0 ); wResponseTime.setLayoutData( fdResponseTime ); // Response header line... wlResponseHeader = new Label( gOutputFields, SWT.RIGHT ); wlResponseHeader.setText( BaseMessages.getString( PKG, "RestDialog.ResponseHeader.Label" ) ); props.setLook( wlResponseHeader ); fdlResponseHeader = new FormData(); fdlResponseHeader.left = new FormAttachment( 0, 0 ); fdlResponseHeader.right = new FormAttachment( middle, -margin ); fdlResponseHeader.top = new FormAttachment( wResponseTime, margin ); wlResponseHeader.setLayoutData( fdlResponseHeader ); wResponseHeader = new TextVar( transMeta, gOutputFields, SWT.SINGLE | SWT.LEFT | SWT.BORDER ); props.setLook( wResponseHeader ); wResponseHeader.addModifyListener( lsMod ); fdResponseHeader = new FormData(); fdResponseHeader.left = new FormAttachment( middle, 0 ); fdResponseHeader.top = new FormAttachment( wResponseTime, margin ); fdResponseHeader.right = new FormAttachment( 100, 0 ); wResponseHeader.setLayoutData( fdResponseHeader ); FormData fdOutputFields = new FormData(); fdOutputFields.left = new FormAttachment( 0, 0 ); fdOutputFields.right = new FormAttachment( 100, 0 ); fdOutputFields.top = new FormAttachment( gSettings, margin ); gOutputFields.setLayoutData( fdOutputFields ); // END Output Fields GROUP // //////////////////////// fdGeneralComp = new FormData(); fdGeneralComp.left = new FormAttachment( 0, 0 ); fdGeneralComp.top = new FormAttachment( wStepname, margin ); fdGeneralComp.right = new FormAttachment( 100, 0 ); fdGeneralComp.bottom = new FormAttachment( 100, 0 ); wGeneralComp.setLayoutData( fdGeneralComp ); wGeneralComp.layout(); wGeneralTab.setControl( wGeneralComp ); // /////////////////////////////////////////////////////////// // / END OF GENERAL TAB // /////////////////////////////////////////////////////////// // Auth tab... // wAuthTab = new CTabItem( wTabFolder, SWT.NONE ); wAuthTab.setText( BaseMessages.getString( PKG, "RestDialog.Auth.Title" ) ); FormLayout alayout = new FormLayout(); alayout.marginWidth = Const.FORM_MARGIN; alayout.marginHeight = Const.FORM_MARGIN; wAuthComp = new Composite( wTabFolder, SWT.NONE ); wAuthComp.setLayout( alayout ); props.setLook( wAuthComp ); // //////////////////////// // START HTTP AUTH GROUP Group gHttpAuth = new Group( wAuthComp, SWT.SHADOW_ETCHED_IN ); gHttpAuth.setText( BaseMessages.getString( PKG, "RestDialog.HttpAuthGroup.Label" ) ); FormLayout httpAuthLayout = new FormLayout(); httpAuthLayout.marginWidth = 3; httpAuthLayout.marginHeight = 3; gHttpAuth.setLayout( httpAuthLayout ); props.setLook( gHttpAuth ); // HTTP Login wlHttpLogin = new Label( gHttpAuth, SWT.RIGHT ); wlHttpLogin.setText( BaseMessages.getString( PKG, "RestDialog.HttpLogin.Label" ) ); props.setLook( wlHttpLogin ); FormData fdlHttpLogin = new FormData(); fdlHttpLogin.top = new FormAttachment( 0, margin ); fdlHttpLogin.left = new FormAttachment( 0, 0 ); fdlHttpLogin.right = new FormAttachment( middle, -margin ); wlHttpLogin.setLayoutData( fdlHttpLogin ); wHttpLogin = new TextVar( transMeta, gHttpAuth, SWT.SINGLE | SWT.LEFT | SWT.BORDER ); wHttpLogin.addModifyListener( lsMod ); wHttpLogin.setToolTipText( BaseMessages.getString( PKG, "RestDialog.HttpLogin.Tooltip" ) ); props.setLook( wHttpLogin ); FormData fdHttpLogin = new FormData(); fdHttpLogin.top = new FormAttachment( 0, margin ); fdHttpLogin.left = new FormAttachment( middle, 0 ); fdHttpLogin.right = new FormAttachment( 100, 0 ); wHttpLogin.setLayoutData( fdHttpLogin ); // HTTP Password wlHttpPassword = new Label( gHttpAuth, SWT.RIGHT ); wlHttpPassword.setText( BaseMessages.getString( PKG, "RestDialog.HttpPassword.Label" ) ); props.setLook( wlHttpPassword ); FormData fdlHttpPassword = new FormData(); fdlHttpPassword.top = new FormAttachment( wHttpLogin, margin ); fdlHttpPassword.left = new FormAttachment( 0, 0 ); fdlHttpPassword.right = new FormAttachment( middle, -margin ); wlHttpPassword.setLayoutData( fdlHttpPassword ); wHttpPassword = new PasswordTextVar( transMeta, gHttpAuth, SWT.SINGLE | SWT.LEFT | SWT.BORDER ); wHttpPassword.addModifyListener( lsMod ); wHttpPassword.setToolTipText( BaseMessages.getString( PKG, "RestDialog.HttpPassword.Tooltip" ) ); props.setLook( wHttpPassword ); FormData fdHttpPassword = new FormData(); fdHttpPassword.top = new FormAttachment( wHttpLogin, margin ); fdHttpPassword.left = new FormAttachment( middle, 0 ); fdHttpPassword.right = new FormAttachment( 100, 0 ); wHttpPassword.setLayoutData( fdHttpPassword ); // Preemptive line wlPreemptive = new Label( gHttpAuth, SWT.RIGHT ); wlPreemptive.setText( BaseMessages.getString( PKG, "RestDialog.Preemptive.Label" ) ); props.setLook( wlPreemptive ); fdlPreemptive = new FormData(); fdlPreemptive.left = new FormAttachment( 0, 0 ); fdlPreemptive.top = new FormAttachment( wHttpPassword, margin ); fdlPreemptive.right = new FormAttachment( middle, -margin ); wlPreemptive.setLayoutData( fdlPreemptive ); wPreemptive = new Button( gHttpAuth, SWT.CHECK ); props.setLook( wPreemptive ); fdPreemptive = new FormData(); fdPreemptive.left = new FormAttachment( middle, 0 ); fdPreemptive.top = new FormAttachment( wHttpPassword, margin ); fdPreemptive.right = new FormAttachment( 100, 0 ); wPreemptive.setLayoutData( fdPreemptive ); wPreemptive.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent e ) { input.setChanged(); } } ); FormData fdHttpAuth = new FormData(); fdHttpAuth.left = new FormAttachment( 0, 0 ); fdHttpAuth.right = new FormAttachment( 100, 0 ); fdHttpAuth.top = new FormAttachment( gOutputFields, margin ); gHttpAuth.setLayoutData( fdHttpAuth ); // END HTTP AUTH GROUP // //////////////////////// // //////////////////////// // START PROXY GROUP Group gProxy = new Group( wAuthComp, SWT.SHADOW_ETCHED_IN ); gProxy.setText( BaseMessages.getString( PKG, "RestDialog.ProxyGroup.Label" ) ); FormLayout proxyLayout = new FormLayout(); proxyLayout.marginWidth = 3; proxyLayout.marginHeight = 3; gProxy.setLayout( proxyLayout ); props.setLook( gProxy ); // HTTP Login wlProxyHost = new Label( gProxy, SWT.RIGHT ); wlProxyHost.setText( BaseMessages.getString( PKG, "RestDialog.ProxyHost.Label" ) ); props.setLook( wlProxyHost ); FormData fdlProxyHost = new FormData(); fdlProxyHost.top = new FormAttachment( 0, margin ); fdlProxyHost.left = new FormAttachment( 0, 0 ); fdlProxyHost.right = new FormAttachment( middle, -margin ); wlProxyHost.setLayoutData( fdlProxyHost ); wProxyHost = new TextVar( transMeta, gProxy, SWT.SINGLE | SWT.LEFT | SWT.BORDER ); wProxyHost.addModifyListener( lsMod ); wProxyHost.setToolTipText( BaseMessages.getString( PKG, "RestDialog.ProxyHost.Tooltip" ) ); props.setLook( wProxyHost ); FormData fdProxyHost = new FormData(); fdProxyHost.top = new FormAttachment( 0, margin ); fdProxyHost.left = new FormAttachment( middle, 0 ); fdProxyHost.right = new FormAttachment( 100, 0 ); wProxyHost.setLayoutData( fdProxyHost ); // HTTP Password wlProxyPort = new Label( gProxy, SWT.RIGHT ); wlProxyPort.setText( BaseMessages.getString( PKG, "RestDialog.ProxyPort.Label" ) ); props.setLook( wlProxyPort ); FormData fdlProxyPort = new FormData(); fdlProxyPort.top = new FormAttachment( wProxyHost, margin ); fdlProxyPort.left = new FormAttachment( 0, 0 ); fdlProxyPort.right = new FormAttachment( middle, -margin ); wlProxyPort.setLayoutData( fdlProxyPort ); wProxyPort = new TextVar( transMeta, gProxy, SWT.SINGLE | SWT.LEFT | SWT.BORDER ); wProxyPort.addModifyListener( lsMod ); wProxyPort.setToolTipText( BaseMessages.getString( PKG, "RestDialog.ProxyPort.Tooltip" ) ); props.setLook( wProxyPort ); FormData fdProxyPort = new FormData(); fdProxyPort.top = new FormAttachment( wProxyHost, margin ); fdProxyPort.left = new FormAttachment( middle, 0 ); fdProxyPort.right = new FormAttachment( 100, 0 ); wProxyPort.setLayoutData( fdProxyPort ); FormData fdProxy = new FormData(); fdProxy.left = new FormAttachment( 0, 0 ); fdProxy.right = new FormAttachment( 100, 0 ); fdProxy.top = new FormAttachment( gHttpAuth, margin ); gProxy.setLayoutData( fdProxy ); // END HTTP AUTH GROUP // //////////////////////// fdAuthComp = new FormData(); fdAuthComp.left = new FormAttachment( 0, 0 ); fdAuthComp.top = new FormAttachment( wStepname, margin ); fdAuthComp.right = new FormAttachment( 100, 0 ); fdAuthComp.bottom = new FormAttachment( 100, 0 ); wAuthComp.setLayoutData( fdAuthComp ); wAuthComp.layout(); wAuthTab.setControl( wAuthComp ); // ////// END of Auth Tab // SSL tab... // wSSLTab = new CTabItem( wTabFolder, SWT.NONE ); wSSLTab.setText( BaseMessages.getString( PKG, "RestDialog.SSL.Title" ) ); FormLayout ssll = new FormLayout(); ssll.marginWidth = Const.FORM_MARGIN; ssll.marginHeight = Const.FORM_MARGIN; wSSLComp = new Composite( wTabFolder, SWT.NONE ); wSSLComp.setLayout( ssll ); props.setLook( wSSLComp ); // //////////////////////// // START SSLTrustStore GROUP Group gSSLTrustStore = new Group( wSSLComp, SWT.SHADOW_ETCHED_IN ); gSSLTrustStore.setText( BaseMessages.getString( PKG, "RestDialog.SSLTrustStoreGroup.Label" ) ); FormLayout SSLTrustStoreLayout = new FormLayout(); SSLTrustStoreLayout.marginWidth = 3; SSLTrustStoreLayout.marginHeight = 3; gSSLTrustStore.setLayout( SSLTrustStoreLayout ); props.setLook( gSSLTrustStore ); // TrustStoreFile line wlTrustStoreFile = new Label( gSSLTrustStore, SWT.RIGHT ); wlTrustStoreFile.setText( BaseMessages.getString( PKG, "RestDialog.TrustStoreFile.Label" ) ); props.setLook( wlTrustStoreFile ); fdlTrustStoreFile = new FormData(); fdlTrustStoreFile.left = new FormAttachment( 0, 0 ); fdlTrustStoreFile.top = new FormAttachment( 0, margin ); fdlTrustStoreFile.right = new FormAttachment( middle, -margin ); wlTrustStoreFile.setLayoutData( fdlTrustStoreFile ); wbTrustStoreFile = new Button( gSSLTrustStore, SWT.PUSH | SWT.CENTER ); props.setLook( wbTrustStoreFile ); wbTrustStoreFile.setText( BaseMessages.getString( PKG, "System.Button.Browse" ) ); fdbTrustStoreFile = new FormData(); fdbTrustStoreFile.right = new FormAttachment( 100, 0 ); fdbTrustStoreFile.top = new FormAttachment( 0, 0 ); wbTrustStoreFile.setLayoutData( fdbTrustStoreFile ); wbTrustStoreFile.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent e ) { FileDialog dialog = new FileDialog( shell, SWT.SAVE ); dialog.setFilterExtensions( new String[] { "*.*" } ); if ( wTrustStoreFile.getText() != null ) { dialog.setFileName( transMeta.environmentSubstitute( wTrustStoreFile.getText() ) ); } dialog.setFilterNames( new String[] { BaseMessages.getString( PKG, "System.FileType.AllFiles" ) } ); if ( dialog.open() != null ) { wTrustStoreFile.setText( dialog.getFilterPath() + System.getProperty( "file.separator" ) + dialog.getFileName() ); } } } ); wTrustStoreFile = new TextVar( transMeta, gSSLTrustStore, SWT.SINGLE | SWT.LEFT | SWT.BORDER ); props.setLook( wTrustStoreFile ); wTrustStoreFile.addModifyListener( lsMod ); fdTrustStoreFile = new FormData(); fdTrustStoreFile.left = new FormAttachment( middle, 0 ); fdTrustStoreFile.top = new FormAttachment( 0, margin ); fdTrustStoreFile.right = new FormAttachment( wbTrustStoreFile, -margin ); wTrustStoreFile.setLayoutData( fdTrustStoreFile ); // TrustStorePassword line wlTrustStorePassword = new Label( gSSLTrustStore, SWT.RIGHT ); wlTrustStorePassword.setText( BaseMessages.getString( PKG, "RestDialog.TrustStorePassword.Label" ) ); props.setLook( wlTrustStorePassword ); fdlTrustStorePassword = new FormData(); fdlTrustStorePassword.left = new FormAttachment( 0, 0 ); fdlTrustStorePassword.top = new FormAttachment( wbTrustStoreFile, margin ); fdlTrustStorePassword.right = new FormAttachment( middle, -margin ); wlTrustStorePassword.setLayoutData( fdlTrustStorePassword ); wTrustStorePassword = new PasswordTextVar( transMeta, gSSLTrustStore, SWT.SINGLE | SWT.LEFT | SWT.BORDER ); props.setLook( wTrustStorePassword ); wTrustStorePassword.addModifyListener( lsMod ); fdTrustStorePassword = new FormData(); fdTrustStorePassword.left = new FormAttachment( middle, 0 ); fdTrustStorePassword.top = new FormAttachment( wbTrustStoreFile, margin ); fdTrustStorePassword.right = new FormAttachment( 100, 0 ); wTrustStorePassword.setLayoutData( fdTrustStorePassword ); FormData fdSSLTrustStore = new FormData(); fdSSLTrustStore.left = new FormAttachment( 0, 0 ); fdSSLTrustStore.right = new FormAttachment( 100, 0 ); fdSSLTrustStore.top = new FormAttachment( gHttpAuth, margin ); gSSLTrustStore.setLayoutData( fdSSLTrustStore ); // END HTTP AUTH GROUP // //////////////////////// fdSSLComp = new FormData(); fdSSLComp.left = new FormAttachment( 0, 0 ); fdSSLComp.top = new FormAttachment( wStepname, margin ); fdSSLComp.right = new FormAttachment( 100, 0 ); fdSSLComp.bottom = new FormAttachment( 100, 0 ); wSSLComp.setLayoutData( fdSSLComp ); wSSLComp.layout(); wSSLTab.setControl( wSSLComp ); // ////// END of SSL Tab // Additional tab... // wAdditionalTab = new CTabItem( wTabFolder, SWT.NONE ); wAdditionalTab.setText( BaseMessages.getString( PKG, "RestDialog.Headers.Title" ) ); FormLayout addLayout = new FormLayout(); addLayout.marginWidth = Const.FORM_MARGIN; addLayout.marginHeight = Const.FORM_MARGIN; wAdditionalComp = new Composite( wTabFolder, SWT.NONE ); wAdditionalComp.setLayout( addLayout ); props.setLook( wAdditionalComp ); wlFields = new Label( wAdditionalComp, SWT.NONE ); wlFields.setText( BaseMessages.getString( PKG, "RestDialog.Headers.Label" ) ); props.setLook( wlFields ); fdlFields = new FormData(); fdlFields.left = new FormAttachment( 0, 0 ); fdlFields.top = new FormAttachment( wStepname, margin ); wlFields.setLayoutData( fdlFields ); wGetHeaders = new Button( wAdditionalComp, SWT.PUSH ); wGetHeaders.setText( BaseMessages.getString( PKG, "RestDialog.GetHeaders.Button" ) ); FormData fdGetHeaders = new FormData(); fdGetHeaders.top = new FormAttachment( wlFields, margin ); fdGetHeaders.right = new FormAttachment( 100, 0 ); wGetHeaders.setLayoutData( fdGetHeaders ); final int FieldsRows = input.getHeaderName().length; colinf = new ColumnInfo[] { new ColumnInfo( BaseMessages.getString( PKG, "RestDialog.ColumnInfo.Field" ), ColumnInfo.COLUMN_TYPE_CCOMBO, new String[] { "" }, false ), new ColumnInfo( BaseMessages.getString( PKG, "RestDialog.ColumnInfo.Name" ), ColumnInfo.COLUMN_TYPE_TEXT, false ) }; colinf[1].setUsingVariables( true ); wFields = new TableView( transMeta, wAdditionalComp, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI, colinf, FieldsRows, lsMod, props ); fdFields = new FormData(); fdFields.left = new FormAttachment( 0, 0 ); fdFields.top = new FormAttachment( wlFields, margin ); fdFields.right = new FormAttachment( wGetHeaders, -margin ); fdFields.bottom = new FormAttachment( 100, -margin ); wFields.setLayoutData( fdFields ); fdAdditionalComp = new FormData(); fdAdditionalComp.left = new FormAttachment( 0, 0 ); fdAdditionalComp.top = new FormAttachment( wStepname, margin ); fdAdditionalComp.right = new FormAttachment( 100, -margin ); fdAdditionalComp.bottom = new FormAttachment( 100, 0 ); wAdditionalComp.setLayoutData( fdAdditionalComp ); wAdditionalComp.layout(); wAdditionalTab.setControl( wAdditionalComp ); // ////// END of Additional Tab // Query Parameters tab... // wParametersTab = new CTabItem( wTabFolder, SWT.NONE ); wParametersTab.setText( BaseMessages.getString( PKG, "RestDialog.Parameters.Title" ) ); FormLayout playout = new FormLayout(); playout.marginWidth = Const.FORM_MARGIN; playout.marginHeight = Const.FORM_MARGIN; wParametersComp = new Composite( wTabFolder, SWT.NONE ); wParametersComp.setLayout( playout ); props.setLook( wParametersComp ); wlParameters = new Label( wParametersComp, SWT.NONE ); wlParameters.setText( BaseMessages.getString( PKG, "RestDialog.Parameters.Label" ) ); props.setLook( wlParameters ); fdlParameters = new FormData(); fdlParameters.left = new FormAttachment( 0, 0 ); fdlParameters.top = new FormAttachment( wStepname, margin ); wlParameters.setLayoutData( fdlParameters ); wGet = new Button( wParametersComp, SWT.PUSH ); wGet.setText( BaseMessages.getString( PKG, "RestDialog.GetParameters.Button" ) ); FormData fdGet = new FormData(); fdGet.top = new FormAttachment( wlParameters, margin ); fdGet.right = new FormAttachment( 100, 0 ); wGet.setLayoutData( fdGet ); final int ParametersRows = input.getParameterField().length; colinfoparams = new ColumnInfo[] { new ColumnInfo( BaseMessages.getString( PKG, "RestDialog.ColumnInfo.ParameterField" ), ColumnInfo.COLUMN_TYPE_CCOMBO, new String[] { "" }, false ), new ColumnInfo( BaseMessages.getString( PKG, "RestDialog.ColumnInfo.ParameterName" ), ColumnInfo.COLUMN_TYPE_TEXT, false ), }; wParameters = new TableView( transMeta, wParametersComp, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI, colinfoparams, ParametersRows, lsMod, props ); fdParameters = new FormData(); fdParameters.left = new FormAttachment( 0, 0 ); fdParameters.top = new FormAttachment( wlParameters, margin ); fdParameters.right = new FormAttachment( wGet, -margin ); fdParameters.bottom = new FormAttachment( 100, -margin ); wParameters.setLayoutData( fdParameters ); fdParametersComp = new FormData(); fdParametersComp.left = new FormAttachment( 0, 0 ); fdParametersComp.top = new FormAttachment( wStepname, margin ); fdParametersComp.right = new FormAttachment( 100, 0 ); fdParametersComp.bottom = new FormAttachment( 100, 0 ); wParametersComp.setLayoutData( fdParametersComp ); wParametersComp.layout(); wParametersTab.setControl( wParametersComp ); // ////// END of Query Parameters Tab // Matrix Parameters tab wMatrixParametersTab = new CTabItem( wTabFolder, SWT.NONE ); wMatrixParametersTab.setText( BaseMessages.getString( PKG, "RestDialog.MatrixParameters.Title" ) ); FormLayout pl = new FormLayout(); pl.marginWidth = Const.FORM_MARGIN; pl.marginHeight = Const.FORM_MARGIN; wMatrixParametersComp = new Composite( wTabFolder, SWT.NONE ); wMatrixParametersComp.setLayout( pl ); props.setLook( wMatrixParametersComp ); wlMatrixParameters = new Label( wMatrixParametersComp, SWT.NONE ); wlMatrixParameters.setText( BaseMessages.getString( PKG, "RestDialog.Parameters.Label" ) ); props.setLook( wlMatrixParameters ); fdlMatrixParameters = new FormData(); fdlMatrixParameters.left = new FormAttachment( 0, 0 ); fdlMatrixParameters.top = new FormAttachment( wStepname, margin ); wlMatrixParameters.setLayoutData( fdlMatrixParameters ); wMatrixGet = new Button( wMatrixParametersComp, SWT.PUSH ); wMatrixGet.setText( BaseMessages.getString( PKG, "RestDialog.GetParameters.Button" ) ); FormData fdMatrixGet = new FormData(); fdMatrixGet.top = new FormAttachment( wlMatrixParameters, margin ); fdMatrixGet.right = new FormAttachment( 100, 0 ); wMatrixGet.setLayoutData( fdMatrixGet ); int matrixParametersRows = input.getMatrixParameterField().length; colinfoparams = new ColumnInfo[] { new ColumnInfo( BaseMessages.getString( PKG, "RestDialog.ColumnInfo.ParameterField" ), ColumnInfo.COLUMN_TYPE_CCOMBO, new String[] { "" }, false ), new ColumnInfo( BaseMessages.getString( PKG, "RestDialog.ColumnInfo.ParameterName" ), ColumnInfo.COLUMN_TYPE_TEXT, false ), }; wMatrixParameters = new TableView( transMeta, wMatrixParametersComp, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI, colinfoparams, matrixParametersRows, lsMod, props ); fdMatrixParameters = new FormData(); fdMatrixParameters.left = new FormAttachment( 0, 0 ); fdMatrixParameters.top = new FormAttachment( wlMatrixParameters, margin ); fdMatrixParameters.right = new FormAttachment( wMatrixGet, -margin ); fdMatrixParameters.bottom = new FormAttachment( 100, -margin ); wMatrixParameters.setLayoutData( fdMatrixParameters ); fdMatrixParametersComp = new FormData(); fdMatrixParametersComp.left = new FormAttachment( 0, 0 ); fdMatrixParametersComp.top = new FormAttachment( wStepname, margin ); fdMatrixParametersComp.right = new FormAttachment( 100, 0 ); fdMatrixParametersComp.bottom = new FormAttachment( 100, 0 ); wMatrixParametersComp.setLayoutData( fdMatrixParametersComp ); wMatrixParametersComp.layout(); wMatrixParametersTab.setControl( wMatrixParametersComp ); //END of Matrix Parameters Tab fdTabFolder = new FormData(); fdTabFolder.left = new FormAttachment( 0, 0 ); fdTabFolder.top = new FormAttachment( wStepname, margin ); fdTabFolder.right = new FormAttachment( 100, 0 ); fdTabFolder.bottom = new FormAttachment( 100, -50 ); wTabFolder.setLayoutData( fdTabFolder ); // // Search the fields in the background // final Runnable runnable = new Runnable() { public void run() { StepMeta stepMeta = transMeta.findStep( stepname ); if ( stepMeta != null ) { try { RowMetaInterface row = transMeta.getPrevStepFields( stepMeta ); // Remember these fields... for ( int i = 0; i < row.size(); i++ ) { inputFields.put( row.getValueMeta( i ).getName(), Integer.valueOf( i ) ); } setComboBoxes(); } catch ( KettleException e ) { log.logError( toString(), BaseMessages.getString( PKG, "System.Dialog.GetFieldsFailed.Message" ) ); } } } }; new Thread( runnable ).start(); // THE BUTTONS wOK = new Button( shell, SWT.PUSH ); wOK.setText( BaseMessages.getString( PKG, "System.Button.OK" ) ); wCancel = new Button( shell, SWT.PUSH ); wCancel.setText( BaseMessages.getString( PKG, "System.Button.Cancel" ) ); setButtonPositions( new Button[] { wOK, wCancel }, margin, wTabFolder ); // Add listeners lsOK = new Listener() { public void handleEvent( Event e ) { ok(); } }; lsCancel = new Listener() { public void handleEvent( Event e ) { cancel(); } }; lsGet = new Listener() { public void handleEvent( Event e ) { getParametersFields( wParameters ); } }; lsMatrixGet = new Listener() { public void handleEvent( Event e ) { getParametersFields( wMatrixParameters ); } }; Listener lsGetHeaders = new Listener() { public void handleEvent( Event e ) { getHeaders(); } }; wOK.addListener( SWT.Selection, lsOK ); wGet.addListener( SWT.Selection, lsGet ); wMatrixGet.addListener( SWT.Selection, lsMatrixGet ); wGetHeaders.addListener( SWT.Selection, lsGetHeaders ); wCancel.addListener( SWT.Selection, lsCancel ); lsDef = new SelectionAdapter() { public void widgetDefaultSelected( SelectionEvent e ) { ok(); } }; wStepname.addSelectionListener( lsDef ); wUrl.addSelectionListener( lsDef ); wResult.addSelectionListener( lsDef ); wResultCode.addSelectionListener( lsDef ); wResponseTime.addSelectionListener( lsDef ); // Detect X or ALT-F4 or something that kills this window... shell.addShellListener( new ShellAdapter() { public void shellClosed( ShellEvent e ) { cancel(); } } ); lsResize = new Listener() { public void handleEvent( Event event ) { Point size = shell.getSize(); wFields.setSize( size.x - 10, size.y - 50 ); wFields.table.setSize( size.x - 10, size.y - 50 ); wFields.redraw(); } }; shell.addListener( SWT.Resize, lsResize ); // Set the shell size, based upon previous time... setSize(); wTabFolder.setSelection( 0 ); getData(); activeUrlInfield(); activeMethodInfield(); setMethod(); input.setChanged( changed ); shell.open(); while ( !shell.isDisposed() ) { if ( !display.readAndDispatch() ) { display.sleep(); } } return stepname; } private void setMethod() { boolean activateBody = RestMeta.isActiveBody( wMethod.getText() ); boolean activateParams = RestMeta.isActiveParameters( wMethod.getText() ); wlBody.setEnabled( activateBody ); wBody.setEnabled( activateBody ); wlParameters.setEnabled( activateParams ); wParameters.setEnabled( activateParams ); wGet.setEnabled( activateParams ); wlMatrixParameters.setEnabled( activateParams ); wMatrixParameters.setEnabled( activateParams ); wMatrixGet.setEnabled( activateParams ); } protected void setComboBoxes() { // Something was changed in the row. // final Map<String, Integer> fields = new HashMap<String, Integer>(); // Add the currentMeta fields... fields.putAll( inputFields ); Set<String> keySet = fields.keySet(); List<String> entries = new ArrayList<String>( keySet ); fieldNames = entries.toArray( new String[entries.size()] ); Const.sortStrings( fieldNames ); colinfoparams[0].setComboValues( fieldNames ); colinf[0].setComboValues( fieldNames ); } private void setStreamFields() { if ( !gotPreviousFields ) { String urlfield = wUrlField.getText(); String body = wBody.getText(); String method = wMethodField.getText(); wUrlField.removeAll(); wBody.removeAll(); wMethodField.removeAll(); try { if ( fieldNames != null ) { wUrlField.setItems( fieldNames ); wBody.setItems( fieldNames ); wMethodField.setItems( fieldNames ); } } finally { if ( urlfield != null ) { wUrlField.setText( urlfield ); } if ( body != null ) { wBody.setText( body ); } if ( method != null ) { wMethodField.setText( method ); } } gotPreviousFields = true; } } private void activeUrlInfield() { wlUrlField.setEnabled( wUrlInField.getSelection() ); wUrlField.setEnabled( wUrlInField.getSelection() ); wlUrl.setEnabled( !wUrlInField.getSelection() ); wUrl.setEnabled( !wUrlInField.getSelection() ); } /** * Copy information from the meta-data input to the dialog fields. */ public void getData() { if ( isDebug() ) { logDebug( BaseMessages.getString( PKG, "RestDialog.Log.GettingKeyInfo" ) ); } if ( input.getHeaderName() != null ) { for ( int i = 0; i < input.getHeaderName().length; i++ ) { TableItem item = wFields.table.getItem( i ); if ( input.getHeaderField()[i] != null ) { item.setText( 1, input.getHeaderField()[i] ); } if ( input.getHeaderName()[i] != null ) { item.setText( 2, input.getHeaderName()[i] ); } } } if ( input.getParameterField() != null ) { for ( int i = 0; i < input.getParameterField().length; i++ ) { TableItem item = wParameters.table.getItem( i ); if ( input.getParameterField()[i] != null ) { item.setText( 1, input.getParameterField()[i] ); } if ( input.getParameterName()[i] != null ) { item.setText( 2, input.getParameterName()[i] ); } } } if ( input.getMatrixParameterField() != null ) { for ( int i = 0; i < input.getMatrixParameterField().length; i++ ) { TableItem item = wMatrixParameters.table.getItem( i ); if ( input.getMatrixParameterField()[i] != null ) { item.setText( 1, input.getMatrixParameterField()[i] ); } if ( input.getMatrixParameterField()[i] != null ) { item.setText( 2, input.getMatrixParameterField()[i] ); } } } wMethod.setText( Const.NVL( input.getMethod(), RestMeta.HTTP_METHOD_GET ) ); wMethodInField.setSelection( input.isDynamicMethod() ); if ( input.getBodyField() != null ) { wBody.setText( input.getBodyField() ); } if ( input.getMethodFieldName() != null ) { wMethodField.setText( input.getMethodFieldName() ); } if ( input.getUrl() != null ) { wUrl.setText( input.getUrl() ); } wUrlInField.setSelection( input.isUrlInField() ); if ( input.getUrlField() != null ) { wUrlField.setText( input.getUrlField() ); } if ( input.getFieldName() != null ) { wResult.setText( input.getFieldName() ); } if ( input.getResultCodeFieldName() != null ) { wResultCode.setText( input.getResultCodeFieldName() ); } if ( input.getResponseTimeFieldName() != null ) { wResponseTime.setText( input.getResponseTimeFieldName() ); } if ( input.getHttpLogin() != null ) { wHttpLogin.setText( input.getHttpLogin() ); } if ( input.getHttpPassword() != null ) { wHttpPassword.setText( input.getHttpPassword() ); } if ( input.getProxyHost() != null ) { wProxyHost.setText( input.getProxyHost() ); } if ( input.getProxyPort() != null ) { wProxyPort.setText( input.getProxyPort() ); } wPreemptive.setSelection( input.isPreemptive() ); if ( input.getTrustStoreFile() != null ) { wTrustStoreFile.setText( input.getTrustStoreFile() ); } if ( input.getTrustStorePassword() != null ) { wTrustStorePassword.setText( input.getTrustStorePassword() ); } if ( input.getResponseHeaderFieldName() != null ) { wResponseHeader.setText( input.getResponseHeaderFieldName() ); } wApplicationType.setText( Const.NVL( input.getApplicationType(), "" ) ); wFields.setRowNums(); wFields.optWidth( true ); wStepname.selectAll(); wStepname.setFocus(); } private void cancel() { stepname = null; input.setChanged( changed ); dispose(); } private void ok() { if ( Utils.isEmpty( wStepname.getText() ) ) { return; } int nrheaders = wFields.nrNonEmpty(); int nrparams = wParameters.nrNonEmpty(); int nrmatrixparams = wMatrixParameters.nrNonEmpty(); input.allocate( nrheaders, nrparams, nrmatrixparams ); if ( isDebug() ) { logDebug( BaseMessages.getString( PKG, "RestDialog.Log.FoundArguments", String.valueOf( nrheaders ) ) ); } //CHECKSTYLE:Indentation:OFF for ( int i = 0; i < nrheaders; i++ ) { TableItem item = wFields.getNonEmpty( i ); input.getHeaderField()[i] = item.getText( 1 ); input.getHeaderName()[i] = item.getText( 2 ); } //CHECKSTYLE:Indentation:OFF for ( int i = 0; i < nrparams; i++ ) { TableItem item = wParameters.getNonEmpty( i ); input.getParameterField()[i] = item.getText( 1 ); input.getParameterName()[i] = item.getText( 2 ); } //CHECKSTYLE:Indentation:OFF for ( int i = 0; i < nrmatrixparams; i++ ) { TableItem item = wMatrixParameters.getNonEmpty( i ); input.getMatrixParameterField()[i] = item.getText( 1 ); input.getMatrixParameterName()[i] = item.getText( 2 ); } input.setDynamicMethod( wMethodInField.getSelection() ); input.setMethodFieldName( wMethodField.getText() ); input.setMethod( wMethod.getText() ); input.setUrl( wUrl.getText() ); input.setUrlField( wUrlField.getText() ); input.setUrlInField( wUrlInField.getSelection() ); input.setBodyField( wBody.getText() ); input.setFieldName( wResult.getText() ); input.setResultCodeFieldName( wResultCode.getText() ); input.setResponseTimeFieldName( wResponseTime.getText() ); input.setResponseHeaderFieldName( wResponseHeader.getText() ); input.setHttpLogin( wHttpLogin.getText() ); input.setHttpPassword( wHttpPassword.getText() ); input.setProxyHost( wProxyHost.getText() ); input.setProxyPort( wProxyPort.getText() ); input.setPreemptive( wPreemptive.getSelection() ); input.setTrustStoreFile( wTrustStoreFile.getText() ); input.setTrustStorePassword( wTrustStorePassword.getText() ); input.setApplicationType( wApplicationType.getText() ); stepname = wStepname.getText(); // return value dispose(); } private void getParametersFields( TableView tView ) { try { RowMetaInterface r = transMeta.getPrevStepFields( stepname ); if ( r != null && !r.isEmpty() ) { BaseStepDialog .getFieldsFromPrevious( r, tView, 1, new int[] { 1, 2 }, new int[] { 3 }, -1, -1, null ); } } catch ( KettleException ke ) { new ErrorDialog( shell, BaseMessages.getString( PKG, "RestDialog.FailedToGetFields.DialogTitle" ), BaseMessages .getString( PKG, "RestDialog.FailedToGetFields.DialogMessage" ), ke ); } } private void getHeaders() { try { RowMetaInterface r = transMeta.getPrevStepFields( stepname ); if ( r != null && !r.isEmpty() ) { BaseStepDialog.getFieldsFromPrevious( r, wFields, 1, new int[] { 1, 2 }, new int[] { 3 }, -1, -1, null ); } } catch ( KettleException ke ) { new ErrorDialog( shell, BaseMessages.getString( PKG, "RestDialog.FailedToGetHeaders.DialogTitle" ), BaseMessages .getString( PKG, "RestDialog.FailedToGetHeaders.DialogMessage" ), ke ); } } private void activeMethodInfield() { wlMethod.setEnabled( !wMethodInField.getSelection() ); wMethod.setEnabled( !wMethodInField.getSelection() ); wlMethodField.setEnabled( wMethodInField.getSelection() ); wMethodField.setEnabled( wMethodInField.getSelection() ); } }