View Javadoc

1   /*
2    *  soapUI Pro, copyright (C) 2007 eviware software ab 
3    */
4   
5   package com.eviware.soapui.support.dnd.handlers;
6   
7   import java.util.HashSet;
8   
9   import com.eviware.soapui.SoapUI;
10  import com.eviware.soapui.impl.wsdl.WsdlInterface;
11  import com.eviware.soapui.impl.wsdl.WsdlProject;
12  import com.eviware.soapui.impl.wsdl.WsdlRequest;
13  import com.eviware.soapui.impl.wsdl.actions.request.AddRequestToTestCaseAction;
14  import com.eviware.soapui.model.tree.nodes.support.WsdlTestStepsModelItem;
15  import com.eviware.soapui.support.UISupport;
16  import com.eviware.soapui.support.action.SoapUIAction;
17  
18  public class RequestToTestStepsDropHandler extends AbstractAfterModelItemDropHandler<WsdlRequest, WsdlTestStepsModelItem>
19  {
20  	public RequestToTestStepsDropHandler()
21  	{
22  		super( WsdlRequest.class, WsdlTestStepsModelItem.class );
23  	}
24  	
25  	@Override
26  	boolean canCopyAfter( WsdlRequest source, WsdlTestStepsModelItem target )
27  	{
28  		return true;
29  	}
30  
31  	@Override
32  	boolean canMoveAfter( WsdlRequest source, WsdlTestStepsModelItem target )
33  	{
34  		return true;
35  	}
36  
37  	@Override
38  	boolean copyAfter( WsdlRequest source, WsdlTestStepsModelItem target )
39  	{
40  		return addRequestToTestCase( source, target);
41  	}
42  
43  	private boolean addRequestToTestCase( WsdlRequest source, WsdlTestStepsModelItem target )
44  	{
45  		if( !UISupport.confirm( "Add Request [" + source.getName() + "] to TestCase [" + 
46  					target.getTestCase().getName() +"]", "Add Request to TestCase" ))
47  			return false;
48  		
49  		WsdlProject targetProject = target.getTestCase().getTestSuite().getProject();
50  		if( targetProject != source.getOperation().getInterface().getProject() )
51  		{
52  			HashSet<WsdlInterface> requiredInterfaces = new HashSet<WsdlInterface>();
53  			requiredInterfaces.add( source.getOperation().getInterface() );
54  			
55  			if( !DragAndDropSupport.importRequiredInterfaces( targetProject,  
56  						requiredInterfaces, "Add Request to TestCase" ))
57  			{
58  				return false;
59  			}
60  		}
61  		
62  		SoapUIAction<WsdlRequest> action = SoapUI.getActionRegistry().getAction( AddRequestToTestCaseAction.SOAPUI_ACTION_ID );
63  		return (( AddRequestToTestCaseAction ) action).addRequest( target.getTestCase(), source, 0 ) != null;
64  	}
65  
66  	@Override
67  	boolean moveAfter( WsdlRequest source, WsdlTestStepsModelItem target )
68  	{
69  		return addRequestToTestCase( source, target);
70  	}
71  	
72  	@Override
73  	String getCopyAfterInfo( WsdlRequest source, WsdlTestStepsModelItem target )
74  	{
75  		return "Add Request [" + source.getName() + "] to TestCase [" + target.getTestCase().getName() +"]";
76  	}
77  
78  	@Override
79  	String getMoveAfterInfo( WsdlRequest source, WsdlTestStepsModelItem target )
80  	{
81  		return getCopyAfterInfo( source, target );
82  	}
83  }