srcanaapps/apiquerytool/com.nokia.s60tools.apiquery.cache/src/com/nokia/s60tools/apiquery/cache/searchmethod/LocalCacheSearchMethodExtension.java
author noe\swadi
Tue, 23 Feb 2010 10:27:57 +0530
changeset 3 ec51f72aa69a
parent 0 a02c979e8dfd
permissions -rw-r--r--
Licenses updated to EPL.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     1
/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     3
* All rights reserved.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     4
* This component and the accompanying materials are made available
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     6
* which accompanies this distribution, and is available
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     8
*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     9
* Initial Contributors:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    11
*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    12
* Contributors:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    13
*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    14
* Description:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    15
*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    16
*/ 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    17
 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    18
package com.nokia.s60tools.apiquery.cache.searchmethod;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    19
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    20
import java.io.IOException;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    21
import java.net.URI;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    22
import java.util.ArrayList;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    23
import java.util.Collection;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    24
import java.util.Hashtable;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    25
import java.util.Set;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    26
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    27
import org.eclipse.core.runtime.CoreException;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    28
import org.eclipse.core.runtime.IConfigurationElement;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    29
import org.eclipse.core.runtime.IExecutableExtension;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    30
import org.eclipse.core.runtime.IProgressMonitor;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    31
import org.eclipse.core.runtime.IStatus;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    32
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    33
import org.eclipse.core.runtime.jobs.IJobChangeListener;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    34
import org.eclipse.core.runtime.jobs.Job;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    35
import org.eclipse.swt.widgets.Composite;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    36
import org.eclipse.swt.widgets.Display;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    37
import org.eclipse.ui.IWorkbench;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    38
import org.eclipse.ui.PlatformUI;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    39
import org.eclipse.ui.browser.IWebBrowser;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    40
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    41
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    42
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    43
import com.nokia.s60tools.apiquery.cache.configuration.CacheEntry;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    44
import com.nokia.s60tools.apiquery.cache.configuration.CacheEntryStorage;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    45
import com.nokia.s60tools.apiquery.cache.core.job.UpdateSDKSelectionJob;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    46
import com.nokia.s60tools.apiquery.cache.resources.Messages;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    47
import com.nokia.s60tools.apiquery.cache.searchmethod.ui.LocalCacheUIComposite;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    48
import com.nokia.s60tools.apiquery.cache.util.SDKFinder;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    49
import com.nokia.s60tools.apiquery.cache.util.SDKUtil;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    50
import com.nokia.s60tools.apiquery.cache.xml.MetadataXMLToUIMappingRules;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    51
import com.nokia.s60tools.apiquery.popup.actions.OpenFileAction;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    52
import com.nokia.s60tools.apiquery.shared.datatypes.APIDetailField;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    53
import com.nokia.s60tools.apiquery.shared.datatypes.APIDetails;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    54
import com.nokia.s60tools.apiquery.shared.datatypes.APIQueryParameters;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    55
import com.nokia.s60tools.apiquery.shared.datatypes.APIShortDescription;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    56
import com.nokia.s60tools.apiquery.shared.datatypes.APIShortDescriptionSearchResults;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    57
import com.nokia.s60tools.apiquery.shared.datatypes.config.AbstractEntry;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    58
import com.nokia.s60tools.apiquery.shared.datatypes.config.AbstractEntryStorage;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    59
import com.nokia.s60tools.apiquery.shared.exceptions.QueryOperationFailedException;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    60
import com.nokia.s60tools.apiquery.shared.exceptions.XMLNotValidException;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    61
import com.nokia.s60tools.apiquery.shared.searchmethod.AbstractSearchMethodExtension;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    62
import com.nokia.s60tools.apiquery.shared.searchmethod.ISearchMethodExtension;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    63
import com.nokia.s60tools.apiquery.shared.searchmethod.SearchMethodExtensionInfo;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    64
import com.nokia.s60tools.apiquery.shared.searchmethod.ui.AbstractUiFractionComposite;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    65
import com.nokia.s60tools.apiquery.shared.services.QueryServices;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    66
import com.nokia.s60tools.apiquery.shared.util.console.APIQueryConsole;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    67
import com.nokia.s60tools.apiquery.shared.util.xml.XMLUtils;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    68
import com.nokia.s60tools.sdk.SdkInformation;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    69
import com.nokia.s60tools.util.debug.DbgUtility;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    70
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    71
/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    72
 * Search Method extension allowing to create local caches from the web server
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    73
 * entries, and used the cached information instead of the online information.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    74
 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    75
