diff -r 000000000000 -r a02c979e8dfd srcanaapps/apiquerytool/com.nokia.s60tools.apiquery/src/com/nokia/s60tools/apiquery/shared/searchmethod/ISearchMethodExtension.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/srcanaapps/apiquerytool/com.nokia.s60tools.apiquery/src/com/nokia/s60tools/apiquery/shared/searchmethod/ISearchMethodExtension.java Sat Jan 09 10:04:11 2010 +0530 @@ -0,0 +1,162 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +package com.nokia.s60tools.apiquery.shared.searchmethod; + +import java.util.Collection; +import java.util.Hashtable; +import java.util.Set; +import org.eclipse.swt.widgets.Composite; +import com.nokia.s60tools.apiquery.shared.datatypes.APIDetails; +import com.nokia.s60tools.apiquery.shared.datatypes.APIQueryParameters; +import com.nokia.s60tools.apiquery.shared.datatypes.APIShortDescription; +import com.nokia.s60tools.apiquery.shared.datatypes.APIShortDescriptionSearchResults; +import com.nokia.s60tools.apiquery.shared.datatypes.config.AbstractEntryStorage; +import com.nokia.s60tools.apiquery.shared.exceptions.QueryOperationFailedException; +import com.nokia.s60tools.apiquery.shared.searchmethod.ui.AbstractUiFractionComposite; + +/** + * Interface that has to be implemnted by all + * search method instances. + */ +public interface ISearchMethodExtension { + + /** + * Gets the extension info for the search method. + * @return Returns extension info for the search method. + */ + ISearchMethodExtensionInfo getExtensionInfo(); + + /** + * This method is called when we do not need + * the services of this extension. This gives + * possibilities for the extension to make + * any shutdown related operations it sees + * as necessary. + */ + public void notifyExtensionShutdown(); + + /** + * Returns the search method specific configuration UI as + * UI Composite that can be disposed and re-created whenever needed. + * @param parent Parent composite for the created configuration UI. + * @return Returns the search method specific configuration UI. + */ + public AbstractUiFractionComposite createExtensionConfigurationUi(Composite parent); + + /** + * Runs API Query with the given parameters. + * Throws QueryOperationFailedException if something failed + * during query operation. + * @param parameters Parameters guiding the query. + * @return APIShortDescriptionSearchResults containing Collection of API summary objects + * for the APIs found based on the query and possible QueryOperationFailedException search errors Collection. + */ + public APIShortDescriptionSearchResults runAPIQuery(APIQueryParameters parameters); + + /** + * Gets API details for the given API. + * Throws QueryOperationFailedException if something failed + * during query operation. + * @param summary API summary object to get details for. + * @return API details for the given summary object. + * @throws QueryOperationFailedException + */ + public APIDetails getAPIDetails(APIShortDescription summary) throws QueryOperationFailedException; + + /** + * Gets API details for the given APIs. + * Throws QueryOperationFailedException if something failed + * during query operation. + * @param list of API summary objects to get details for. + * @return API details for the given summary objects. Given API name as key and APIDetails as value. + * If cant found or parse a Details, an empty Details is added to collection. + * @throws QueryOperationFailedException + */ + Hashtable getAPIDetails(Collection apis) throws QueryOperationFailedException; + + + /** + * Can be used to check if a certain query type + * is supported by the search method. + * @param queryType Query type defined in APIQueryParameters to be checked. + * @return true if the query type is supported, otherwise false. + * @see APIQueryParameters#QUERY_BY_API_NAME + * @see APIQueryParameters#QUERY_BY_SUBSYSTEM_NAME + * @see APIQueryParameters#QUERY_BY_DLL_NAME + * @see APIQueryParameters#QUERY_BY_LIB_NAME + * @see APIQueryParameters#QUERY_BY_HEADER_NAME + * @see APIQueryParameters#QUERY_BY_CRPS_KEY_NAME + */ + public boolean isSupportedQueryType(int queryType); + + /** + * Returns search method specific configuration storage instance. + * @return Data Source specific configuration storage instance. + */ + public AbstractEntryStorage getEntryStorageInstance(); + + /** + * Get API details to show in report. + * @return API Detail topics to be shown in report + */ + public String[] getAPIDetailsToReport(Set usedAPIs, Hashtable projectUsingAPIDetails); + + /** + * Maps query type to API Detail topic in API Details. + * @param queryType Query type constant. + * @return Name of the API Detail. + */ + public String getAPIDetailNameInDetailsByQueryType(int queryType); + + /** + * Maps API Detail topic in API Details to query type. + * @param queryType Query type constant. + * @return Query type int described in {@link APIQueryParameters} or -1 if not supported. + */ + public int getQueryTypeByAPIDetailNameInDetails(String queryType); + + /** + * + * @return true for web query and false for other data sources + */ + public boolean isAsyncQueryPreferred(); + + /** + * if it's for a header serach,then should the headerlink be enabled so that user can click on it and open it. + */ + public boolean serachHeaderLinkEnable(); + +/** + * opens the supplied header file.Provide an implementation if headerlink is enabled. + * @param header : header name + * @param source : APIShortDescription.getSource() + * @return 0-successfully opened , 1-error + */ + public int openHeaderFile(String headerName,String source); + + /* + * + */ + public String[] getHeaderSourceList(); + + + + + +}