/* * SoapUI, Copyright (C) 2004-2016 SmartBear Software * * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence is * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the Licence for the specific language governing permissions and limitations * under the Licence. */ package com.eviware.soapui.model.tree.nodes; import com.eviware.soapui.model.testsuite.LoadTest; import com.eviware.soapui.model.testsuite.TestCase; import com.eviware.soapui.model.testsuite.TestStep; import com.eviware.soapui.model.tree.AbstractModelItemTreeNode; import com.eviware.soapui.model.tree.AbstractTreeNode; import com.eviware.soapui.model.tree.SoapUITreeModel; import com.eviware.soapui.model.tree.SoapUITreeNode; import com.eviware.soapui.model.tree.nodes.support.SecurityTestsModelItem; import com.eviware.soapui.model.tree.nodes.support.WsdlLoadTestsModelItem; import com.eviware.soapui.model.tree.nodes.support.WsdlTestStepsModelItem; import com.eviware.soapui.security.SecurityTest; import com.eviware.soapui.support.action.swing.ActionList; import com.eviware.soapui.support.action.swing.ActionListBuilder; import java.util.ArrayList; import java.util.List; /** * SoapUITreeNode for TestCase implementations * * @author Ole.Matzura */ public class TestCaseTreeNode extends AbstractModelItemTreeNode<TestCase> { private TestStepsTreeNode testStepsNode; private LoadTestsTreeNode loadTestsNode; private SecurityTestsTreeNode securityTestsNode; private PropertiesTreeNode<?> propertiesTreeNode; private List<SoapUITreeNode> childNodes = new ArrayList<SoapUITreeNode>(); public TestCaseTreeNode(TestCase testCase, SoapUITreeModel treeModel) { super(testCase, testCase.getTestSuite(), treeModel); testStepsNode = new TestStepsTreeNode(); loadTestsNode = new LoadTestsTreeNode(); securityTestsNode = new SecurityTestsTreeNode(); getTreeModel().mapModelItem(testStepsNode); getTreeModel().mapModelItem(loadTestsNode); getTreeModel().mapModelItem(securityTestsNode); propertiesTreeNode = PropertiesTreeNode.createDefaultPropertiesNode(testCase, getTreeModel()); getTreeModel().mapModelItem(propertiesTreeNode); childNodes.add(propertiesTreeNode); childNodes.add(testStepsNode); childNodes.add(loadTestsNode); childNodes.add(securityTestsNode); } public void release() { super.release(); for (SoapUITreeNode treeNode : childNodes) { if (!(treeNode instanceof PropertiesTreeNode)) { getTreeModel().unmapModelItem(treeNode.getModelItem()); } treeNode.release(); } } public int getChildCount() { int propMod = getTreeModel().isShowProperties() ? 0 : 1; return childNodes.size() - propMod; } public SoapUITreeNode getChildNode(int index) { int propMod = getTreeModel().isShowProperties() ? 0 : 1; return childNodes.get(index + propMod); } public int getIndexOfChild(Object child) { int propMod = getTreeModel().isShowProperties() ? 0 : 1; if (child == propertiesTreeNode && propMod == 1) { return 0; } return childNodes.indexOf(child) - propMod; } public LoadTestsTreeNode getLoadTestsNode() { return loadTestsNode; } public SecurityTestsTreeNode getSecurityTestsNode() { return securityTestsNode; } public TestStepsTreeNode getTestStepsNode() { return testStepsNode; } public TestCase getTestCase() { return getModelItem(); } public class TestStepsTreeNode extends AbstractTreeNode<WsdlTestStepsModelItem> { private List<TestStepTreeNode> testStepNodes = new ArrayList<TestStepTreeNode>(); protected TestStepsTreeNode() { super(new WsdlTestStepsModelItem(getTestCase())); for (int c = 0; c < getTestCase().getTestStepCount(); c++) { TestStep testStep = getTestCase().getTestStepAt(c); testStepNodes.add(createTestStepTreeNode(testStep)); } getTreeModel().mapModelItems(testStepNodes); } private TestStepTreeNode createTestStepTreeNode(TestStep testStep) { return new TestStepTreeNode(testStep, getModelItem(), getTreeModel()); } public int getChildCount() { return testStepNodes.size(); } public int getIndexOfChild(Object child) { return testStepNodes.indexOf(child); } public SoapUITreeNode getChildNode(int index) { return testStepNodes.get(index); } public SoapUITreeNode getParentTreeNode() { return TestCaseTreeNode.this; } public void testStepInserted(TestStep testStep, int index) { TestStepTreeNode testStepTreeNode = createTestStepTreeNode(testStep); testStepNodes.add(index, testStepTreeNode); getTreeModel().notifyNodeInserted(testStepTreeNode); getTreeModel().notifyNodeChanged(this); } public void testStepRemoved(TestStep testStep, int index) { SoapUITreeNode treeNode = getTreeModel().getTreeNode(testStep); if (testStepNodes.contains(treeNode)) { getTreeModel().notifyNodeRemoved(treeNode); testStepNodes.remove(treeNode); } else { throw new RuntimeException("Removing unkown testStep"); } } public void testStepMoved(TestStep testStep, int fromIndex, int offset) { testStepRemoved(testStep, fromIndex); testStepInserted(testStep, fromIndex + offset); } public ActionList getActions() { return ActionListBuilder.buildActions("TestStepsTreeNodeActions", TestCaseTreeNode.this.getModelItem()); } public void release() { for (TestStepTreeNode testStepNode : testStepNodes) { testStepNode.release(); } getModelItem().release(); } } public class LoadTestsTreeNode extends AbstractTreeNode<WsdlLoadTestsModelItem> { private List<LoadTestTreeNode> loadTestNodes = new ArrayList<LoadTestTreeNode>(); protected LoadTestsTreeNode() { super(new WsdlLoadTestsModelItem(getTestCase())); for (int c = 0; c < getTestCase().getLoadTestCount(); c++) { loadTestNodes .add(new LoadTestTreeNode(getTestCase().getLoadTestAt(c), getModelItem(), getTreeModel())); } getTreeModel().mapModelItems(loadTestNodes); } public int getChildCount() { return loadTestNodes.size(); } public int getIndexOfChild(Object child) { return loadTestNodes.indexOf(child); } public SoapUITreeNode getChildNode(int index) { return loadTestNodes.get(index); } public SoapUITreeNode getParentTreeNode() { return TestCaseTreeNode.this; } public void loadTestInserted(LoadTest loadTest) { LoadTestTreeNode loadTestTreeNode = new LoadTestTreeNode(loadTest, getModelItem(), getTreeModel()); loadTestNodes.add(loadTestTreeNode); getTreeModel().notifyNodeInserted(loadTestTreeNode); getTreeModel().notifyNodeChanged(this); } public void loadTestRemoved(LoadTest loadTest) { SoapUITreeNode treeNode = getTreeModel().getTreeNode(loadTest); if (loadTestNodes.contains(treeNode)) { getTreeModel().notifyNodeRemoved(treeNode); loadTestNodes.remove(treeNode); } else { throw new RuntimeException("Removing unkown loadTest"); } } public void release() { for (LoadTestTreeNode loadTestNode : loadTestNodes) { loadTestNode.release(); } } public ActionList getActions() { return ActionListBuilder.buildActions("LoadTestsTreeNodeActions", TestCaseTreeNode.this.getModelItem()); } } public class SecurityTestsTreeNode extends AbstractTreeNode<SecurityTestsModelItem> { private List<SecurityTestTreeNode> securityTestNodes = new ArrayList<SecurityTestTreeNode>(); protected SecurityTestsTreeNode() { super(new SecurityTestsModelItem(getTestCase())); for (int c = 0; c < getTestCase().getSecurityTestCount(); c++) { securityTestNodes.add(new SecurityTestTreeNode(getTestCase().getSecurityTestAt(c), getModelItem(), getTreeModel())); } getTreeModel().mapModelItems(securityTestNodes); } public int getChildCount() { return securityTestNodes.size(); } public int getIndexOfChild(Object child) { return securityTestNodes.indexOf(child); } public SoapUITreeNode getChildNode(int index) { return securityTestNodes.get(index); } public SoapUITreeNode getParentTreeNode() { return TestCaseTreeNode.this; } public void securityTestInserted(SecurityTest securityTest) { SecurityTestTreeNode securityTestTreeNode = new SecurityTestTreeNode(securityTest, getModelItem(), getTreeModel()); securityTestNodes.add(securityTestTreeNode); getTreeModel().notifyNodeInserted(securityTestTreeNode); getTreeModel().notifyNodeChanged(this); } public void securityTestRemoved(SecurityTest securityTest) { SoapUITreeNode treeNode = getTreeModel().getTreeNode(securityTest); if (securityTestNodes.contains(treeNode)) { getTreeModel().notifyNodeRemoved(treeNode); securityTestNodes.remove(treeNode); } else { throw new RuntimeException("Removing unkown loadTest"); } } public void release() { for (SecurityTestTreeNode securityTestNode : securityTestNodes) { securityTestNode.release(); } } public ActionList getActions() { return ActionListBuilder.buildActions("SecurityTestsTreeNodeActions", TestCaseTreeNode.this.getModelItem()); } } public void testStepInserted(TestStep testStep, int index) { testStepsNode.testStepInserted(testStep, index); } public void testStepRemoved(TestStep testStep, int index) { testStepsNode.testStepRemoved(testStep, index); } public void loadTestInserted(LoadTest loadTest) { loadTestsNode.loadTestInserted(loadTest); } public void loadTestRemoved(LoadTest loadTest) { loadTestsNode.loadTestRemoved(loadTest); } public void testStepMoved(TestStep testStep, int fromIndex, int offset) { testStepsNode.testStepMoved(testStep, fromIndex, offset); } public void securityTestInserted(SecurityTest securityTest) { securityTestsNode.securityTestInserted(securityTest); } public void securityTestRemoved(SecurityTest securityTest) { securityTestsNode.securityTestRemoved(securityTest); } }