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.impl.wsdl.testcase.WsdlTestCase;
15  import com.eviware.soapui.support.UISupport;
16  import com.eviware.soapui.support.action.SoapUIAction;
17  
18  public class RequestToTestCaseDropHandler extends AbstractBeforeAfterModelItemDropHandler<WsdlRequest, WsdlTestCase>
19  {
20  	public RequestToTestCaseDropHandler()
21  	{
22  		super( WsdlRequest.class, WsdlTestCase.class );
23  	}
24  	
25  	@Override
26  	boolean canCopyAfter( WsdlRequest source, WsdlTestCase target )
27  	{
28  		return true;
29  	}
30  
31  	@Override
32  	boolean canMoveAfter( WsdlRequest source, WsdlTestCase target )
33  	{
34  		return true;
35  	}
36  
37  	@Override
38  	boolean copyAfter( WsdlRequest source, WsdlTestCase target )
39  	{
40  		return addRequestToTestCase( source, target, -1);
41  	}
42  
43  	private boolean addRequestToTestCase( WsdlRequest source, WsdlTestCase target, int index )
44  	{
45  		if( !UISupport.confirm( "Add Request [" + source.getName() + "] to TestCase [" + target.getName() +"]", "Add Request to TestCase" ))
46  			return false;
47  		
48  		WsdlProject targetProject = target.getTestSuite().getProject();
49  		if( targetProject != source.getOperation().getInterface().getProject() )
50  		{
51  			HashSet<WsdlInterface> requiredInterfaces = new HashSet<WsdlInterface>();
52  			requiredInterfaces.add( source.getOperation().getInterface() );
53  			
54  			if( !DragAndDropSupport.importRequiredInterfaces( targetProject,  
55  						requiredInterfaces, "Add Request to TestCase" ))
56  			{
57  				return false;
58  			}
59  		}
60  		
61  		SoapUIAction<WsdlRequest> action = SoapUI.getActionRegistry().getAction( AddRequestToTestCaseAction.SOAPUI_ACTION_ID );
62  		return (( AddRequestToTestCaseAction ) action).addRequest( target, source, index ) != null;
63  	}
64  
65  	@Override
66  	boolean moveAfter( WsdlRequest source, WsdlTestCase target )
67  	{
68  		return addRequestToTestCase( source, target, -1);
69  	}
70  
71  	@Override
72  	String getCopyAfterInfo( WsdlRequest source, WsdlTestCase target )
73  	{
74  		return "Add Request [" + source.getName() + "] to TestCase [" + target.getName() +"]";
75  	}
76  
77  	@Override
78  	String getMoveAfterInfo( WsdlRequest source, WsdlTestCase target )
79  	{
80  		return getCopyAfterInfo( source, target );
81  	}
82  
83  	@Override
84  	boolean canCopyBefore( WsdlRequest source, WsdlTestCase target )
85  	{
86  		return true;
87  	}
88  
89  	@Override
90  	boolean canMoveBefore( WsdlRequest source, WsdlTestCase target )
91  	{
92  		return true;
93  	}
94  
95  	@Override
96  	boolean copyBefore( WsdlRequest source, WsdlTestCase target )
97  	{
98  		return addRequestToTestCase( source, target, 0);
99  	}
100 
101 	@Override
102 	String getCopyBeforeInfo( WsdlRequest source, WsdlTestCase target )
103 	{
104 		return getCopyAfterInfo( source, target );
105 	}
106 
107 	@Override
108 	String getMoveBeforeInfo( WsdlRequest source, WsdlTestCase target )
109 	{
110 		return getCopyAfterInfo( source, target );
111 	}
112 
113 	@Override
114 	boolean moveBefore( WsdlRequest source, WsdlTestCase target )
115 	{
116 		return addRequestToTestCase( source, target, 0);
117 	}
118 }