1
2
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 AbstractAfterModelItemDropHandler<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);
41 }
42
43 private boolean addRequestToTestCase( WsdlRequest source, WsdlTestCase target )
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, -1 ) != null;
63 }
64
65 @Override
66 boolean moveAfter( WsdlRequest source, WsdlTestCase target )
67 {
68 return addRequestToTestCase( source, target);
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 }