diff options
| author | Raimar Buehmann | 2013-10-22 10:50:57 +0000 |
|---|---|---|
| committer | Raimar Buehmann | 2013-10-22 10:50:57 +0000 |
| commit | 9b2bb63c02d7a1b772098dbe03b831c8dbcbde8f (patch) | |
| tree | 07ca55528149b183f6b97bf08557bef000f1d699 | |
| parent | 09cb80ddecfc7779dcf49ed5607a29fa91724595 (diff) | |
| download | org.eclipse.jubula.core-9b2bb63c02d7a1b772098dbe03b831c8dbcbde8f.tar.gz org.eclipse.jubula.core-9b2bb63c02d7a1b772098dbe03b831c8dbcbde8f.tar.xz org.eclipse.jubula.core-9b2bb63c02d7a1b772098dbe03b831c8dbcbde8f.zip | |
Sprint task: Apply patch for bug http://bugs.eclipse.org/418300 "Show where used" for test suites
8 files changed, 208 insertions, 31 deletions
diff --git a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/persistence/NodePM.java b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/persistence/NodePM.java index 870af3eed..173828157 100644 --- a/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/persistence/NodePM.java +++ b/org.eclipse.jubula.client.core/src/org/eclipse/jubula/client/core/persistence/NodePM.java @@ -548,7 +548,7 @@ public class NodePM extends PersistenceManager { * doesn't know the parent. * * @param tsGuid - * GUID of the test case being reused. + * GUID of the test suite being reused. * @param parentProjectId * ID of the parent project of the test case being reused. * @return all ref test suites that reference the test suite with the given @@ -572,7 +572,7 @@ public class NodePM extends PersistenceManager { /** * * @param tsGuid The GUID of the reused test suite. - * @param parentProjectIds All returned test cases will have one of these as + * @param parentProjectIds All returned test suites will have one of these as * their project parent ID. * @param s The session into which the test cases will be loaded. * @return list of test suites. @@ -592,8 +592,8 @@ public class NodePM extends PersistenceManager { queryBuffer.append(")"); //$NON-NLS-1$ Query q = s.createQuery(queryBuffer.toString()); q.setParameter("tsGuid", tsGuid); //$NON-NLS-1$ - List<IRefTestSuitePO> execTcList = q.getResultList(); - return execTcList; + List<IRefTestSuitePO> refTestSuiteList = q.getResultList(); + return refTestSuiteList; } /** diff --git a/org.eclipse.jubula.client.ui.rcp/plugin.xml b/org.eclipse.jubula.client.ui.rcp/plugin.xml index 4731b1f2a..efd5b5d79 100644 --- a/org.eclipse.jubula.client.ui.rcp/plugin.xml +++ b/org.eclipse.jubula.client.ui.rcp/plugin.xml @@ -1751,6 +1751,10 @@ style="push"> </command> <command + commandId="org.eclipse.jubula.client.ui.rcp.commands.ShowWhereUsed" + style="push"> + </command> + <command commandId="org.eclipse.jubula.client.ui.commands.ExpandTreeItem" style="push"> </command> @@ -2342,6 +2346,20 @@ </activeWhen> </handler> <handler + class="org.eclipse.jubula.client.ui.rcp.handlers.showwhereused.TestSuiteShowWhereUsedHandler" + commandId="org.eclipse.jubula.client.ui.rcp.commands.ShowWhereUsed"> + <activeWhen> + <and> + <count value="1" /> + <iterate + ifEmpty="false" + operator="and"> + <instanceof value="org.eclipse.jubula.client.core.model.ITestSuitePO" /> + </iterate> + </and> + </activeWhen> + </handler> + <handler class="org.eclipse.jubula.client.ui.rcp.handlers.showwhereused.ComponentNameShowWhereUsedHandler" commandId="org.eclipse.jubula.client.ui.rcp.commands.ShowWhereUsed"> <activeWhen> diff --git a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/handlers/showwhereused/TestSuiteShowWhereUsedHandler.java b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/handlers/showwhereused/TestSuiteShowWhereUsedHandler.java new file mode 100644 index 000000000..609a0b095 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/handlers/showwhereused/TestSuiteShowWhereUsedHandler.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * Copyright (c) 2013 BREDEX GmbH. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BREDEX GmbH - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.jubula.client.ui.rcp.handlers.showwhereused; + +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.jubula.client.core.model.ITestSuitePO; +import org.eclipse.jubula.client.ui.rcp.search.query.ShowWhereUsedTestSuiteQuery; +import org.eclipse.search.ui.NewSearchUI; + + +/** + * Class for test suite "Show where used" handler + * + * @author BREDEX GmbH + * @created 17.10.2013 + */ +public class TestSuiteShowWhereUsedHandler extends + AbstractShowWhereUsedHandler { + + /** {@inheritDoc} */ + public Object execute(ExecutionEvent event) { + init(event); + final Object first = getCurrentSelection().getFirstElement(); + ITestSuitePO testSuite = (ITestSuitePO)first; + NewSearchUI.runQueryInBackground( + new ShowWhereUsedTestSuiteQuery(testSuite)); + return null; + } +} diff --git a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/i18n/Messages.java b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/i18n/Messages.java index de753876e..bf3b7b76b 100644 --- a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/i18n/Messages.java +++ b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/i18n/Messages.java @@ -844,6 +844,7 @@ public class Messages extends NLS { public static String UIJobSearchingResponsibleCompNames; public static String UIJobSearchingTestCases; public static String UIJobSearchingTestDataCube; + public static String UIJobSearchingTestSuites; public static String UIJobStartTestJob; public static String UnexpectedDialogReturnCode; public static String UnexpectedError; diff --git a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/i18n/messages.properties b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/i18n/messages.properties index f94ac6423..2f0c9962d 100644 --- a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/i18n/messages.properties +++ b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/i18n/messages.properties @@ -830,6 +830,7 @@ UIJobSearchingCompNames=Search for usage of Component Names UIJobSearchingResponsibleCompNames=Search for responsible specification of Component Name UIJobSearchingTestCases=Search for usage of Test Case UIJobSearchingTestDataCube=Search for usage of Test Data Sets +UIJobSearchingTestSuites=Search for usage of Test Suite UIJobStartTestJob=Start Test Job UnexpectedDialogReturnCode=Unexpected dialog return code UnexpectedError=Unexpected error diff --git a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/search/query/AbstractShowWhereUsedQuery.java b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/search/query/AbstractShowWhereUsedQuery.java index cd2de4aa0..8d7630e76 100644 --- a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/search/query/AbstractShowWhereUsedQuery.java +++ b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/search/query/AbstractShowWhereUsedQuery.java @@ -10,6 +10,17 @@ *******************************************************************************/ package org.eclipse.jubula.client.ui.rcp.search.query; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jubula.client.core.model.INodePO; +import org.eclipse.jubula.client.ui.rcp.i18n.Messages; +import org.eclipse.jubula.client.ui.rcp.provider.labelprovider.GeneralLabelProvider; +import org.eclipse.jubula.client.ui.rcp.search.result.BasicSearchResult.NodeSearchResultElementAction; +import org.eclipse.jubula.client.ui.rcp.search.result.BasicSearchResult.SearchResultElement; +import org.eclipse.osgi.util.NLS; + /** * This class provides common methods for "show where used queries". @@ -27,4 +38,37 @@ public abstract class AbstractShowWhereUsedQuery extends AbstractQuery { super(viewId); } + /** + * gives a search result containing the parents of an array of INodePOs + * + * @param monitor + * the monitor + * @param reuse + * the array containing the INodePOs + * @return the search result + */ + protected List<SearchResultElement> getResultElementsFromNodes( + IProgressMonitor monitor, INodePO[] reuse) { + final List<SearchResultElement> reuseLoc = + new ArrayList<SearchResultElement>(reuse.length); + List<INodePO> parentList = new ArrayList<INodePO>(); + + for (INodePO node : reuse) { + INodePO parent = node.getParentNode(); + if (parent != null) { + Long id = node.getId(); + String nodeName = GeneralLabelProvider.getTextImpl(node); + parentList.add(parent); + reuseLoc.add(new SearchResultElement<Long>(NLS.bind( + Messages.SearchResultPageElementLabel, new Object[] { + parent.getName(), nodeName }), id, + GeneralLabelProvider.getImageImpl(node), + new NodeSearchResultElementAction(), node + .getComment())); + } + monitor.worked(1); + } + return reuseLoc; + } + } diff --git a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/search/query/ShowWhereUsedSpecTcQuery.java b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/search/query/ShowWhereUsedSpecTcQuery.java index fd28bd3cd..76a15e70a 100644 --- a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/search/query/ShowWhereUsedSpecTcQuery.java +++ b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/search/query/ShowWhereUsedSpecTcQuery.java @@ -10,7 +10,6 @@ *******************************************************************************/ package org.eclipse.jubula.client.ui.rcp.search.query; -import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -26,12 +25,9 @@ import org.eclipse.jubula.client.core.persistence.GeneralStorage; import org.eclipse.jubula.client.core.persistence.NodePM; import org.eclipse.jubula.client.core.persistence.ProjectPM; import org.eclipse.jubula.client.ui.rcp.i18n.Messages; -import org.eclipse.jubula.client.ui.rcp.provider.labelprovider.GeneralLabelProvider; -import org.eclipse.jubula.client.ui.rcp.search.result.BasicSearchResult.NodeSearchResultElementAction; import org.eclipse.jubula.client.ui.rcp.search.result.BasicSearchResult.SearchResultElement; import org.eclipse.jubula.tools.constants.StringConstants; import org.eclipse.jubula.tools.exception.JBException; -import org.eclipse.osgi.util.NLS; /** @@ -86,29 +82,13 @@ public class ShowWhereUsedSpecTcQuery // ignore } } - List<IExecTestCasePO> reuse = NodePM.getExecTestCases(specTC.getGuid(), - parentProjectIDs); - final List<SearchResultElement> reuseLoc = - new ArrayList<SearchResultElement>( - reuse.size()); - List<INodePO> parentList = new ArrayList<INodePO>(); - - monitor.beginTask("Searching for reusage of Test Case", reuse.size()); //$NON-NLS-1$ - for (IExecTestCasePO execTC : reuse) { - INodePO parent = execTC.getParentNode(); - if (parent != null) { - Long id = execTC.getId(); - String nodeName = GeneralLabelProvider.getTextImpl(execTC); - parentList.add(parent); - reuseLoc.add(new SearchResultElement<Long>(NLS.bind( - Messages.SearchResultPageElementLabel, new Object[] { - parent.getName(), nodeName }), id, - GeneralLabelProvider.getImageImpl(execTC), - new NodeSearchResultElementAction(), execTC - .getComment())); - } - monitor.worked(1); - } + List<IExecTestCasePO> reuseList = + NodePM.getExecTestCases(specTC.getGuid(), parentProjectIDs); + INodePO[] reuse = new INodePO[reuseList.size()]; + reuseList.toArray(reuse); + monitor.beginTask("Searching for reusage of Test Case", reuseList.size()); //$NON-NLS-1$ + final List<SearchResultElement> reuseLoc = getResultElementsFromNodes( + monitor, reuse); setSearchResult(reuseLoc); monitor.done(); diff --git a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/search/query/ShowWhereUsedTestSuiteQuery.java b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/search/query/ShowWhereUsedTestSuiteQuery.java new file mode 100644 index 000000000..766c8ddc0 --- /dev/null +++ b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/search/query/ShowWhereUsedTestSuiteQuery.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright (c) 2013 BREDEX GmbH. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BREDEX GmbH - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.jubula.client.ui.rcp.search.query; + +import java.util.List; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.jubula.client.core.model.INodePO; +import org.eclipse.jubula.client.core.model.IProjectPO; +import org.eclipse.jubula.client.core.model.IRefTestSuitePO; +import org.eclipse.jubula.client.core.model.ITestSuitePO; +import org.eclipse.jubula.client.core.persistence.GeneralStorage; +import org.eclipse.jubula.client.core.persistence.NodePM; +import org.eclipse.jubula.client.ui.rcp.i18n.Messages; +import org.eclipse.jubula.client.ui.rcp.search.result.BasicSearchResult.SearchResultElement; +import org.eclipse.jubula.tools.constants.StringConstants; + + +/** + * @author BREDEX GmbH + * @created 18.10.2013 + */ +public class ShowWhereUsedTestSuiteQuery + extends AbstractShowWhereUsedQuery { + /** + * <code>m_specTC</code> + */ + private ITestSuitePO m_testSuite; + + /** + * @param testSuite + * the test suite to search the reuse for + */ + public ShowWhereUsedTestSuiteQuery(ITestSuitePO testSuite) { + super(null); + m_testSuite = testSuite; + } + + /** + * {@inheritDoc} + */ + public IStatus run(IProgressMonitor monitor) { + calculateReuseOfTestSuite(m_testSuite, monitor); + return Status.OK_STATUS; + } + + /** + * calculates and show the places of reuse for a test suite + * + * @param testSuite + * the test suite + * @param monitor + * the progress monitor + */ + private void calculateReuseOfTestSuite(ITestSuitePO testSuite, + IProgressMonitor monitor) { + IProjectPO currentProject = GeneralStorage.getInstance().getProject(); + List<IRefTestSuitePO> reuseList = NodePM.getInternalRefTestSuites( + testSuite.getGuid(), currentProject.getId()); + INodePO[] reuse = new INodePO[reuseList.size()]; + reuseList.toArray(reuse); + monitor.beginTask("Searching for reusage of Test Suite", reuseList.size()); //$NON-NLS-1$ + final List<SearchResultElement> reuseLoc = getResultElementsFromNodes( + monitor, reuse); + + setSearchResult(reuseLoc); + monitor.done(); + } + + /** + * {@inheritDoc} + */ + @SuppressWarnings("nls") + public String getLabel() { + StringBuilder sb = new StringBuilder(); + sb.append(getTimestamp()); + sb.append(StringConstants.COLON); + sb.append(StringConstants.SPACE); + sb.append(Messages.UIJobSearchingTestSuites); + sb.append(" \""); + sb.append(m_testSuite.getName()); + sb.append("\""); + return sb.toString(); + } + +} |
