srcanaapps/apiquerytool/com.nokia.s60tools.apiquery.cache/src/com/nokia/s60tools/apiquery/cache/configuration/CacheEntryStorage.java
author noe\swadi
Sat, 09 Jan 2010 10:04:11 +0530
changeset 0 a02c979e8dfd
permissions -rw-r--r--
1. Copyrights changed to EPL 2. Feature updates mentioned in release notes.
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.configuration;
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.BufferedOutputStream;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    21
import java.io.File;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    22
import java.io.FileOutputStream;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    23
import java.io.IOException;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    24
import java.util.ArrayList;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    25
import java.util.Collection;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    26
import java.util.Iterator;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    27
import java.util.LinkedHashMap;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    28
import java.util.LinkedHashSet;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    29
import java.util.Map;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    30
import java.util.Set;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    31
import java.util.Vector;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    32
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    33
import org.eclipse.core.runtime.IProgressMonitor;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    34
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    35
import com.nokia.s60tools.apiquery.cache.plugin.CachePlugin;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    36
import com.nokia.s60tools.apiquery.cache.resources.Messages;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    37
import com.nokia.s60tools.apiquery.shared.datatypes.APIDetailField;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    38
import com.nokia.s60tools.apiquery.shared.datatypes.APIDetails;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    39
import com.nokia.s60tools.apiquery.shared.datatypes.config.AbstractEntry;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    40
import com.nokia.s60tools.apiquery.shared.datatypes.config.AbstractEntryStorage;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    41
import com.nokia.s60tools.apiquery.shared.datatypes.config.DuplicateEntryException;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    42
import com.nokia.s60tools.apiquery.shared.datatypes.config.EntryNotFoundException;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    43
import com.nokia.s60tools.apiquery.shared.datatypes.config.IConfigurationChangedListener;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    44
import com.nokia.s60tools.apiquery.shared.exceptions.XMLNotValidException;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    45
import com.nokia.s60tools.apiquery.shared.job.JobCancelledByUserException;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    46
import com.nokia.s60tools.apiquery.shared.util.console.APIQueryConsole;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    47
import com.nokia.s60tools.apiquery.shared.util.xml.XMLElementData;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    48
import com.nokia.s60tools.apiquery.shared.util.xml.XMLUtils;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    49
import com.nokia.s60tools.sdk.SdkInformation;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    50
import com.nokia.s60tools.util.debug.DbgUtility;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    51
import com.nokia.s60tools.util.resource.FileUtils;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    52
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    53
/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    54
 * Singleton class that is created on plugin startup, and is kept active as long
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    55
 * as plugin is active.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    56
 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    57
 * The purpose of this class is to store If Sheet entries configured by user.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    58
 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    59
 * The format of used XML:
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    60
 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    61
 * <?xml version="1.0" encoding="UTF-8" ?> <entries> <metadata id="<drive>:\<path>\my_api.metaxml"
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    62
 * selected="true" sdkid="<DEVICE ID>" size="665" last_modified="1228305614126" />
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    63
 * <metadata id="<drive2>:\<path>\my_api2.metaxml" selected="false" sdkid="<DEVICE2
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    64
 * ID>" size="802" last_modified="1228305614126" /> </entries>
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    65
 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    66
 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    67
