View Javadoc

    1   /*
    2    *  soapUI, copyright (C) 2004-2007 eviware.com
    3    *
    4    *  soapUI is free software; you can redistribute it and/or modify it under the
    5    *  terms of version 2.1 of the GNU Lesser General Public License as published by
    6    *  the Free Software Foundation.
    7    *
    8    *  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
    9    *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    10   *  See the GNU Lesser General Public License for more details at gnu.org.
    11   */
    12
    13  package com.eviware.soapui.model.tree.nodes;
    14
    15  import java.util.ArrayList;
    16  import java.util.List;
    17
    18  import com.eviware.soapui.model.testsuite.LoadTest;
    19  import com.eviware.soapui.model.testsuite.TestCase;
    20  import com.eviware.soapui.model.testsuite.TestStep;
    21  import com.eviware.soapui.model.tree.AbstractModelItemTreeNode;
    22  import com.eviware.soapui.model.tree.AbstractTreeNode;
    23  import com.eviware.soapui.model.tree.SoapUITreeModel;
    24  import com.eviware.soapui.model.tree.SoapUITreeNode;
    25  import com.eviware.soapui.model.tree.nodes.support.WsdlLoadTestsModelItem;
    26  import com.eviware.soapui.model.tree.nodes.support.WsdlTestStepsModelItem;
    27  import com.eviware.soapui.support.action.swing.ActionList;
    28  import com.eviware.soapui.support.action.swing.ActionListBuilder;
    29
    30  /***
    31   * SoapUITreeNode for TestCase implementations
    32   *
    33   * @author Ole.Matzura
    34   */
    35
    36  public class TestCaseTreeNode  extends AbstractModelItemTreeNode<TestCase>
    37  {
    38  	private TestStepsTreeNode testStepsNode;
    39  	private LoadTestsTreeNode loadTestsNode;
    40
    41  	public TestCaseTreeNode( TestCase testCase, SoapUITreeModel treeModel )
    42  	{
    43  		super( testCase, testCase.getTestSuite(), treeModel );
    44
    45  		testStepsNode = new TestStepsTreeNode();
    46  		loadTestsNode = new LoadTestsTreeNode();
    47
    48  		getTreeModel().mapModelItem( testStepsNode );
    49  		getTreeModel().mapModelItem( loadTestsNode );
    50  	}
    51
    52  	public void release()
    53  	{
    54  		super.release();
    55
    56  		getTreeModel().unmapModelItem( testStepsNode.getModelItem() );
    57  		getTreeModel().unmapModelItem( loadTestsNode.getModelItem() );
    58
    59  		testStepsNode.release();
    60  		loadTestsNode.release();
    61  	}
    62
    63  	public int getChildCount()
    64  	{
    65  		return 2;
    66  	}
    67
    68  	public SoapUITreeNode getChildNode(int index)
    69  	{
    70  		if( index == 0 )
    71  			return testStepsNode;
    72
    73  		if( index == 1 )
    74  			return loadTestsNode;
    75
    76  		return null;
    77  	}
    78
    79  	public int getIndexOfChild(Object child)
    80  	{
    81  		if( child == testStepsNode ) return 0;
    82  		if( child == loadTestsNode ) return 1;
    83
    84  		return -1;
    85  	}
    86
    87  	public LoadTestsTreeNode getLoadTestsNode()
    88  	{
    89  		return loadTestsNode;
    90  	}
    91
    92  	public TestStepsTreeNode getTestStepsNode()
    93  	{
    94  		return testStepsNode;
    95  	}
    96
    97  	public TestCase getTestCase()
    98  	{
    99  		return getModelItem();
    100 	}
    101
    102    public class TestStepsTreeNode extends AbstractTreeNode<WsdlTestStepsModelItem>
    103 	{
    104    	private List<TestStepTreeNode> testStepNodes = new ArrayList<TestStepTreeNode>();
    105
    106 		protected TestStepsTreeNode()
    107 		{
    108 			super( new WsdlTestStepsModelItem( getTestCase() ) );
    109
    110 			for( int c = 0; c < getTestCase().getTestStepCount(); c++ )
    111 			{
    112 				testStepNodes.add( new TestStepTreeNode( getTestCase().getTestStepAt( c ),
    113 						getModelItem(), getTreeModel() ));
    114 			}
    115
    116 			getTreeModel().mapModelItems( testStepNodes );
    117 		}
    118
    119 		public int getChildCount()
    120 		{
    121 			return testStepNodes.size();
    122 		}
    123
    124 		public int getIndexOfChild(Object child)
    125 		{
    126 			return testStepNodes.indexOf( child );
    127 		}
    128
    129 		public SoapUITreeNode getChildNode(int index)
    130 		{
    131 			return testStepNodes.get( index );
    132 		}
    133
    134 		public SoapUITreeNode getParentTreeNode()
    135 		{
    136 			return TestCaseTreeNode.this;
    137 		}
    138
    139 		public void testStepInserted(TestStep testStep, int index)
    140 		{
    141 			TestStepTreeNode testStepTreeNode = new TestStepTreeNode( testStep,
    142 					getModelItem(), getTreeModel() );
    143 			testStepNodes.add( index, testStepTreeNode);
    144 			getTreeModel().notifyNodeInserted( testStepTreeNode );
    145 			getTreeModel().notifyNodeChanged( this );
    146 		}
    147
    148 		public void testStepRemoved(TestStep testStep, int index)
    149 		{
    150 			SoapUITreeNode treeNode = getTreeModel().getTreeNode( testStep );
    151       	if( testStepNodes.contains( treeNode ))
    152       	{
    153       		getTreeModel().notifyNodeRemoved( treeNode );
    154       		testStepNodes.remove( treeNode );
    155       	}
    156       	else throw new RuntimeException( "Removing unkown testStep" );
    157 		}
    158
    159 		public void testStepMoved(TestStep testStep, int fromIndex, int offset)
    160 		{
    161 			testStepRemoved( testStep, fromIndex );
    162 			testStepInserted( testStep, fromIndex+offset );
    163 		}
    164
    165 		public ActionList getActions()
    166 		{
    167 			return ActionListBuilder.buildActions( "TestStepsTreeNodeActions", TestCaseTreeNode.this.getModelItem() );
    168 		}
    169
    170 		public void release()
    171 		{
    172 			for( TestStepTreeNode testStepNode : testStepNodes )
    173 				testStepNode.release();
    174
    175 			getModelItem().release();
    176 		}
    177 	}
    178
    179 	public class LoadTestsTreeNode extends AbstractTreeNode<WsdlLoadTestsModelItem>
    180 	{
    181 		private List<LoadTestTreeNode> loadTestNodes = new ArrayList<LoadTestTreeNode>();
    182
    183 		protected LoadTestsTreeNode()
    184 		{
    185 			super( new WsdlLoadTestsModelItem( getTestCase() ) );
    186
    187 			for( int c = 0; c < getTestCase().getLoadTestCount(); c++ )
    188 			{
    189 				loadTestNodes.add( new LoadTestTreeNode( getTestCase().getLoadTestAt( c ),
    190 						getModelItem(), getTreeModel() ));
    191 			}
    192
    193 			getTreeModel().mapModelItems( loadTestNodes );
    194 		}
    195
    196 		public int getChildCount()
    197 		{
    198 			return loadTestNodes.size();
    199 		}
    200
    201 		public int getIndexOfChild(Object child)
    202 		{
    203 			return loadTestNodes.indexOf( child );
    204 		}
    205
    206 		public SoapUITreeNode getChildNode(int index)
    207 		{
    208 			return loadTestNodes.get( index );
    209 		}
    210
    211 		public SoapUITreeNode getParentTreeNode()
    212 		{
    213 			return TestCaseTreeNode.this;
    214 		}
    215
    216 		public void loadTestInserted(LoadTest loadTest)
    217 		{
    218 			LoadTestTreeNode loadTestTreeNode = new LoadTestTreeNode( loadTest,
    219 					getModelItem(), getTreeModel() );
    220 			loadTestNodes.add( loadTestTreeNode);
    221 			getTreeModel().notifyNodeInserted( loadTestTreeNode );
    222 			getTreeModel().notifyNodeChanged( this );
    223 		}
    224
    225 		public void loadTestRemoved(LoadTest loadTest)
    226 		{
    227 			SoapUITreeNode treeNode = getTreeModel().getTreeNode( loadTest );
    228       	if( loadTestNodes.contains( treeNode ))
    229       	{
    230       		getTreeModel().notifyNodeRemoved( treeNode );
    231       		loadTestNodes.remove( treeNode);
    232       	}
    233       	else throw new RuntimeException( "Removing unkown loadTest" );
    234       }
    235
    236 		public void release()
    237 		{
    238 			for( LoadTestTreeNode loadTestNode : loadTestNodes )
    239 				loadTestNode.release();
    240 		}
    241
    242 		public ActionList getActions()
    243 		{
    244 			return ActionListBuilder.buildActions( "LoadTestsTreeNodeActions", TestCaseTreeNode.this.getModelItem() );
    245 		}
    246 	}
    247
    248 	public void testStepInserted(TestStep testStep, int index)
    249 	{
    250 		testStepsNode.testStepInserted( testStep, index );
    251 	}
    252
    253 	public void testStepRemoved(TestStep testStep, int index)
    254 	{
    255 		testStepsNode.testStepRemoved( testStep, index );
    256 	}
    257
    258 	public void loadTestInserted(LoadTest loadTest)
    259 	{
    260 		loadTestsNode.loadTestInserted( loadTest );
    261 	}
    262
    263 	public void loadTestRemoved(LoadTest loadTest)
    264 	{
    265 		loadTestsNode.loadTestRemoved( loadTest );
    266 	}
    267
    268 	public void testStepMoved(TestStep testStep, int fromIndex, int offset)
    269 	{
    270 		testStepsNode.testStepMoved( testStep, fromIndex, offset );
    271 	}
    272 }