public class LocalCacheSearchMethodExtension implements  ISearchMethodExtension, IExecutableExtension, IJobChangeListener
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    76
{
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    77
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    78
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    79
	 * This class is created by using <code>createExecutableExtension</code>
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    80
	 * method from <code>IConfigurationElement</code> class, and therefore the
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    81
	 * constructor cannot have any parameters.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    82
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    83
	 * @see org.eclipse.core.runtime.IConfigurationElement#createExecutableExtension
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    84
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    85
	public LocalCacheSearchMethodExtension(){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    86
		extensionInfo = new SearchMethodExtensionInfo();			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    87
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    88
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    89
	private SearchMethodExtensionInfo extensionInfo;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    90
	private APIQueryParameters apiQueryParameters = null;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    91
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    92
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    93
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    94
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    95
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    96
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    97
	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    98
	 *      java.lang.String, java.lang.Object)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    99
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   100
	public void setInitializationData(IConfigurationElement configElem, String classPropertyName, Object data) throws CoreException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   101
		extensionInfo.setId(configElem.getAttribute(AbstractSearchMethodExtension.ID_ATTRIBUTE));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   102
		extensionInfo.setDescription(configElem.getAttribute(AbstractSearchMethodExtension.DESCRIPTION_ATTRIBUTE));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   103
		extensionInfo.setDefault(Boolean.parseBoolean(configElem.getAttribute(AbstractSearchMethodExtension.IS_DEFAULT_ATTRIBUTE)));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   104
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   105
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   106
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   107
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   108
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   109
	 * @see com.nokia.s60tools.apiquery.shared.searchmethod.ISearchMethodExtension#getExtensionInfo()
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   110
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   111
	public SearchMethodExtensionInfo getExtensionInfo() {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   112
		return extensionInfo;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   113
	}	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   114
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   115
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   116
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   117
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   118
	 * @see com.nokia.s60tools.apiquery.searchmethodregistry.ISearchMethodExtension#notifyExtensionShutdown()
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   119
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   120
	public void notifyExtensionShutdown() {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   121
		// Currently nothing to do
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   122
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   123
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   124
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   125
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   126
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   127
	 * @see com.nokia.s60tools.apiquery.searchmethodregistry.ISearchMethodExtension#createExtensionConfigurationUi(org.eclipse.swt.widgets.Composite)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   128
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   129
	public AbstractUiFractionComposite createExtensionConfigurationUi(Composite parent) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   130
		return new LocalCacheUIComposite(parent);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   131
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   132
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   133
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   134
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   135
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   136
	 * @see com.nokia.s60tools.apiquery.shared.searchmethod.ISearchMethodExtension#isSupportedQueryType(int)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   137
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   138
	public boolean isSupportedQueryType(int queryType) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   139
		// By default the query type is not supported.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   140
		boolean isSupported = false;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   141
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   142
		switch (queryType) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   143
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   144
	     	// Flow through (supported types)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   145
			case APIQueryParameters.QUERY_BY_API_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   146
			case APIQueryParameters.QUERY_BY_SUBSYSTEM_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   147
			case APIQueryParameters.QUERY_BY_LIB_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   148
			case APIQueryParameters.QUERY_BY_HEADER_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   149
				 isSupported = true;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   150
			     break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   151
			     
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   152
			default:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   153
				break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   154
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   155
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   156
		return isSupported;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   157
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   158
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   159
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   160
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   161
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   162
	 * @see com.nokia.s60tools.apiquery.shared.searchmethod.ISearchMethodExtension#getAPIDetails(com.nokia.s60tools.apiquery.shared.datatypes.APIShortDescription)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   163
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   164
	public APIDetails getAPIDetails(APIShortDescription summary) throws QueryOperationFailedException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   165
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   166
		CacheEntryStorage storage = CacheEntryStorage.getInstance();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   167
		if(!storage.isLoaded()){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   168
			startUpdateJobAndWaitUntilFinished(storage);		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   169
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   170
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   171
		APIDetails details = null;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   172
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   173
		CacheEntry entry = (CacheEntry) storage.getByEntryId(summary.getSource());		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   174
		details = entry.getAPIDetails();		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   175
		return details;				
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   176
	}	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   177
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   178
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   179
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   180
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   181
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   182
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   183
	 * @see com.nokia.s60tools.apiquery.shared.searchmethod.ISearchMethodExtension#getEntryStorageInstance()
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   184
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   185
	public AbstractEntryStorage getEntryStorageInstance() {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   186
		return CacheEntryStorage.getInstance();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   187
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   188
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   189
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   190
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   191
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   192
	 * Handles (run) query for one entry
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   193
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   194
	 * @param parameters
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   195
	 * @param runSynchronous
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   196
	 * @return APIs matching search criteria
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   197
	 * @throws QueryOperationFailedException
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   198
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   199
	private Collection<APIShortDescription> handleSingleEntryQuery(APIQueryParameters parameters, boolean runSynchronous) throws QueryOperationFailedException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   200
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   201
		ArrayList<APIShortDescription> summary = null;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   202
		// Create a job to convert needed Excel If sheets to XML format
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   203
		try {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   204
				summary = getSummarys(parameters, runSynchronous);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   205
		} catch (Exception e1) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   206
			examineAndHandleQueryFailureException(e1);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   207
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   208
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   209
		return summary;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   210
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   211
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   212
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   213
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   214
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   215
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   216
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   217
	 * @see com.nokia.s60tools.apiquery.shared.searchmethod.ISearchMethodExtension#runAPIQuery(com.nokia.s60tools.apiquery.shared.datatypes.APIQueryParameters)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   218
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   219
	public APIShortDescriptionSearchResults runAPIQuery(APIQueryParameters parameters) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   220
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   221
		this.apiQueryParameters  = parameters;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   222
		// Owerwriting query for if sheets, because of usually there is multiple
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   223
		// (>100) data sources
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   224
		APIShortDescriptionSearchResults results = new APIShortDescriptionSearchResults();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   225
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   226
		try {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   227
			// Making query for each configured and selected server entry.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   228
			AbstractEntry[] selEntryArr = getEntryStorageInstance().getSelectedEntries();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   229
			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   230
			// Were any entries configured or selected?
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   231
			if(selEntryArr.length == 0){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   232
				throw new QueryOperationFailedException(Messages.getString("LocalCacheSearchMethodExtension.No_Server_Entries_ErrMsg")); //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   233
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   234
			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   235
			boolean runSynchronous = !parameters.isQueryFromUI();// If query
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   236
																	// comes
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   237
																	// from UI,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   238
																	// running
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   239
																	// async, if
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   240
																	// not,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   241
																	// running
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   242
																	// sync
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   243
			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   244
			// If there was semi-comma separated search items or not
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   245
			if (parameters.getSearchString().contains(
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   246
					APIQueryParameters.SEARCH_ITEM_SEPARATOR_CHAR)) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   247
				results.addSearchResults(handleMultiEntryQuery(parameters, runSynchronous));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   248
			} else {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   249
				results.addSearchResults(handleSingleEntryQuery(parameters, runSynchronous));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   250
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   251
		}catch(QueryOperationFailedException e){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   252
			results.addSearchError(e);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   253
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   254
		catch (Exception e) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   255
			e.printStackTrace();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   256
			results.addSearchError( new QueryOperationFailedException(e.getMessage()));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   257
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   258
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   259
		return results;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   260
	}		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   261
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   262
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   263
	 * Get APIShortDescriptions from XML Excel If Sheet XML files.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   264
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   265
	 * @return
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   266
	 * @throws QueryOperationFailedException
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   267
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   268
	private ArrayList<APIShortDescription> getSummarys( APIQueryParameters parameters, boolean runSynchronous) throws QueryOperationFailedException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   269
		ArrayList<APIShortDescription> summary = new ArrayList<APIShortDescription>();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   270
		String curId = "";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   271
		try {		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   272
			CacheEntryStorage storage = CacheEntryStorage.getInstance();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   273
			Collection<AbstractEntry> selectedAPIs = storage.getSelectedEntriesCollection();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   274
			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   275
			// if storage is not loaded, e.g. this is first time of searching
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   276
			// after Carbide is started up, must load data first
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   277
			if(!storage.isLoaded() && !runSynchronous){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   278
				startUpdateJobAndRunQueryWhenFinished(storage);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   279
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   280
			else{
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   281
				if(!storage.isLoaded()){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   282
					startUpdateJobAndWaitUntilFinished(storage);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   283
				}				
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   284
			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   285
				String [] searchStrings = new String []{parameters.getSearchString()};			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   286
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   287
				
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   288
				// Try to found search string from selected search method
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   289
				// (selected field from XML data)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   290
				for (AbstractEntry abstractEntry : selectedAPIs) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   291
					
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   292
					CacheEntry entry = (CacheEntry)abstractEntry;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   293
					
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   294
					APIDetails det = entry.getAPIDetails();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   295
					if(det == null){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   296
						APIQueryConsole.getInstance().println(Messages.getString("LocalCacheSearchMethodExtension.UnexpectedEntryErrMsg") +entry.getId()); //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   297
						continue;// Should not be able to occur, because load
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   298
									// deselects source if load fails
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   299
					}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   300
					curId =  entry.getId(); 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   301
					String curSourceDesc = entry.getName() ;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   302
					// Select Field from APIDetail, by selected search type, to
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   303
					// found if that field contais the search string
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   304
					APIDetailField fieldToSearchFor = getSelectedSearchField(det, parameters.getQueryType());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   305
					String fieldValueToSearch = fieldToSearchFor.getValue();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   306
					String apiName = det.getDetail(MetadataXMLToUIMappingRules.NAME).getValue();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   307
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   308
					DbgUtility.println(DbgUtility.PRIORITY_LOOP, "From API: " +//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   309
							apiName
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   310
							+", file: " + curId //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   311
							+", querytype: " +parameters.getQueryType()//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   312
							+ ", foundig values to search for: " +fieldValueToSearch);//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   313
					
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   314
					// Looking for all search strings if there was semi-comma
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   315
					// separated strings to search for
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   316
					for (int i = 0; i < searchStrings.length; i++) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   317
						boolean matchs;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   318
						if(apiQueryParameters.isExactMatchInUse()){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   319
							// If exact match is in use, using equals as match
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   320
							matchs = fieldValueToSearch.equalsIgnoreCase(searchStrings[i]);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   321
						}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   322
						else{
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   323
							// If exact match is not in use, and if result
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   324
							// contains search string (case insensitive)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   325
							matchs = fieldValueToSearch.toLowerCase().contains(searchStrings[i].toLowerCase());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   326
						}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   327
						// If result matches to search string, creating new API
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   328
						// Summary object and add it to result
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   329
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   330
						if(matchs){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   331
							APIShortDescription sum = new APIShortDescription(
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   332
									apiName
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   333
									,curId,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   334
									curSourceDesc);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   335
							// If API Details should be added to description
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   336
							// then adding it
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   337
							if(parameters.isDetailsMentToAddToDescriptions()){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   338
								sum.setAPIDetails(det);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   339
							}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   340
							summary.add(sum);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   341
						}					
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   342
					}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   343
				}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   344
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   345
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   346
		} catch (Exception e) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   347
			DbgUtility.println(DbgUtility.PRIORITY_OPERATION, "Error when handling file: " + curId);//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   348
			e.printStackTrace();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   349
			examineAndHandleQueryFailureException(e);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   350
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   351
		return summary;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   352
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   353
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   354
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   355
	 * Update (load) data sources if not loaded yet, after done, launch real
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   356
	 * query
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   357
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   358
	 * @param storage
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   359
	 * @throws QueryOperationFailedException
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   360
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   361
	private void startUpdateJobAndRunQueryWhenFinished(CacheEntryStorage storage)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   362
			throws QueryOperationFailedException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   363
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   364
		try {		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   365
			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   366
			SdkInformation info = SDKFinder.getSDKInformation(storage.getCurrentlySelectedSDKID());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   367
			UpdateSDKSelectionJob job = new UpdateSDKSelectionJob(Messages.getString("LocalCacheSearchMethodExtension.UpdatingDataSourceMsg_Part1") +info.getSdkId() +Messages.getString("LocalCacheSearchMethodExtension.UpdatingDataSourceMsg_Part2"), info, false); //$NON-NLS-1$ //$NON-NLS-2$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   368
			if(job.isAllreadyRunning()){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   369
				return;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   370
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   371
			job.setPriority(Job.DECORATE);			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   372
			job.addJobChangeListener(this);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   373
			job.schedule();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   374
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   375
		} catch (Exception e) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   376
			e.printStackTrace();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   377
			examineAndHandleQueryFailureException(e);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   378
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   379
	}	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   380
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   381
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   382
	 * Update (load) data sources if not loaded yet, after done, launch real
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   383
	 * query
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   384
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   385
	 * @param storage
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   386
	 * @throws QueryOperationFailedException
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   387
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   388
	private void startUpdateJobAndWaitUntilFinished(CacheEntryStorage storage)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   389
			throws QueryOperationFailedException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   390
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   391
		try {		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   392
			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   393
			SdkInformation info = SDKFinder.getSDKInformation(storage.getCurrentlySelectedSDKID());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   394
			UpdateSDKSelectionJob job = new UpdateSDKSelectionJob(Messages.getString("LocalCacheSearchMethodExtension.UpdatingDataSourceMsg_Part1") +info.getSdkId() +Messages.getString("LocalCacheSearchMethodExtension.UpdatingDataSourceMsg_Part2"), info, false); //$NON-NLS-1$ //$NON-NLS-2$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   395
			if(job.isAllreadyRunning()){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   396
				return;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   397
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   398
			job.setPriority(Job.DECORATE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   399
			job.schedule();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   400
			job.join();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   401
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   402
		} catch (Exception e) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   403
			e.printStackTrace();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   404
			examineAndHandleQueryFailureException(e);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   405
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   406
	}	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   407
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   408
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   409
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   410
	 * get search field by query type
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   411
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   412
	 * @param det
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   413
	 * @param queryType
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   414
	 * @return
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   415
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   416
	private APIDetailField getSelectedSearchField(APIDetails det, int queryType) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   417
				
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   418
		APIDetailField field;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   419
		switch (queryType) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   420
		case APIQueryParameters.QUERY_BY_API_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   421
			field = det.getDetail(MetadataXMLToUIMappingRules.NAME);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   422
			break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   423
		case APIQueryParameters.QUERY_BY_SUBSYSTEM_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   424
			field = det.getDetail(MetadataXMLToUIMappingRules.SUBSYSTEM);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   425
			break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   426
		case APIQueryParameters.QUERY_BY_LIB_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   427
			field = det.getDetail(MetadataXMLToUIMappingRules.LIBS);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   428
			break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   429
		case APIQueryParameters.QUERY_BY_HEADER_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   430
			field = det.getDetail(MetadataXMLToUIMappingRules.HEADERS);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   431
			break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   432
		default:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   433
			field = det.getDetail(MetadataXMLToUIMappingRules.NAME);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   434
			break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   435
		}		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   436
		return field;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   437
	}	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   438
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   439
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   440
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   441
	 * Handles (run) query for several search strings
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   442
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   443
	 * @param parameters
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   444
	 * @param runSynchronous
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   445
	 * @return APIs matching search criteria
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   446
	 * @throws QueryOperationFailedException
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   447
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   448
	private Collection<APIShortDescription> handleMultiEntryQuery(APIQueryParameters parameters, boolean runSynchronous) throws QueryOperationFailedException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   449
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   450
		// Using table to make sure that same API:s does not exist more than
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   451
		// once
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   452
		Hashtable<String, APIShortDescription> summary  = new Hashtable<String, APIShortDescription>();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   453
		String [] searchStrings = parameters.getSearchString().split(APIQueryParameters.SEARCH_ITEM_SEPARATOR_CHAR);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   454
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   455
		APIQueryParameters param ;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   456
		Collection<APIShortDescription>  temp;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   457
		// Adding all APIDetails to collection one by one
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   458
		for (int i = 0; i < searchStrings.length; i++) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   459
			param = new APIQueryParameters(parameters.getQueryType(), searchStrings[i]);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   460
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   461
			temp = handleSingleEntryQuery(param, runSynchronous);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   462
			for (APIShortDescription api : temp) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   463
				summary.put(api.getName(), api);// One API can contain in
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   464
												// results only once. HashTable
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   465
												// does not allow multiple
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   466
												// occurances as keys.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   467
			}			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   468
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   469
		}		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   470
		return summary.values();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   471
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   472
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   473
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   474
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   475
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   476
	 * @see com.nokia.s60tools.apiquery.shared.searchmethod.ISearchMethodExtension#getAPIDetails(java.util.Collection)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   477
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   478
	public Hashtable<String, APIDetails> getAPIDetails(Collection<APIShortDescription> apis) throws QueryOperationFailedException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   479
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   480
		CacheEntryStorage storage = CacheEntryStorage.getInstance();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   481
		if(!storage.isLoaded()){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   482
			startUpdateJobAndWaitUntilFinished(storage);		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   483
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   484
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   485
		Hashtable<String, APIDetails> apiDetails = new Hashtable<String, APIDetails>(apis.size());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   486
		for (APIShortDescription summary : apis) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   487
			apiDetails.put(summary.getName(), getAPIDetails(summary));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   488
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   489
		return apiDetails;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   490
	}	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   491
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   492
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   493
	 * Examines the type of throwable parameter, and adds appropriate error
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   494
	 * message or default message, and forwards the information for further
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   495
	 * processing.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   496
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   497
	 * @param throwable
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   498
	 *            Throwable to be examined.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   499
	 * @throws QueryOperationFailedException
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   500
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   501
	private void examineAndHandleQueryFailureException(Throwable throwable) throws QueryOperationFailedException{
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   502
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   503
		String errMsg = Messages.getString("LocalCacheSearchMethodExtension.UnexpectedException_ErrMsg"); //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   504
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   505
		if(throwable instanceof IOException) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   506
			errMsg = Messages.getString("LocalCacheSearchMethodExtension.IOException_ErrMsg"); //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   507
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   508
		else if(throwable instanceof XMLNotValidException) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   509
			errMsg = Messages.getString("LocalCacheSearchMethodExtension.InvalidXML_ErrMsg"); //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   510
		} 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   511
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   512
		queryFailed(errMsg, throwable.getMessage());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   513
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   514
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   515
	 * Throws an exception for user with the given message.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   516
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   517
	 * @param errorMsg
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   518
	 *            Main error message for the user.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   519
	 * @param detailedMsg
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   520
	 *            More detailed message shown in parenthesis.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   521
	 * @throws QueryOperationFailedException
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   522
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   523
	private void queryFailed(String errorMsg, String detailedMsg) throws QueryOperationFailedException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   524
		APIQueryConsole.getInstance().println(errorMsg, APIQueryConsole.MSG_ERROR);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   525
		String combinedMsg = errorMsg + " (" + detailedMsg + ")."; //$NON-NLS-1$ //$NON-NLS-2$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   526
		throw new QueryOperationFailedException(combinedMsg);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   527
	}	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   528
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   529
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   530
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   531
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   532
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   533
	 * @see org.eclipse.core.runtime.jobs.IJobChangeListener#done(org.eclipse.core.runtime.jobs.IJobChangeEvent)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   534
	 *      When data sources (metadata) is loaded, running real query
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   535
	 * @see com.nokia.s60tools.apiquery.ui.views.main.MainView#runAPIQueryFromExternalClass(int,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   536
	 *      java.lang.String)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   537
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   538
	public void done(IJobChangeEvent event) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   539
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   540
		Job job = event.getJob();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   541
		UpdateSDKSelectionJob ifsJob = (UpdateSDKSelectionJob)job;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   542
		ifsJob.reportEndTime();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   543
		IStatus status = ifsJob.getResult();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   544
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   545
		// Chekc that job status was ok before launching query
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   546
		if( status != null && status.getSeverity() == IStatus.OK) { 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   547
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   548
			// Launching the the real query when XML:s was generated
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   549
			Runnable runQueryRunnable = new Runnable(){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   550
				public void run(){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   551
					try {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   552
						QueryServices.runAPIQuery(apiQueryParameters.getQueryType(),
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   553
								apiQueryParameters.getSearchString());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   554
					} catch (QueryOperationFailedException e) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   555
						APIQueryConsole.getInstance().println(Messages.getString("LocalCacheSearchMethodExtension.Failed_To_Start_Query_ErrMsg")  //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   556
								+e.getMessage(), APIQueryConsole.MSG_ERROR);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   557
						e.printStackTrace();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   558
					}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   559
				}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   560
			};
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   561
						
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   562
			// Showing a visible message has to be done in its own thread
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   563
			// in order not to cause invalid thread access
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   564
			Display.getDefault().asyncExec(runQueryRunnable);        	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   565
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   566
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   567
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   568
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   569
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   570
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   571
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   572
	 * @see org.eclipse.core.runtime.jobs.IJobChangeListener#aboutToRun(org.eclipse.core.runtime.jobs.IJobChangeEvent)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   573
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   574
	public void aboutToRun(IJobChangeEvent event) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   575
		// Not needed
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   576
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   577
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   578
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   579
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   580
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   581
	 * @see org.eclipse.core.runtime.jobs.IJobChangeListener#awake(org.eclipse.core.runtime.jobs.IJobChangeEvent)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   582
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   583
	public void awake(IJobChangeEvent event) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   584
		// Not needed
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   585
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   586
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   587
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   588
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   589
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   590
	 * @see org.eclipse.core.runtime.jobs.IJobChangeListener#running(org.eclipse.core.runtime.jobs.IJobChangeEvent)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   591
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   592
	public void running(IJobChangeEvent event) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   593
		// Not needed
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   594
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   595
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   596
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   597
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   598
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   599
	 * @see org.eclipse.core.runtime.jobs.IJobChangeListener#scheduled(org.eclipse.core.runtime.jobs.IJobChangeEvent)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   600
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   601
	public void scheduled(IJobChangeEvent event) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   602
		// Not needed
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   603
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   604
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   605
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   606
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   607
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   608
	 * @see org.eclipse.core.runtime.jobs.IJobChangeListener#sleeping(org.eclipse.core.runtime.jobs.IJobChangeEvent)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   609
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   610
	public void sleeping(IJobChangeEvent event) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   611
		// Not needed
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   612
	}	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   613
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   614
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   615
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   616
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   617
	 * @see com.nokia.s60tools.apiquery.shared.searchmethod.ISearchMethodExtension#getAPIDetailsToReport()
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   618
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   619
	public String[] getAPIDetailsToReport(Set <String> usedAPIs, Hashtable<String, APIDetails> projectUsingAPIDetails) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   620
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   621
		boolean containsCollection = false;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   622
		boolean containsSubsystem = false;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   623
		for (String api : usedAPIs) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   624
			APIDetails det = projectUsingAPIDetails.get(api);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   625
			if(det == null || det.getKeys() == null){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   626
				continue;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   627
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   628
			if(det.getKeys().contains(MetadataXMLToUIMappingRules.COLLECTION)){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   629
				containsCollection = true;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   630
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   631
			if(det.getKeys().contains(MetadataXMLToUIMappingRules.SUBSYSTEM)){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   632
				containsSubsystem = true;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   633
			}	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   634
			// If we found occurrence of both subsystems version (sybsystem in
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   635
			// data version 1.0 collection in data version 2.0)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   636
			// we can continue because then both headers will occur in report
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   637
			// anyway
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   638
			if(containsCollection && containsSubsystem){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   639
				break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   640
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   641
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   642
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   643
		String [] apiDetailsToReport;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   644
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   645
		// If both subsystem versions is found
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   646
		if(containsCollection && containsSubsystem){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   647
			apiDetailsToReport= new String []{
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   648
				MetadataXMLToUIMappingRules.COLLECTION,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   649
				MetadataXMLToUIMappingRules.SUBSYSTEM,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   650
				MetadataXMLToUIMappingRules.RELEASE_CATEGORY,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   651
				MetadataXMLToUIMappingRules.RELEASE_SINCE_VERSION,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   652
				MetadataXMLToUIMappingRules.RELEASE_DEPRECATED_SINCE_VERSION,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   653
				MetadataXMLToUIMappingRules.LIBS		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   654
			};
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   655
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   656
		// if we found only collections, not subsystems
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   657
		else if(containsCollection && !containsSubsystem){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   658
			apiDetailsToReport= new String []{
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   659
				MetadataXMLToUIMappingRules.COLLECTION,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   660
				MetadataXMLToUIMappingRules.RELEASE_CATEGORY,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   661
				MetadataXMLToUIMappingRules.RELEASE_SINCE_VERSION,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   662
				MetadataXMLToUIMappingRules.RELEASE_DEPRECATED_SINCE_VERSION,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   663
				MetadataXMLToUIMappingRules.LIBS		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   664
			};
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   665
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   666
		// else if we dont found collections or we did not found anything, using
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   667
		// subsystem as default value
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   668
		else {// if(!containsCollection){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   669
			apiDetailsToReport= new String []{
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   670
				MetadataXMLToUIMappingRules.SUBSYSTEM,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   671
				MetadataXMLToUIMappingRules.RELEASE_CATEGORY,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   672
				MetadataXMLToUIMappingRules.RELEASE_SINCE_VERSION,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   673
				MetadataXMLToUIMappingRules.RELEASE_DEPRECATED_SINCE_VERSION,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   674
				MetadataXMLToUIMappingRules.LIBS		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   675
			};
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   676
		}				
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   677
		return apiDetailsToReport;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   678
	}	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   679
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   680
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   681
	 * Maps query type to API Detail topic in API Details.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   682
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   683
	 * @param queryType
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   684
	 *            Query type constant.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   685
	 * @return Name of the API Detail.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   686
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   687
	public String getAPIDetailNameInDetailsByQueryType(int queryType){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   688
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   689
		String apiDetail = null;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   690
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   691
		switch (queryType) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   692
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   693
		case APIQueryParameters.QUERY_BY_API_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   694
			apiDetail = MetadataXMLToUIMappingRules.NAME;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   695
			break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   696
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   697
		case APIQueryParameters.QUERY_BY_SUBSYSTEM_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   698
			apiDetail = MetadataXMLToUIMappingRules.SUBSYSTEM;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   699
			break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   700
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   701
		case APIQueryParameters.QUERY_BY_DLL_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   702
			apiDetail = XMLUtils.DESCRIPTION_DLLS;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   703
			break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   704
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   705
		case APIQueryParameters.QUERY_BY_LIB_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   706
			apiDetail = MetadataXMLToUIMappingRules.LIBS;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   707
			break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   708
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   709
		case APIQueryParameters.QUERY_BY_HEADER_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   710
			apiDetail = MetadataXMLToUIMappingRules.HEADERS;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   711
			break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   712
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   713
		case APIQueryParameters.QUERY_BY_CRPS_KEY_NAME:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   714
			apiDetail = XMLUtils.DESCRIPTION_KEY_NAME;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   715
			break;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   716
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   717
		default:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   718
			throw new IllegalArgumentException(Messages.getString("APIQueryParameters.QueryTypePart1_ErrMsg")  //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   719
					                           + queryType
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   720
					                           + Messages.getString("APIQueryParameters.QueryTypePart2_ErrMsg") //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   721
					                           );
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   722
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   723
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   724
		return apiDetail;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   725
	}		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   726
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   727
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   728
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   729
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   730
	 * @see com.nokia.s60tools.apiquery.shared.searchmethod.ISearchMethodExtension#getQueryTypeByAPIDetailNameInDetails(java.lang.String)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   731
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   732
	public int getQueryTypeByAPIDetailNameInDetails(String queryType) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   733
		int queryInt = -1;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   734
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   735
		if(queryType == null){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   736
			return queryInt;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   737
		}		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   738
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   739
		if(queryType.equals(MetadataXMLToUIMappingRules.NAME)){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   740
			queryInt = APIQueryParameters.QUERY_BY_API_NAME;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   741
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   742
		else if(queryType.equals( MetadataXMLToUIMappingRules.SUBSYSTEM)){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   743
			queryInt = APIQueryParameters.QUERY_BY_SUBSYSTEM_NAME;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   744
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   745
		else if(queryType.equals(XMLUtils.DESCRIPTION_DLLS)){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   746
			queryInt = APIQueryParameters.QUERY_BY_DLL_NAME;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   747
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   748
		else if(queryType.equals(MetadataXMLToUIMappingRules.LIBS)){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   749
			queryInt = APIQueryParameters.QUERY_BY_LIB_NAME;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   750
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   751
		else if(queryType.equals(MetadataXMLToUIMappingRules.HEADERS)){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   752
			queryInt = APIQueryParameters.QUERY_BY_HEADER_NAME;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   753
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   754
		else if(queryType.equals(XMLUtils.DESCRIPTION_KEY_NAME)){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   755
			queryInt = APIQueryParameters.QUERY_BY_CRPS_KEY_NAME;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   756
		}		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   757
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   758
		return queryInt;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   759
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   760
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   761
	public boolean isAsyncQueryPreferred() {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   762
		return false;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   763
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   764
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   765
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   766
/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   767
 * opens the header file in the workbench
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   768
 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   769
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   770
	public int openHeaderFile(String headerName,String source) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   771
		try{
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   772
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   773
			String temp =source.replace(
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   774
					"\\", "/");
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   775
			System.out.println(temp);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   776
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   777
			temp = temp.substring(0, temp.lastIndexOf("/"))
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   778
					+ "/inc/" + headerName;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   779
			temp = "file://" + temp;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   780
			System.out.print("temp" + temp);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   781
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   782
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   783
			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   784
			OpenFileAction action = new OpenFileAction();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   785
			action.openFile(new URI(temp), headerName);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   786
		}catch (Exception e) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   787
			return 1;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   788
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   789
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   790
		return 0;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   791
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   792
	*/
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   793
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   794
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   795
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   796
	public boolean serachHeaderLinkEnable() {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   797
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   798
		return true;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   799
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   800
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   801
	public String[] getHeaderSourceList() {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   802
		return	new String[] 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   803
				         {"http://s60lxr", "http://developer.symbian.org/xref/oss", "3.2RnDSDK", "pf_5250robot"};			    
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   804
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   805
		}	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   806
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   807
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   808
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   809
		public int  openHeaderFile(String headerName, String APIName) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   810
			try{
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   811
			System.out.println("header" + headerName + "APINAME " +APIName);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   812
				
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   813
		// get the source
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   814
		String	source =	LocalCacheUIComposite.headerSource;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   815
		String url = " ";
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   816
		boolean isweb = false;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   817
		if(source.equalsIgnoreCase("http://s60lxr")){
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   818
			 url  = "http://s60lxr/search?filestring=%2F"+headerName+"%24&advanced=1&string=";
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   819
			 isweb = true;			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   820
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   821
		else if(source.equalsIgnoreCase("http://developer.symbian.org/xref/oss"))
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   822
		{url="http://developer.symbian.org/xref/epl/search?q=&defs=&refs=&path="+headerName+"&hist=&project=%2FMCL";
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   823
		isweb = true;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   824
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   825
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   826
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   827
			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   828
			if(isweb)	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   829
			{	//open from the browser	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   830
				IWorkbench workbench = PlatformUI.getWorkbench();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   831
				IWebBrowser browser;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   832
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   833
				browser = workbench.getBrowserSupport()
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   834
						.createBrowser(null);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   835
							
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   836
				browser
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   837
						.openURL(new java.net.URL(url));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   838
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   839
			else
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   840
			{ //open from the sdk
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   841
				SDKUtil.headerOpen(source, APIName, headerName);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   842
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   843
			}catch (Exception e) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   844
				e.printStackTrace();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   845
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   846
			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   847
			return 0 ;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   848
				
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   849
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   850
				
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   851
	 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   852
			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   853
			
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   854
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   855
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   856
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   857
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   858
		
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   859
}