public class CacheEntryStorage extends AbstractEntryStorage {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    68
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    69
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    70
	 * Singleton instance.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    71
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    72
	static private CacheEntryStorage instance = null;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    73
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 Singleton instance accessor.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    76
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    77
	 * @return Returns instance of this singleton class-
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    78
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    79
	public static CacheEntryStorage getInstance() {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    80
		if (instance == null) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    81
			instance = new CacheEntryStorage();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    82
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    83
		return instance;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    84
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    85
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    86
	//
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    87
	// Variables for creating XML file from server entry data.
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 static final String XML_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    90
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    91
	private static final String XML_ROOT_START_ELEMENT = "<entries>";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    92
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    93
	private static final String XML_ROOT_END_ELEMENT = "</entries>";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    94
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    95
	private static final String XML_ATTRIBUTE_ASSIGNMENT_WITH_QUOTE_START = "=\"";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    96
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    97
	private static final String CARRIAGE_RETURN_AND_NEWLINE = "\r\n";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    98
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    99
	private static final String SINGLE_SPACE = " ";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   100
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   101
	private static final String QUOTE_AND_SINGLE_SPACE = "\" ";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   102
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   103
	private static final String ELEMENT_START_STR = "<";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   104
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   105
	private static final String ELEMENT_END_STR = "/>"; //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   106
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   107
	//
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   108
	// XML element and attribute names used for storing configuration
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   109
	//	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   110
	private static final String METADATA_ELEMENT = "metadata";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   111
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   112
	private static final String ID_ATTRIBUTE = "id";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   113
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   114
	private static final String SDK_ID_ATTRIBUTE = "sdkid";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   115
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   116
	private static final String SIZE_ATTRIBUTE = "size";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   117
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   118
	private static final String SELECTION_ATTRIBUTE = "selected";//$NON-NLS-1$	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   119
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   120
	private static final String DATE_ATTRIBUTE = "last_modified";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   121
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   122
	private static final String API_NAME = "api_name";//$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   123
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   124
	private Vector<XMLNotValidException> loadErrors = null;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   125
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   126
	private boolean isLoaded = false;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   127
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   128
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   129
	 * Private default constructor.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   130
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   131
	private CacheEntryStorage() {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   132
		super();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   133
		DbgUtility.println(DbgUtility.PRIORITY_CLASS,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   134
				"-- <<create>> --> " + getClass().getName()); //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   135
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   136
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   137
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   138
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   139
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   140
	 * @see com.nokia.s60tools.apiquery.shared.datatypes.config.AbstractEntryStorage#save(java.lang.String)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   141
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   142
	public void save(String destinationFileAbsolutePathName) throws IOException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   143
		// System.out.println("save" + destinationFileAbsolutePathName);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   144
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   145
		StringBuffer xmlDataBuf = new StringBuffer();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   146
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   147
		File f = new File(destinationFileAbsolutePathName);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   148
		// Deleting possibly old
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   149
		if (f.exists()) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   150
			if (!f.canWrite()) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   151
				String cannotWriteToFileErrMsg = Messages
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   152
						.getString("CacheEntry.Destination_File_Is_Write_Protected_ErrMsg") //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   153
						+ destinationFileAbsolutePathName;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   154
				APIQueryConsole.getInstance().println(cannotWriteToFileErrMsg,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   155
						APIQueryConsole.MSG_ERROR);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   156
				throw new RuntimeException(cannotWriteToFileErrMsg);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   157
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   158
			if (!f.delete()) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   159
				String cannotWriteToFileErrMsg = Messages
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   160
						.getString("CacheEntry.Destination_File_Is_In_Use_ErrMsg") //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   161
						+ destinationFileAbsolutePathName;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   162
				APIQueryConsole.getInstance().println(cannotWriteToFileErrMsg,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   163
						APIQueryConsole.MSG_ERROR);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   164
				throw new RuntimeException(cannotWriteToFileErrMsg);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   165
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   166
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   167
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   168
		FileOutputStream fos = new FileOutputStream(f);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   169
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   170
		BufferedOutputStream bos = new BufferedOutputStream(fos);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   171
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   172
		xmlDataBuf.append(XML_HEADER);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   173
		xmlDataBuf.append(CARRIAGE_RETURN_AND_NEWLINE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   174
		xmlDataBuf.append(XML_ROOT_START_ELEMENT);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   175
		xmlDataBuf.append(CARRIAGE_RETURN_AND_NEWLINE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   176
		Collection<AbstractEntry> entriesColl = getEntries();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   177
		// Create <ifheet>...</ifheet> XML -elements from entries
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   178
		for (AbstractEntry entryBeforeCast : entriesColl) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   179
			CacheEntry entry = (CacheEntry) entryBeforeCast;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   180
			xmlDataBuf.append(ELEMENT_START_STR + METADATA_ELEMENT
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   181
					+ SINGLE_SPACE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   182
			xmlDataBuf.append(ID_ATTRIBUTE
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   183
					+ XML_ATTRIBUTE_ASSIGNMENT_WITH_QUOTE_START + entry.getId()
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   184
					+ QUOTE_AND_SINGLE_SPACE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   185
			xmlDataBuf.append(SELECTION_ATTRIBUTE
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   186
					+ XML_ATTRIBUTE_ASSIGNMENT_WITH_QUOTE_START
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   187
					+ Boolean.toString(entry.isSelected())
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   188
					+ QUOTE_AND_SINGLE_SPACE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   189
			xmlDataBuf.append(SDK_ID_ATTRIBUTE
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   190
					+ XML_ATTRIBUTE_ASSIGNMENT_WITH_QUOTE_START
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   191
					+ entry.getSDKID() + QUOTE_AND_SINGLE_SPACE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   192
			xmlDataBuf.append(SIZE_ATTRIBUTE
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   193
					+ XML_ATTRIBUTE_ASSIGNMENT_WITH_QUOTE_START
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   194
					+ entry.getSize() + QUOTE_AND_SINGLE_SPACE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   195
			xmlDataBuf.append(DATE_ATTRIBUTE
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   196
					+ XML_ATTRIBUTE_ASSIGNMENT_WITH_QUOTE_START
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   197
					+ entry.getDate() + QUOTE_AND_SINGLE_SPACE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   198
			xmlDataBuf.append(API_NAME
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   199
					+ XML_ATTRIBUTE_ASSIGNMENT_WITH_QUOTE_START
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   200
					+ entry.getAPIName() + QUOTE_AND_SINGLE_SPACE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   201
			//System.out.println("apiname" +entry.getAPIName());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   202
			xmlDataBuf.append(ELEMENT_END_STR);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   203
			xmlDataBuf.append(CARRIAGE_RETURN_AND_NEWLINE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   204
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   205
		xmlDataBuf.append(XML_ROOT_END_ELEMENT);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   206
		xmlDataBuf.append(CARRIAGE_RETURN_AND_NEWLINE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   207
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   208
		// Writing data to file
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   209
		byte[] writeData = xmlDataBuf.toString().getBytes();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   210
		bos.write(writeData, 0, writeData.length);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   211
		bos.flush();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   212
		bos.close();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   213
		fos.close();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   214
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   215
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   216
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   217
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   218
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   219
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   220
	 * @see com.nokia.s60tools.apiquery.shared.datatypes.config.AbstractEntryStorage#load(java.lang.String)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   221
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   222
	public void load(String storageFilePathName) throws IOException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   223
		//System.out.println("storage file path" + storageFilePathName);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   224
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   225
		// Setting elements to be parsed
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   226
		Set<String> elemNameSet = new LinkedHashSet<String>();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   227
		elemNameSet.add(METADATA_ELEMENT); // server element
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   228
		// Setting attributes to be parsed for server element
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   229
		Map<String, String> attrNameSet = new LinkedHashMap<String, String>();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   230
		attrNameSet.put(ID_ATTRIBUTE, ID_ATTRIBUTE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   231
		attrNameSet.put(SELECTION_ATTRIBUTE, SELECTION_ATTRIBUTE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   232
		attrNameSet.put(SDK_ID_ATTRIBUTE, SDK_ID_ATTRIBUTE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   233
		attrNameSet.put(SIZE_ATTRIBUTE, SIZE_ATTRIBUTE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   234
		attrNameSet.put(DATE_ATTRIBUTE, DATE_ATTRIBUTE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   235
		attrNameSet.put(API_NAME, API_NAME);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   236
		Map<String, Map<String, String>> attributeMap = new LinkedHashMap<String, Map<String, String>>();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   237
		attributeMap.put(METADATA_ELEMENT, attrNameSet);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   238
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   239
		try {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   240
			// Loading XML data into memory
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   241
			StringBuffer xmlData = FileUtils
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   242
					.loadDataFromFile(storageFilePathName);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   243
			// Parsing elements from the XML data and adding found server
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   244
			// entries to storage
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   245
			XMLElementData[] elementArr = XMLUtils.parseXML(xmlData.toString(),
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   246
					elemNameSet, attributeMap);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   247
			ArrayList<CacheEntry> foundEntries = convertElementDataToEntryList(elementArr);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   248
			// Removing the old server entries and adding new ones
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   249
			// When we are really sure that the whole load opearation was
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   250
			// successful.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   251
			entriesMap.clear();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   252
			for (AbstractEntry entry : foundEntries) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   253
				// CacheEntry ent = (CacheEntry) entry;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   254
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   255
				entriesMap.put(entry.getId(), entry);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   256
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   257
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   258
		} catch (Exception e) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   259
			e.printStackTrace();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   260
			String msg = Messages
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   261
					.getString("CacheEntry.LoadFailed_Part_1_ErrMsg") + e.getMessage() //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   262
					+ ". " + Messages.getString("CacheEntry.LoadFailed_Part_2_ErrMsg"); //$NON-NLS-1$ //$NON-NLS-2$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   263
			APIQueryConsole.getInstance().println(msg,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   264
					APIQueryConsole.MSG_ERROR);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   265
			File f = new File(storageFilePathName);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   266
			if (f.exists()) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   267
				f.delete();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   268
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   269
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   270
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   271
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   272
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   273
	 * Converts element data into server entry list.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   274
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   275
	 * @param elementArr
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   276
	 *            XML Element data to be converted.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   277
	 * @return Server entry list.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   278
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   279
	private ArrayList<CacheEntry> convertElementDataToEntryList(
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   280
			XMLElementData[] elementArr) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   281
		ArrayList<CacheEntry> foundEntries = new ArrayList<CacheEntry>();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   282
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   283
		// Temporary data used during attribute fetching
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   284
		String id = null;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   285
		String sdkid = null;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   286
		boolean isSelected = false;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   287
		String apiName = null;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   288
		long size = -1;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   289
		long date = -1;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   290
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   291
		for (int i = 0; i < elementArr.length; i++) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   292
			XMLElementData data = elementArr[i];
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   293
			Map<String, String> params = data.getAttributes();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   294
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   295
			try {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   296
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   297
				id = params.get(ID_ATTRIBUTE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   298
				isSelected = Boolean.parseBoolean(params
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   299
						.get(SELECTION_ATTRIBUTE));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   300
				sdkid = params.get(SDK_ID_ATTRIBUTE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   301
				size = Long.parseLong(params.get(SIZE_ATTRIBUTE));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   302
				date = Long.parseLong(params.get(DATE_ATTRIBUTE));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   303
				apiName = params.get(API_NAME);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   304
				//System.out.println("api name" + apiName);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   305
			} catch (Exception e) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   306
				throw new RuntimeException(
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   307
						Messages
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   308
								.getString("CacheEntry.Unexpected_Attribute_ErrMsg") + data.getElementName()); //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   309
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   310
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   311
			File file = new File(id);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   312
			if (file.exists()) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   313
				String fileName = file.getName();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   314
				// Adding an entry
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   315
				foundEntries.add(new CacheEntry(id, fileName, sdkid,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   316
						isSelected, size, date, apiName));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   317
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   318
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   319
		return foundEntries;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   320
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   321
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   322
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   323
	 * Get currentry selected SDK ID
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   324
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   325
	 * @return SDK ID or <code>null</code> if not found.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   326
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   327
	public String getCurrentlySelectedSDKID() {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   328
		for (AbstractEntry entry : getEntries()) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   329
			CacheEntry cacheEntry = (CacheEntry) entry;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   330
			if (cacheEntry.getSDKID() != null && cacheEntry.isSelected()) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   331
				return cacheEntry.getSDKID();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   332
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   333
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   334
		return null;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   335
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   336
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   337
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   338
	 * Updates an entry to the storage. Additional not recommended possibility
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   339
	 * to update entry without notifying listeners. It's not recommended to use
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   340
	 * this, but if used, make sure that listeners is notified afterwards by
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   341
	 * using
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   342
	 * {@link AbstractEntryStorage#notifyConfigurationChangeListeners(int)}.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   343
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   344
	 * @param entryWithNewData
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   345
	 *            Entry object containing new data.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   346
	 * @throws EntryNotFoundException
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   347
	 * @param dontNotifyListeners
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   348
	 *            if <code>true</code> listeners will not be notified.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   349
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   350
	public void updateEntry(AbstractEntry entryWithNewData,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   351
			boolean dontNotifyListeners) throws EntryNotFoundException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   352
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   353
		if (dontNotifyListeners) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   354
			AbstractEntry entryWithOldData = (AbstractEntry) entriesMap
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   355
					.get(entryWithNewData.getId());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   356
			if (entryWithOldData == null) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   357
				String nonExistingEntryMsg = Messages
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   358
						.getString("AbstractEntryStorage.NonExistingEntry_ErrMsg") + entryWithNewData.getId(); //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   359
				throw new EntryNotFoundException(nonExistingEntryMsg);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   360
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   361
			// Updating data fields (which triggers notification to
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   362
			// configuration change listeners)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   363
			entryWithOldData
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   364
					.updateEntryTypeSpecificDataFields(entryWithNewData);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   365
		} else {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   366
			updateEntry(entryWithNewData);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   367
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   368
		this.isLoaded = false;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   369
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   370
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   371
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   372
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   373
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   374
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   375
	 * @see com.nokia.s60tools.apiquery.shared.datatypes.config.AbstractEntryStorage#updateEntry(com.nokia.s60tools.apiquery.shared.datatypes.config.AbstractEntry)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   376
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   377
	public void updateEntry(AbstractEntry entryWithNewData)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   378
			throws EntryNotFoundException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   379
		super.updateEntry(entryWithNewData);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   380
		this.isLoaded = false;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   381
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   382
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   383
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   384
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   385
	 * Adds an entry to the storage. Additional not recommended possibility to
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   386
	 * add entry without notifying listeners. It's not recommended to use this,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   387
	 * but if used, make sure that listeners is notified afterwards by using
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   388
	 * {@link AbstractEntryStorage#notifyConfigurationChangeListeners(int)}.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   389
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   390
	 * @param entry
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   391
	 *            Entry to be added.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   392
	 * @param dontNotifyListeners
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   393
	 *            if <code>true</code> listeners will not be notified.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   394
	 * @throws DuplicateEntryException
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   395
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   396
	public void addEntry(AbstractEntry entry, boolean dontNotifyListeners)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   397
			throws DuplicateEntryException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   398
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   399
		if (!dontNotifyListeners) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   400
			super.addEntry(entry);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   401
		} else {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   402
			if (entriesMap.get(entry.getId()) != null) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   403
				String duplicateEntriesErrMsg = Messages
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   404
						.getString("AbstractEntryStorage.Duplicate_ErrMsg"); //$NON-NLS-1$
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   405
				throw new DuplicateEntryException(duplicateEntriesErrMsg);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   406
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   407
			entriesMap.put(entry.getId(), entry);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   408
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   409
		this.isLoaded = false;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   410
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   411
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   412
	/*
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   413
	 * (non-Javadoc)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   414
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   415
	 * @see com.nokia.s60tools.apiquery.shared.datatypes.config.AbstractEntryStorage#addEntry(com.nokia.s60tools.apiquery.shared.datatypes.config.AbstractEntry)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   416
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   417
	public void addEntry(AbstractEntry entry) throws DuplicateEntryException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   418
		super.addEntry(entry);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   419
		this.isLoaded = false;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   420
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   421
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   422
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   423
	 * Load all selected entrys to storage. Parsing XML:s for all items, by
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   424
	 * calling {@link CacheEntry#load()}.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   425
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   426
	 * Also {@link CacheEntry#unload()} for entry if not selected.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   427
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   428
	 * If want to know if there was some errors, ask it by
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   429
	 * {@link CacheEntryStorage#isLoadErros()}. If there was errors, ask them
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   430
	 * by {@link CacheEntryStorage#getLoadErrors()}.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   431
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   432
	 * @param monitor
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   433
	 *            to check for cancellations
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   434
	 * @param newSelectedSDKInfo
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   435
	 *            SDK info to be selected
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   436
	 * @throws JobCancelledByUserException
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   437
	 *             if canceled by user
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
	public void selectSDKAndLoadAllSelectedDatasToMemory(
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   442
			IProgressMonitor monitor, SdkInformation newSelectedSDKInfo)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   443
			throws JobCancelledByUserException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   444
		selectSDKAndLoadAllSelectedDatasToMemory(monitor, newSelectedSDKInfo,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   445
				true);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   446
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   447
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   448
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   449
	 * Load all selected entrys to storage. Parsing XML:s for all items, by
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   450
	 * calling {@link CacheEntry#load()}.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   451
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   452
	 * Also {@link CacheEntry#unload()} for entry if not selected.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   453
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   454
	 * If want to know if there was some errors, ask it by
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   455
	 * {@link CacheEntryStorage#isLoadErros()}. If there was errors, ask them
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   456
	 * by {@link CacheEntryStorage#getLoadErrors()}.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   457
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   458
	 * @param monitor
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   459
	 *            to check for cancellations
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   460
	 * @param newSelectedSDKInfo
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   461
	 *            SDK info to be selected
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   462
	 * @param selectSDK
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   463
	 *            if newSelectedSDKInfo is to be selected as new selected SDK
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   464
	 * @throws JobCancelledByUserException
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   465
	 *             if canceled by user
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   466
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   467
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   468
	private void selectSDKAndLoadAllSelectedDatasToMemory(
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   469
			IProgressMonitor monitor, SdkInformation newSelectedSDKInfo,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   470
			boolean selectSDK) throws JobCancelledByUserException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   471
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   472
		// set to data store that all are deselected
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   473
		Collection<AbstractEntry> entrys = getEntries();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   474
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   475
		// Store current situation for restoring it in cases of cancel
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   476
		Set<String> keys = entriesMap.keySet();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   477
		Map<String, AbstractEntry> storedEntriesMap = new LinkedHashMap<String, AbstractEntry>(
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   478
				entriesMap.size());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   479
		for (String key : keys) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   480
			CacheEntry ent = (CacheEntry) entriesMap.get(key);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   481
			APIDetails det = ent.getAPIDetails();// If details is null, it
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   482
			// must not be loaded now,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   483
			// because of lot of time
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   484
			// taken
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   485
			CacheEntry ent_ = new CacheEntry(ent.getId(), ent.getName(), ent
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   486
					.getSDKID(), ent.isSelected(), ent.getSize(),
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   487
					ent.getDate(), ent.getAPIName());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   488
			ent_.setAPIDetails(det);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   489
			storedEntriesMap.put(new String(key), ent_);
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
		try {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   493
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   494
			// select new SDK
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   495
			if (selectSDK) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   496
				selectNewSDK(monitor, newSelectedSDKInfo, entrys);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   497
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   498
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   499
			// For XML validity errors
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   500
			loadErrors = null;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   501
			Vector<CacheEntry> entrysToBeUnloaded = new Vector<CacheEntry>();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   502
			// Loading all selected entrys to to memory by using entry.load()
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   503
			for (AbstractEntry entry : entrys) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   504
				// If canceled, throwing exception and catch will handle data
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   505
				// restore
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   506
				if (monitor.isCanceled()) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   507
					throw new JobCancelledByUserException(
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   508
							Messages
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   509
									.getString("CacheEntryStorage.JobCanceledByUserMsg"));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   510
				}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   511
				CacheEntry ce = (CacheEntry) entry;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   512
				if (ce.isSelected()) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   513
					try {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   514
						ce.load();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   515
					} catch (XMLNotValidException e) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   516
						addLoadError(e);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   517
					}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   518
				}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   519
				// If entry is not selected, unloading it from memory.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   520
				else {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   521
					entrysToBeUnloaded.add(ce);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   522
				}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   523
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   524
			// If canceled during operation, we unload entrys just when all is
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   525
			// loaded, unload does not really take any time.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   526
			// So for here cancel wont occur anymore
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   527
			for (CacheEntry ce : entrysToBeUnloaded) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   528
				ce.unload();
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
			this.isLoaded = true;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   532
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   533
		} catch (JobCancelledByUserException e) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   534
			entriesMap = storedEntriesMap;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   535
			throw e;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   536
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   537
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   538
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   539
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   540
	 * Sets selected sdk as true and un selects not selected SDK
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   541
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   542
	 * @param monitor
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   543
	 * @param newSelectedSDKInfo
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   544
	 * @param entrys
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   545
	 * @throws JobCancelledByUserException
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   546
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   547
	private void selectNewSDK(IProgressMonitor monitor,
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   548
			SdkInformation newSelectedSDKInfo, Collection<AbstractEntry> entrys)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   549
			throws JobCancelledByUserException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   550
		for (AbstractEntry entry : entrys) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   551
			if (monitor.isCanceled()) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   552
				// If canceled, throwing exception and catch will handle data
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   553
				// restore
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   554
				throw new JobCancelledByUserException(Messages
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   555
						.getString("CacheEntryStorage.JobCanceledByUserMsg"));
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   556
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   557
			CacheEntry ce = (CacheEntry) entry;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   558
			if (ce.getSDKID().equalsIgnoreCase(newSelectedSDKInfo.getSdkId())) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   559
				entry.setSelected(true, true);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   560
			} else {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   561
				ce.setSelected(false, true);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   562
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   563
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   564
	}
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
	 * Load all selected entrys to storage. Parsing XML:s for all items, by
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   568
	 * calling {@link CacheEntry#load()}.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   569
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   570
	 * Also {@link CacheEntry#unload()} for entry if not selected.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   571
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   572
	 * If want to know if there was some errors, ask it by
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   573
	 * {@link CacheEntryStorage#isLoadErros()}. If there was errors, ask them
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   574
	 * by {@link CacheEntryStorage#getLoadErrors()}.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   575
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   576
	 * @param monitor
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   577
	 *            to check for cancellations
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   578
	 * @throws JobCancelledByUserException
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   579
	 *             if canceled by user
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   580
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   581
	public void loadAllSelectedDatasToMemory(IProgressMonitor monitor)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   582
			throws JobCancelledByUserException {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   583
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   584
		selectSDKAndLoadAllSelectedDatasToMemory(monitor, null, false);
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
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   589
	 * Check if there was load errors.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   590
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   591
	 * @return <code>true</code> if there was load errors <code>false</code>
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   592
	 *         otherwise.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   593
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   594
	public boolean isLoadErros() {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   595
		return loadErrors != null;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   596
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   597
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   598
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   599
	 * Get load errors
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   600
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   601
	 * @return load errors or <code>null</code> if there was no errors on
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   602
	 *         CacheEntryStorage#loadAllSelectedDatasToMemory().
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   603
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   604
	public Vector<XMLNotValidException> getLoadErrors() {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   605
		return loadErrors;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   606
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   607
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   608
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   609
	 * Adds load error to errors
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   610
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   611
	 * @param e
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   612
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   613
	private void addLoadError(XMLNotValidException e) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   614
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   615
		if (loadErrors == null) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   616
			loadErrors = new Vector<XMLNotValidException>();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   617
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   618
		loadErrors.add(e);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   619
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   620
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   621
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   622
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   623
	 * Removes all selected entrys.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   624
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   625
	public void removeSelectedEntrys(String currentlySelectedSDKID) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   626
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   627
		Collection<AbstractEntry> entrys = getEntries();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   628
		Vector<String> ids = new Vector<String>();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   629
		for (AbstractEntry aEntry : entrys) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   630
			CacheEntry entry = (CacheEntry) aEntry;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   631
			if (entry.isSelected()
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   632
					|| entry.getSDKID().equals(currentlySelectedSDKID)) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   633
				ids.add(entry.getId());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   634
			}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   635
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   636
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   637
		for (String id : ids) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   638
			entriesMap.remove(id);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   639
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   640
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   641
		notifyConfigurationChangeListeners(IConfigurationChangedListener.ALL_SELECTED_ENTRYS_REMOVED);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   642
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   643
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   644
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   645
	 * Unloads all entrys
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   646
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   647
	public void unload() {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   648
		Collection<AbstractEntry> entrys = getEntries();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   649
		// For XML validity errors
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   650
		loadErrors = null;// Now there are no loads -> no load Errors eather
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   651
		// Unload all items
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   652
		for (AbstractEntry entry : entrys) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   653
			CacheEntry ce = (CacheEntry) entry;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   654
			ce.unload();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   655
		}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   656
		this.isLoaded = false;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   657
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   658
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   659
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   660
	 * Check if source is loaded.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   661
	 * 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   662
	 * @return <code>true</code> if is loaded, false otherwise
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   663
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   664
	public boolean isLoaded() {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   665
		return isLoaded;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   666
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   667
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   668
	/**
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   669
	 * Return the path to xml file.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   670
	 * @param sdkID : SDK name as given in metadata_cache_entries.xml file
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   671
	 * @param APIName : API Name
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   672
	 * @param headerFile : header file name
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   673
	 * @return
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   674
	 */
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   675
	
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   676
	public String getID(String sdkID, String APIName, String headerFile) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   677
		// System.out.println("SDK ID" +sdkID + "apiame " + APIName + "
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   678
		// headerfile : " + headerFile);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   679
		try {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   680
			//CacheEntryStorage instance = getInstance();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   681
			//instance.load(CachePlugin.getconfigFilePath());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   682
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   683
			Set<String> elemNameSet = new LinkedHashSet<String>();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   684
			elemNameSet.add(METADATA_ELEMENT); // server element
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   685
			// Setting attributes to be parsed for server element
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   686
			Map<String, String> attrNameSet = new LinkedHashMap<String, String>();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   687
			attrNameSet.put(ID_ATTRIBUTE, ID_ATTRIBUTE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   688
			attrNameSet.put(SELECTION_ATTRIBUTE, SELECTION_ATTRIBUTE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   689
			attrNameSet.put(SDK_ID_ATTRIBUTE, SDK_ID_ATTRIBUTE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   690
			attrNameSet.put(SIZE_ATTRIBUTE, SIZE_ATTRIBUTE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   691
			attrNameSet.put(DATE_ATTRIBUTE, DATE_ATTRIBUTE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   692
			attrNameSet.put(API_NAME, API_NAME);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   693
			Map<String, Map<String, String>> attributeMap = new LinkedHashMap<String, Map<String, String>>();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   694
			attributeMap.put(METADATA_ELEMENT, attrNameSet);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   695
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   696
			// Loading XML data into memory
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   697
			StringBuffer xmlData = FileUtils.loadDataFromFile(CachePlugin
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   698
					.getconfigFilePath());
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   699
			// Parsing elements from the XML data and adding found server
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   700
			// entries to storage
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   701
			XMLElementData[] elementArr = XMLUtils.parseXML(xmlData.toString(),
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   702
					elemNameSet, attributeMap);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   703
			for (int i = 0; i < elementArr.length; i++) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   704
				XMLElementData data = elementArr[i];
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   705
				Map<String, String> params = data.getAttributes();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   706
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   707
				if (params.get(API_NAME).equalsIgnoreCase(APIName)
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   708
						&& params.get(SDK_ID_ATTRIBUTE).equalsIgnoreCase(sdkID)) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   709
					//System.out.println("found");
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   710
					// serach in the list of avaliable folders
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   711
					String id = params.get(ID_ATTRIBUTE);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   712
					// c:\.....\xyz.xml
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   713
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   714
					String folder = id.substring(0, id.lastIndexOf("\\"))
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   715
							+ "\\inc";
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   716
					//System.out.println( "Folder" + folder);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   717
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   718
					File directory = new File(folder);
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   719
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   720
					if (directory.isDirectory()) { // check to make sure it
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   721
						// is a directory
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   722
						String filenames[] = directory.list(); // make array of
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   723
						// filenames.
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   724
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   725
						for (int j = 0; j < filenames.length; j++) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   726
							if (filenames[j].equalsIgnoreCase(headerFile))
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   727
								return id;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   728
						}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   729
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   730
					} // is directory
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   731
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   732
				}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   733
			} //forloop
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   734
		} catch (Exception e) {
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   735
			e.printStackTrace();
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   736
		}
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
		 
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   740
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   741
		return null;
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   742
	}
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   743
a02c979e8dfd 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   744
}