CheckIN:Fix bugzilla bug 189254
diff --git a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/META-INF/MANIFEST.MF
index 427b605..5384f27 100644
--- a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.datatools.enablement.oda.ws.ui; singleton:=true
-Bundle-Version: 1.0.0.200705291
+Bundle-Version: 1.0.0.200705301
Bundle-Activator: org.eclipse.datatools.enablement.oda.ws.ui.Activator
Bundle-Vendor: Eclipse.org
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/plugin.xml b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/plugin.xml
index dc39fda..5a2510f 100644
--- a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/plugin.xml
+++ b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/plugin.xml
@@ -27,6 +27,11 @@
wizardPageClass="org.eclipse.datatools.enablement.oda.ws.ui.wizards.OperationPage">
</dataSetPage>
<dataSetPage
+ displayName="%oda.ws.soapparameters"
+ id="org.eclipse.datatools.enablement.oda.ws.ui.SOAPParametersPage"
+ wizardPageClass="org.eclipse.datatools.enablement.oda.ws.ui.wizards.SOAPParametersPage">
+ </dataSetPage>
+ <dataSetPage
displayName="%oda.ws.soaprequest"
id="org.eclipse.datatools.enablement.oda.ws.ui.SOAPRequestPage"
wizardPageClass="org.eclipse.datatools.enablement.oda.ws.ui.wizards.SOAPRequestPage">
diff --git a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/i18n/messages.properties b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/i18n/messages.properties
index e89f7100..cede08f 100644
--- a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/i18n/messages.properties
+++ b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/i18n/messages.properties
@@ -31,7 +31,8 @@
# OperationPage
operationPage.message.default=Select an operation defined in the data source's WSDL descriptor
-operationPage.message.operationChanged=Operation has been changed, make sure to regenerate the SOAP request and reconnect the end point
+operationPage.message.operationChanged=Confrim to regenerate the SOAP request and reconnect the End Point
+operationPage.title.operationChanged=Operation Changed
operationPage.label.selectOpearation=Selected Operation
operationPage.label.document=Documentation
@@ -40,9 +41,9 @@
# SoapRequestPage
soapRequestPage.message.default=Edit the SOAP request template of this data set. You may leave the text empty if your data source's custom connecion class code does not require a query text
-soapRequestPage.message.generateTemplate=This will regenerate the query text template based on the SOAP operation you have selected. It will remove any modifications you have made to the text.\n\nAre you sure?
-soapRequestPage.title.generateTemplate=Regenerate Template
-soapRequestPage.button.generateTemplate=&Regenerate Template
+soapRequestPage.message.regenerateTemplate=This will regenerate the query text template based on the SOAP operation you have selected. It will remove any modifications you have made to the text.\n\nAre you sure?
+soapRequestPage.title.regenerateTemplate=Regenerate Template
+soapRequestPage.button.regenerateTemplate=&Regenerate Template
soapRequestPage.button.insertParameter=&Insert Parameter...
soapRequestPage.button.clear=&Clear
diff --git a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/util/WSConsole.java b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/util/WSConsole.java
index 9594260..6959c2d 100644
--- a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/util/WSConsole.java
+++ b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/util/WSConsole.java
@@ -493,9 +493,12 @@
for ( int i = 0; i < parameters.length; i++ )
{
// apply name & defaultValue
- ParameterDefinition paramDef = (ParameterDefinition) parameterDefinitions.get( i );
- paramDef.getAttributes( ).setName( parameters[i].getName( ) );
- paramDef.setDefaultScalarValue( parameters[i].getDefaultValue( ) );
+ if ( !WSUIUtil.isNull( parameters[i] ) )
+ {
+ ParameterDefinition paramDef = (ParameterDefinition) parameterDefinitions.get( i );
+ paramDef.getAttributes( ).setName( parameters[i].getName( ) );
+ paramDef.setDefaultScalarValue( parameters[i].getDefaultValue( ) );
+ }
}
}
@@ -511,4 +514,18 @@
return true;
}
+ /**
+ *
+ * @param queryText
+ * @param params
+ * @return
+ */
+ public String manipulateTemplate( )
+ {
+ SOAPRequest soapRequest = new SOAPRequest( getPropertyValue( Constants.WS_QUERYTEXT ) );
+ soapRequest.setParameters( parameters );
+
+ return soapRequest.manipulateQuery( );
+ }
+
}
diff --git a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/util/WSUIUtil.java b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/util/WSUIUtil.java
index 7953659..150937d 100644
--- a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/util/WSUIUtil.java
+++ b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/util/WSUIUtil.java
@@ -88,6 +88,9 @@
*/
public static void savePage( DataSetDesign dataSetDesign )
{
+ if ( !WSConsole.getInstance( ).isSessionOK( ) )
+ return;
+
IConnection conn = null;
try
{
@@ -131,8 +134,9 @@
{
for ( int i = 0; i < soapParameters.length; i++ )
{
- query.setString( soapParameters[i].getId( ),
- soapParameters[i].getDefaultValue( ) );
+ if ( !isNull( soapParameters[i] ) )
+ query.setString( soapParameters[i].getId( ),
+ soapParameters[i].getDefaultValue( ) );
}
}
diff --git a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/OperationPage.java b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/OperationPage.java
index 7e3dda5..ea980ca 100644
--- a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/OperationPage.java
+++ b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/OperationPage.java
@@ -20,6 +20,7 @@
import javax.wsdl.Port;
import javax.wsdl.Service;
+import org.eclipse.datatools.connectivity.oda.OdaException;
import org.eclipse.datatools.connectivity.oda.design.DataSetDesign;
import org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizardPage;
import org.eclipse.datatools.enablement.oda.ws.ui.Activator;
@@ -28,6 +29,7 @@
import org.eclipse.datatools.enablement.oda.ws.ui.util.WSConsole;
import org.eclipse.datatools.enablement.oda.ws.ui.util.WSUIUtil;
import org.eclipse.datatools.enablement.oda.ws.util.WSDLAdvisor;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
@@ -57,6 +59,7 @@
private String operationTrace = WSUIUtil.EMPTY_STRING;
private String initOperationTrace = WSUIUtil.EMPTY_STRING;
private String wsdlURI = WSUIUtil.EMPTY_STRING;
+ private String wsQuery = WSUIUtil.EMPTY_STRING;
private Image wsdlImage;
private Image serviceImage;
@@ -138,7 +141,6 @@
public void widgetSelected( SelectionEvent event )
{
handle( );
- testDirty( );
}
private void handle( )
@@ -161,17 +163,6 @@
}
}
- private void testDirty( )
- {
- if ( !WSUIUtil.isNull( initOperationTrace )
- && !initOperationTrace.equals( operationTrace ) )
- setMessage( Messages.getString( "operationPage.message.operationChanged" ), //$NON-NLS-1$
- INFORMATION );
-
- else
- setMessage( DEFAULT_MESSAGE );
- }
-
} );
}
@@ -367,7 +358,7 @@
{
initFromModel( );
populateTree( );
-
+
setMessage( DEFAULT_MESSAGE );
}
@@ -379,9 +370,48 @@
protected boolean canLeave( )
{
saveToModle( );
+ testDirty( );
+
return super.canLeave( );
}
+ private void testDirty( )
+ {
+ if ( !WSUIUtil.isNull( initOperationTrace )
+ && !initOperationTrace.equals( operationTrace ) )
+ if ( MessageDialog.openConfirm( null,
+ Messages.getString( "operationPage.title.operationChanged" ), Messages.getString( "operationPage.message.operationChanged" ) ) )//$NON-NLS-1$ //$NON-NLS-2$
+ {
+ regenerateTemplate( );
+ try
+ {
+ WSConsole.getInstance( ).createXMLTempFileURI( );
+ }
+ catch ( OdaException e )
+ {
+ }
+ }
+ }
+
+ private void regenerateTemplate( )
+ {
+ wsQuery = WSUIUtil.getNonNullString( WSConsole.getInstance( )
+ .getTemplate( ) );
+ if ( !WSUIUtil.isNull( wsQuery ) )
+ WSConsole.getInstance( ).setPropertyValue( Constants.WS_QUERYTEXT,
+ wsQuery );
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage()
+ */
+ public boolean canFlipToNextPage( )
+ {
+ return isPageComplete( );
+ }
+
/*
* (non-Javadoc)
*
@@ -392,8 +422,8 @@
saveToModle( );
IWizardPage page = super.getNextPage( );
- if ( page instanceof SOAPRequestPage )
- ( (SOAPRequestPage) page ).refresh( );
+ if ( page instanceof SOAPParametersPage )
+ ( (SOAPParametersPage) page ).refresh( );
return page;
}
diff --git a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/SOAPParametersPage.java b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/SOAPParametersPage.java
new file mode 100644
index 0000000..59565b8
--- /dev/null
+++ b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/SOAPParametersPage.java
@@ -0,0 +1,436 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2005 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Actuate Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.datatools.enablement.oda.ws.ui.wizards;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.datatools.connectivity.oda.design.DataSetDesign;
+import org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizardPage;
+import org.eclipse.datatools.enablement.oda.ws.soap.SOAPParameter;
+import org.eclipse.datatools.enablement.oda.ws.soap.SOAPRequest;
+import org.eclipse.datatools.enablement.oda.ws.ui.i18n.Messages;
+import org.eclipse.datatools.enablement.oda.ws.ui.util.Constants;
+import org.eclipse.datatools.enablement.oda.ws.ui.util.WSConsole;
+import org.eclipse.datatools.enablement.oda.ws.ui.util.WSUIUtil;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+
+/**
+ *
+ */
+
+public class SOAPParametersPage extends DataSetWizardPage
+{
+
+ private static final String COLUMN_NAME = Messages.getString( "parameterInputDialog.column.name" );//$NON-NLS-1$
+ private static final String COLUMN_DATATYPE = Messages.getString( "parameterInputDialog.column.type" );//$NON-NLS-1$
+ private static final String COLUMN_DEFAULTVALUE = Messages.getString( "parameterInputDialog.column.defaultValue" );//$NON-NLS-1$
+
+ private CheckboxTableViewer viewer;
+ private SOAPRequest soapRequest;
+ private String wsQueryText;
+ // parameters for page, different from soapParameters
+ private SOAPParameter[] parameters;
+ private static String DEFAULT_MESSAGE = Messages.getString( "soapParametersPage.message.default" );//$NON-NLS-1$
+
+ public SOAPParametersPage( String pageName )
+ {
+ super( pageName );
+ setMessage( DEFAULT_MESSAGE );
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizardPage#createPageCustomControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createPageCustomControl( Composite parent )
+ {
+ setControl( createPageControl( parent ) );
+ initializeControl( );
+ }
+
+ /**
+ * Creates custom control for user-defined query text.
+ */
+ private Control createPageControl( Composite parent )
+ {
+ Composite composite = new Composite( parent, SWT.NONE );
+ GridLayout layout = new GridLayout( 1, false );
+ composite.setLayout( layout );
+ GridData layoutData = new GridData( GridData.HORIZONTAL_ALIGN_FILL
+ | GridData.VERTICAL_ALIGN_FILL );
+ composite.setLayoutData( layoutData );
+
+ setupParametersComposite( composite );
+
+ return composite;
+ }
+
+ private void setupParametersComposite( Composite parent )
+ {
+ createCheckboxTable( parent );
+ setupEditors( );
+ }
+
+ private void createCheckboxTable( Composite parent )
+ {
+ final Table table = new Table( parent, SWT.CHECK
+ | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL
+ | SWT.V_SCROLL );
+ TableLayout tableLayout = new TableLayout( );
+ table.setLayout( tableLayout );
+ GridData layouData = new GridData( GridData.FILL_BOTH );
+ table.setLayoutData( layouData );
+
+ table.setHeaderVisible( true );
+ table.setLinesVisible( true );
+
+ TableColumn column0 = new TableColumn( table, SWT.NONE );
+ column0.setText( COLUMN_NAME );
+ column0.setWidth( 200 );
+
+ TableColumn column1 = new TableColumn( table, SWT.NONE );
+ column1.setText( COLUMN_DATATYPE );
+ column1.setWidth( 200 );
+
+ TableColumn column2 = new TableColumn( table, SWT.NONE );
+ column2.setText( COLUMN_DEFAULTVALUE );
+ column2.setWidth( 200 );
+
+ viewer = new CheckboxTableViewer( table );
+ viewer.setContentProvider( new IStructuredContentProvider( ) {
+
+ public Object[] getElements( Object inputElement )
+ {
+ if ( inputElement == null
+ || !( inputElement instanceof SOAPParameter[] ) )
+ return new Object[0];
+
+ return (SOAPParameter[]) inputElement;
+ }
+
+ public void inputChanged( Viewer viewer, Object oldInput,
+ Object newInput )
+ {
+
+ }
+
+ public void dispose( )
+ {
+ }
+ } );
+ viewer.setLabelProvider( new ITableLabelProvider( ) {
+
+ public Image getColumnImage( Object element, int columnIndex )
+ {
+ return null;
+ }
+
+ public String getColumnText( Object element, int columnIndex )
+ {
+ SOAPParameter param = ( (SOAPParameter) element );
+ String value = WSUIUtil.EMPTY_STRING;
+ switch ( columnIndex )
+ {
+ case 0 :
+ value = param.getName( );
+ break;
+ case 1 :
+ value = WSUIUtil.EMPTY_STRING;
+ break;
+ case 2 :
+ value = param.getDefaultValue( );
+ break;
+ }
+
+ return WSUIUtil.getNonNullString( value );
+ }
+
+ public void addListener( ILabelProviderListener listener )
+ {
+ }
+
+ public void dispose( )
+ {
+ }
+
+ public boolean isLabelProperty( Object element, String property )
+ {
+ return false;
+ }
+
+ public void removeListener( ILabelProviderListener listener )
+ {
+ }
+ } );
+ }
+
+ private void setupEditors( )
+ {
+ CellEditor[] editors = new CellEditor[3];
+ for ( int i = 0; i < editors.length; i++ )
+ {
+ editors[i] = new TextCellEditor( viewer.getTable( ), SWT.NONE );
+ }
+
+ viewer.setCellEditors( editors );
+ viewer.setColumnProperties( new String[]{
+ COLUMN_NAME, COLUMN_DATATYPE, COLUMN_DEFAULTVALUE
+ } );
+
+ viewer.setCellModifier( new ICellModifier( ) {
+
+ public boolean canModify( Object element, String property )
+ {
+ if ( viewer.getChecked( element )
+ && property.equals( COLUMN_DEFAULTVALUE ) )
+ return true;
+
+ return false;
+ }
+
+ public Object getValue( Object element, String property )
+ {
+ return WSUIUtil.getNonNullString( ( (SOAPParameter) element ).getDefaultValue( ) );
+ }
+
+ public void modify( Object element, String property, Object value )
+ {
+ SOAPParameter soapParameter = (SOAPParameter) ( (TableItem) element ).getData( );
+ soapParameter.setDefaultValue( value.toString( ) );
+
+ viewer.refresh( );
+ }
+ } );
+ }
+
+ /**
+ * Initializes the page control with the last edited data set design.
+ */
+ private void initializeControl( )
+ {
+ initWSConsole( );
+ initFromModel( );
+ initViewer( );
+ }
+
+ private void initWSConsole( )
+ {
+ if ( !WSConsole.getInstance( ).isSessionOK( ) )
+ WSConsole.getInstance( ).start( getInitializationDesign( ) );
+ }
+
+ private void initFromModel( )
+ {
+ wsQueryText = WSConsole.getInstance( )
+ .getPropertyValue( Constants.WS_QUERYTEXT );
+ parameters = WSConsole.getInstance( ).getParameters( );
+ }
+
+ private void initViewer( )
+ {
+ if ( WSUIUtil.isNull( wsQueryText ) )
+ return;
+
+ soapRequest = new SOAPRequest( );
+ soapRequest.setQueryText( wsQueryText );
+ soapRequest.init( );
+ mergeParameters( );
+ SOAPParameter[] soapParameters = soapRequest.getParameters( );
+ if ( !WSUIUtil.isNull( soapParameters ) )
+ {
+ viewer.setInput( soapParameters );
+ for ( int i = 0; i < soapParameters.length; i++ )
+ {
+ if ( !WSUIUtil.isNull( soapParameters[i] ) )
+ viewer.setChecked( soapParameters[i], true );
+ }
+ }
+ }
+
+ private void mergeParameters( )
+ {
+ if ( !canMerge( ) )
+ return;
+
+ SOAPParameter[] soapParameters = soapRequest.getParameters( );
+ for ( int i = 0; i < parameters.length; i++ )
+ {
+ soapParameters[i].setDefaultValue( parameters[i].getDefaultValue( ) );
+ }
+ }
+
+ private boolean canMerge( )
+ {
+ SOAPParameter[] soapParameters = soapRequest.getParameters( );
+ if ( parameters == null || soapParameters == null )
+ return false;
+
+ if ( parameters.length != soapParameters.length )
+ return false;
+
+ for ( int i = 0; i < parameters.length; i++ )
+ {
+ if ( !parameters[i].getName( )
+ .equals( soapParameters[i].getName( ) ) )
+ return false;
+ }
+
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizardPage#collectDataSetDesign(org.eclipse.datatools.connectivity.oda.design.DataSetDesign)
+ */
+ protected DataSetDesign collectDataSetDesign( DataSetDesign design )
+ {
+ savePage( design );
+ WSUIUtil.savePage( design );
+ return design;
+ }
+
+ private void savePage( DataSetDesign dataSetDesign )
+ {
+ // TODO nothing to save
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizardPage#refresh(org.eclipse.datatools.connectivity.oda.design.DataSetDesign)
+ */
+ protected void refresh( DataSetDesign dataSetDesign )
+ {
+ initFromModel( );
+ initViewer( );
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage()
+ */
+ public boolean canFlipToNextPage( )
+ {
+ return isPageComplete( );
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.wizard.WizardPage#getNextPage()
+ */
+ public IWizardPage getNextPage( )
+ {
+ saveToModel( );
+
+ IWizardPage page = super.getNextPage( );
+ if ( page instanceof SOAPRequestPage )
+ ( (SOAPRequestPage) page ).refresh( );
+
+ return page;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizardPage#canLeave()
+ */
+ protected boolean canLeave( )
+ {
+ viewer.refresh( );
+ saveToModel( );
+ return super.canLeave( );
+ }
+
+ private void saveToModel( )
+ {
+ WSConsole.getInstance( ).setPropertyValue( Constants.WS_QUERYTEXT,
+ wsQueryText );
+ WSConsole.getInstance( ).setParameters( getSOAPParameters( ) );
+ }
+
+ private SOAPParameter[] getSOAPParameters( )
+ {
+ Object[] candidates = (Object[]) viewer.getCheckedElements( );
+ List manipulated = getManipulatedIndexList( candidates );
+
+ SOAPParameter[] targets = soapRequest.getParameters( );
+ if ( WSUIUtil.isNull( targets ) || manipulated.isEmpty( ) )
+ return targets;
+
+ List result = new ArrayList();
+ for ( int i = 0; i < targets.length; i++ )
+ {
+ if ( ! (targets[i] != null && !manipulated.contains( new Integer( targets[i].getId( ) ) ) ))
+ result.add( targets[i] );
+ }
+ SOAPParameter[] r = new SOAPParameter[result.size( )];
+ for( int i = 0; i < result.size( ); i++ )
+ {
+ r[i] = (SOAPParameter)result.get( i );
+ }
+
+ return r;
+ }
+
+ private List getManipulatedIndexList( Object[] soapParameters )
+ {
+ if ( WSUIUtil.isNull( soapParameters ) || soapParameters.length == 0 )
+ return Collections.EMPTY_LIST;
+
+ List manipulated = new ArrayList( );
+ for ( int i = 0; i < soapParameters.length; i++ )
+ manipulated.add( new Integer( ( (SOAPParameter) soapParameters[i] ).getId( ) ) );
+
+ return manipulated;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizardPage#cleanup()
+ */
+ protected void cleanup( )
+ {
+ WSConsole.getInstance( ).terminateSession( );
+ }
+
+ void refresh( )
+ {
+ wsQueryText = WSConsole.getInstance( ).getTemplate( );
+ initViewer( );
+ }
+
+}
diff --git a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/SOAPRequestPage.java b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/SOAPRequestPage.java
index 37241c1..3bf9703 100644
--- a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/SOAPRequestPage.java
+++ b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/SOAPRequestPage.java
@@ -111,7 +111,7 @@
composite.setLayoutData( layoutData );
Button button = new Button( composite, SWT.NONE );
- button.setText( Messages.getString( "soapRequestPage.button.generateTemplate" ) ); //$NON-NLS-1$
+ button.setText( Messages.getString( "soapRequestPage.button.regenerateTemplate" ) ); //$NON-NLS-1$
layoutData = new GridData( );
layoutData.widthHint = 120;
button.setLayoutData( layoutData );
@@ -120,9 +120,9 @@
public void widgetSelected( SelectionEvent e )
{
if ( MessageDialog.openConfirm( null,
- Messages.getString( "soapRequestPage.title.generateTemplate" ), //$NON-NLS-1$
- Messages.getString( "soapRequestPage.message.generateTemplate" ) ) ) //$NON-NLS-1$
- refresh( );
+ Messages.getString( "soapRequestPage.title.regenerateTemplate" ), //$NON-NLS-1$
+ Messages.getString( "soapRequestPage.message.regenerateTemplate" ) ) ) //$NON-NLS-1$
+ regenerateTemplate( );
}
} );
@@ -162,7 +162,12 @@
}
} );
+ }
+ private void regenerateTemplate( )
+ {
+ queryText.setText( WSUIUtil.getNonNullString( WSConsole.getInstance( )
+ .getTemplate( ) ) );
}
/**
@@ -224,20 +229,23 @@
{
super.refresh( dataSetDesign );
- if ( isDirty( dataSetDesign ) )
- refresh( );
- }
-
- // TODO
- private boolean isDirty( DataSetDesign dataSetDesign )
- {
- return false;
+ initFromModel( );
}
void refresh( )
{
queryText.setText( WSUIUtil.getNonNullString( WSConsole.getInstance( )
- .getTemplate( ) ) );
+ .manipulateTemplate( ) ) );
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage()
+ */
+ public boolean canFlipToNextPage( )
+ {
+ return isPageComplete( );
}
/*
@@ -480,7 +488,8 @@
SOAPParameter[] soapParameters = soapRequest.getParameters( );
for ( int i = 0; i < parameters.length; i++ )
{
- soapParameters[i].setDefaultValue( parameters[i].getDefaultValue( ) );
+ if ( !WSUIUtil.isNull( parameters[i] ) )
+ soapParameters[i].setDefaultValue( parameters[i].getDefaultValue( ) );
}
}
@@ -495,8 +504,9 @@
for ( int i = 0; i < parameters.length; i++ )
{
- if ( !parameters[i].getName( )
- .equals( soapParameters[i].getName( ) ) )
+ if ( !WSUIUtil.isNull( parameters[i] )
+ && !parameters[i].getName( )
+ .equals( soapParameters[i].getName( ) ) )
return false;
}
diff --git a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/SOAPResponsePage.java b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/SOAPResponsePage.java
index 1a7a3f7..2950237 100644
--- a/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/SOAPResponsePage.java
+++ b/plugins/org.eclipse.datatools.enablement.oda.ws.ui/src/org/eclipse/datatools/enablement/oda/ws/ui/wizards/SOAPResponsePage.java
@@ -397,6 +397,16 @@
/*
* (non-Javadoc)
*
+ * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage()
+ */
+ public boolean canFlipToNextPage( )
+ {
+ return isPageComplete( );
+ }
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.jface.wizard.WizardPage#getNextPage()
*/
public IWizardPage getNextPage( )
diff --git a/plugins/org.eclipse.datatools.enablement.oda.ws/META-INF/MANIFEST.MF b/plugins/org.eclipse.datatools.enablement.oda.ws/META-INF/MANIFEST.MF
index 2fadfac..38f5c6f 100644
--- a/plugins/org.eclipse.datatools.enablement.oda.ws/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.datatools.enablement.oda.ws/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.datatools.enablement.oda.ws; singleton:=true
-Bundle-Version: 1.0.0.200705291
+Bundle-Version: 1.0.0.200705301
Bundle-Activator: org.eclipse.datatools.enablement.oda.ws.Activator
Bundle-Vendor: Eclipse.org
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.datatools.enablement.oda.ws/src/org/eclipse/datatools/enablement/oda/ws/soap/SOAPRequest.java b/plugins/org.eclipse.datatools.enablement.oda.ws/src/org/eclipse/datatools/enablement/oda/ws/soap/SOAPRequest.java
index ed0b2e0..b5c9cd3 100644
--- a/plugins/org.eclipse.datatools.enablement.oda.ws/src/org/eclipse/datatools/enablement/oda/ws/soap/SOAPRequest.java
+++ b/plugins/org.eclipse.datatools.enablement.oda.ws/src/org/eclipse/datatools/enablement/oda/ws/soap/SOAPRequest.java
@@ -201,4 +201,40 @@
return soapRequest;
}
+ /**
+ * Convenient method to manipulate query after parameters have been changed
+ *
+ * @param soapParameters
+ * @return
+ */
+ public String manipulateQuery( )
+ {
+ if ( WSUtil.isNull( template ) )
+ return WSUtil.EMPTY_STRING;
+
+ if ( WSUtil.isNull( parameters ) )
+ return template[template.length - 1];
+
+ String soapRequest = WSUtil.EMPTY_STRING;
+ for ( int i = 0; i < parameters.length; i++ )
+ {
+ if ( !WSUtil.isNull( parameters[i] ) )
+ {
+ soapRequest += template[i];
+ if ( WSUtil.isNull( parameters[i].getDefaultValue( ) ) )
+ soapRequest += buildParameter( parameters[i].getName( ) );
+ else
+ soapRequest += parameters[i].getDefaultValue( );
+ }
+ }
+ soapRequest += template[template.length - 1];
+
+ return soapRequest;
+ }
+
+ private String buildParameter( String paramName )
+ {
+ return "&?" + paramName + "?&"; //$NON-NLS-1$//$NON-NLS-2$
+ }
+
}