connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/internal/registry/Registry.java
author dadubrow
Fri, 05 Feb 2010 15:32:05 -0600
changeset 901 3a0c0b389d0d
parent 791 43d328ced534
child 938 643f4c09ab7b
permissions -rw-r--r--
10658 - fix up launch config when ensureConnection returns
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     1
/*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     3
* All rights reserved.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     8
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    11
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    12
* Contributors:
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    13
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    14
* Description: 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    15
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    16
*/
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    17
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    18
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    19
package com.nokia.carbide.remoteconnections.internal.registry;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    20
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    21
import java.io.File;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    22
import java.io.FileInputStream;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    23
import java.io.FileOutputStream;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    24
import java.io.OutputStream;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    25
import java.text.MessageFormat;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    26
import java.util.ArrayList;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    27
import java.util.Collection;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    28
import java.util.Collections;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    29
import java.util.Comparator;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    30
import java.util.HashMap;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    31
import java.util.HashSet;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    32
import java.util.List;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    33
import java.util.Map;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    34
import java.util.Set;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    35
import java.util.TreeSet;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    36
import java.util.UUID;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    37
import java.util.regex.Matcher;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    38
import java.util.regex.Pattern;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    39
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    40
import org.eclipse.core.runtime.CoreException;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    41
import org.eclipse.core.runtime.IPath;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    42
import org.eclipse.core.runtime.IStatus;
790
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
    43
import org.eclipse.jface.dialogs.Dialog;
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
    44
import org.eclipse.jface.dialogs.IDialogConstants;
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
    45
import org.eclipse.jface.dialogs.IMessageProvider;
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
    46
import org.eclipse.jface.dialogs.TitleAreaDialog;
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    47
import org.eclipse.jface.viewers.IFilter;
790
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
    48
import org.eclipse.swt.widgets.Composite;
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
    49
import org.eclipse.swt.widgets.Control;
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
    50
import org.eclipse.swt.widgets.Display;
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
    51
import org.eclipse.swt.widgets.Shell;
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    52
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    53
import com.nokia.carbide.remoteconnections.Messages;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    54
import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    55
import com.nokia.carbide.remoteconnections.interfaces.IClientServiceSiteUI;
728
a39d0ba41f81 Initial work for bug #10418
Ed Swartz <ed.swartz@nokia.com>
parents: 718
diff changeset
    56
import com.nokia.carbide.remoteconnections.interfaces.IClientServiceSiteUI2;
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    57
import com.nokia.carbide.remoteconnections.interfaces.IConnectedService;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    58
import com.nokia.carbide.remoteconnections.interfaces.IConnectedServiceFactory;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    59
import com.nokia.carbide.remoteconnections.interfaces.IConnection;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    60
import com.nokia.carbide.remoteconnections.interfaces.IConnectionType;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    61
import com.nokia.carbide.remoteconnections.interfaces.IConnectionTypeProvider;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    62
import com.nokia.carbide.remoteconnections.interfaces.IConnectionsManager;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    63
import com.nokia.carbide.remoteconnections.interfaces.IExtensionFilter;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    64
import com.nokia.carbide.remoteconnections.interfaces.IService;
790
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
    65
import com.nokia.carbide.remoteconnections.interfaces.AbstractConnection.ConnectionStatus;
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
    66
import com.nokia.carbide.remoteconnections.interfaces.IClientServiceSiteUI2.IListener;
700
9441b6037cb6 rename internal api package to internal.api
dadubrow
parents: 699
diff changeset
    67
import com.nokia.carbide.remoteconnections.internal.api.IConnection2;
711
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
    68
import com.nokia.carbide.remoteconnections.internal.api.IConnection2.IConnectionStatus;
790
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
    69
import com.nokia.carbide.remoteconnections.internal.api.IConnection2.IConnectionStatusChangedListener;
711
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
    70
import com.nokia.carbide.remoteconnections.internal.api.IConnection2.IConnectionStatus.EConnectionStatus;
728
a39d0ba41f81 Initial work for bug #10418
Ed Swartz <ed.swartz@nokia.com>
parents: 718
diff changeset
    71
import com.nokia.carbide.remoteconnections.internal.ui.ClientServiceSiteUI2;
711
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
    72
import com.nokia.carbide.remoteconnections.internal.ui.ConnectionUIUtils;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    73
import com.nokia.carbide.remoteconnections.ui.ClientServiceSiteUI;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    74
import com.nokia.cpp.internal.api.utils.core.Check;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    75
import com.nokia.cpp.internal.api.utils.core.ListenerList;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    76
import com.nokia.cpp.internal.api.utils.core.Logging;
790
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
    77
import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    78
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    79
/**
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    80
 * A registry of connection type and service extensions
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    81
 */
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
    82
@SuppressWarnings("deprecation")
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    83
public class Registry implements IConnectionTypeProvider, IConnectionsManager {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    84
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    85
	private static final String FILTER_EXTENSION = RemoteConnectionsActivator.PLUGIN_ID + ".extensionFilter"; //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    86
	private static final String CONNECTION_TYPE_EXTENSION = RemoteConnectionsActivator.PLUGIN_ID + ".connectionType"; //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    87
	private static final String SERVICE_EXTENSION = RemoteConnectionsActivator.PLUGIN_ID + ".service"; //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    88
	private static final String CONNECTED_SERVICE_FACTORY_EXTENSION = RemoteConnectionsActivator.PLUGIN_ID + ".connectedServiceFactory"; //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    89
	private static final String CONNECTION_DATA_XML = "connectionData.xml"; //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    90
	private static final String NAME_SUFFIX_PATTERN = "(.+) \\((\\d+)\\)"; //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    91
	private static final String NAME_FMT = "{0} ({1})"; //$NON-NLS-1$
728
a39d0ba41f81 Initial work for bug #10418
Ed Swartz <ed.swartz@nokia.com>
parents: 718
diff changeset
    92
	
a39d0ba41f81 Initial work for bug #10418
Ed Swartz <ed.swartz@nokia.com>
parents: 718
diff changeset
    93
	// this is exposed to other clients inside this plugin but it is not public knowledge
761
19123c07e2ab Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 759
diff changeset
    94
	public static final String CURRENT_CONNECTION_ID = RemoteConnectionsActivator.PLUGIN_ID + ".currentConnection"; //$NON-NLS-1$
728
a39d0ba41f81 Initial work for bug #10418
Ed Swartz <ed.swartz@nokia.com>
parents: 718
diff changeset
    95
	
708
ff775c1d2316 Fix connection listeners bug
Ed Swartz <ed.swartz@nokia.com>
parents: 701
diff changeset
    96
	private static Registry instance = new Registry();
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    97
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    98
	private List<IExtensionFilter> extensionFilters;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    99
	private Map<String, IConnectionType> connectionTypeIdMap;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   100
	private ArrayList<IService> services;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   101
	private Map<IConnectionType, Collection<IService>> connectionTypeToServices;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   102
	private Map<IConnection, List<IConnectedService>> connectionToConnectedServices;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   103
	private ListenerList<IConnectionsManagerListener> listeners;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   104
	private List<IConnectedServiceFactory> connectedServiceFactories;
687
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   105
	private ListenerList<IConnectionListener> connectionListeners;
761
19123c07e2ab Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 759
diff changeset
   106
	private IConnection currentConnection;
711
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   107
	private Map<IConnection, IConnectionStatusChangedListener> connectionListenerMap;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   108
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   109
	public static Registry instance() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   110
		return instance;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   111
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   112
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   113
	private Registry() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   114
		// private because is singleton
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   115
		connectionToConnectedServices = new HashMap<IConnection, List<IConnectedService>>();
711
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   116
		connectionListenerMap = new HashMap<IConnection, IConnectionStatusChangedListener>();
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   117
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   118
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   119
	public void loadExtensions() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   120
		loadExtensionFilters();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   121
		loadConnectionTypeExtensions();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   122
		loadServiceExtensions();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   123
		loadConnectedServiceFactoryExtensions();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   124
		mapConnectionTypeToServices();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   125
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   126
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   127
	private void loadConnectedServiceFactoryExtensions() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   128
		connectedServiceFactories = new ArrayList<IConnectedServiceFactory>();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   129
		String loadError = Messages.getString("Registry.ConnectedServiceFactoryExtensionLoadError"); //$NON-NLS-1$
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   130
		RemoteConnectionsActivator.loadExtensions(CONNECTED_SERVICE_FACTORY_EXTENSION, loadError, 
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   131
				connectedServiceFactories, null);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   132
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   133
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   134
	private void loadExtensionFilters() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   135
		extensionFilters = new ArrayList<IExtensionFilter>();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   136
		String loadError = Messages.getString("Registry.FilterExtensionLoadError"); //$NON-NLS-1$
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   137
		RemoteConnectionsActivator.loadExtensions(FILTER_EXTENSION, loadError, extensionFilters, null);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   138
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   139
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   140
	private void loadConnectionTypeExtensions() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   141
		List<IConnectionType> connectionTypeExtensions = new ArrayList<IConnectionType>();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   142
		String loadError = Messages.getString("Registry.ConnectionTypeExtensionLoadError"); //$NON-NLS-1$
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   143
		RemoteConnectionsActivator.loadExtensions(CONNECTION_TYPE_EXTENSION, loadError, 
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   144
				connectionTypeExtensions, new IFilter() {
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   145
			public boolean select(Object toTest) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   146
				return acceptConnectionType(((IConnectionType) toTest).getIdentifier());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   147
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   148
		});
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   149
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   150
		connectionTypeIdMap = new HashMap<String, IConnectionType>();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   151
		for (IConnectionType connectionType : connectionTypeExtensions) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   152
			connectionTypeIdMap.put(connectionType.getIdentifier(), connectionType);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   153
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   154
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   155
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   156
	private boolean acceptConnectionType(String connectionTypeId) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   157
		for (IExtensionFilter extensionFilter : extensionFilters) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   158
			if (!extensionFilter.acceptConnectionType(connectionTypeId))
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   159
				return false;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   160
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   161
		return true;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   162
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   163
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   164
	private void loadServiceExtensions() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   165
		services = new ArrayList<IService>();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   166
		String loadError = Messages.getString("Registry.ServiceExtensionLoadError"); //$NON-NLS-1$
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   167
		RemoteConnectionsActivator.loadExtensions(SERVICE_EXTENSION, loadError, services, new IFilter() {
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   168
			public boolean select(Object toTest) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   169
				return acceptService(((IService) toTest).getIdentifier());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   170
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   171
		});
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   172
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   173
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   174
	private boolean acceptService(String serviceId) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   175
		for (IExtensionFilter extensionFilter : extensionFilters) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   176
			if (!extensionFilter.acceptService(serviceId))
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   177
				return false;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   178
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   179
		return true;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   180
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   181
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   182
	private void mapConnectionTypeToServices() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   183
		connectionTypeToServices = new HashMap<IConnectionType, Collection<IService>>();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   184
		Set<String> connectionTypeIds = connectionTypeIdMap.keySet();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   185
		for (IService service : services) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   186
			Collection<String> compatibleConnectionTypeIds = getCompatibleConnectionTypeIds(service);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   187
			String serviceId = service.getIdentifier();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   188
			for (String connectionTypeId : compatibleConnectionTypeIds) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   189
				if (connectionTypeIds.contains(connectionTypeId)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   190
					IConnectionType connectionType = connectionTypeIdMap.get(connectionTypeId);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   191
					if (!connectionTypeToServices.containsKey(connectionType)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   192
						connectionTypeToServices.put(connectionType, 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   193
								new TreeSet<IService>(new Comparator<IService>() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   194
							public int compare(IService o1, IService o2) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   195
								return o1.getDisplayName().compareToIgnoreCase(o2.getDisplayName());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   196
							}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   197
						}));
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   198
					}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   199
					Set<IService> servicesForConnectionType = 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   200
						(Set<IService>) connectionTypeToServices.get(connectionType);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   201
					if (acceptConnectedService(serviceId, connectionTypeId))
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   202
						servicesForConnectionType.add(service);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   203
				}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   204
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   205
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   206
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   207
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   208
	public Collection<String> getCompatibleConnectionTypeIds(IService service) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   209
		Collection<String> compatibleConnectionTypeIds = new HashSet<String>();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   210
		for (IConnectedServiceFactory factory : connectedServiceFactories) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   211
			compatibleConnectionTypeIds.addAll(factory.getCompatibleConnectionTypeIds(service));
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   212
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   213
		return compatibleConnectionTypeIds;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   214
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   215
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   216
	private boolean acceptConnectedService(String serviceId, String connectionTypeId) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   217
		boolean accept = true;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   218
		for (IExtensionFilter extensionFilter : extensionFilters) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   219
			if (!extensionFilter.acceptConnectedService(connectionTypeId, serviceId)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   220
				accept = false;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   221
				break;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   222
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   223
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   224
		return accept;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   225
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   226
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   227
	/* (non-Javadoc)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   228
	 * @see com.nokia.carbide.remoteconnections.registry.IConnectionStore#loadConnections()
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   229
	 */
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   230
	public void loadConnections() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   231
		File connectionStorageFile = getConnectionStorageFile();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   232
		if (!connectionStorageFile.exists())
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   233
			return;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   234
		connectionToConnectedServices = new HashMap<IConnection, List<IConnectedService>>();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   235
		try {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   236
			List<IConnection> connections = Reader.readFromXML(this, new FileInputStream(connectionStorageFile));
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   237
			for (IConnection connection : connections) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   238
				List<IConnectedService> connectedServices = createConnectedServicesForConnection(connection);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   239
				connectionToConnectedServices.put(connection, connectedServices);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   240
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   241
			fireConnectionStoreChanged();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   242
		} 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   243
		catch (Exception e) {
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   244
			RemoteConnectionsActivator.log(Messages.getString("Registry.ConnectionLoadError"), e); //$NON-NLS-1$
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   245
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   246
		
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   247
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   248
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   249
	private List<IConnectedService> createConnectedServicesForConnection(IConnection connection) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   250
		List<IConnectedService> connectedServices = new ArrayList<IConnectedService>();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   251
		for (IService service : getCompatibleServices(connection.getConnectionType())) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   252
			IConnectedService connectedService = createConnectedService(service, connection);
666
4817219999f0 Avoid loading TRK/TCF related connected services outside Win32 since there are no native libraries to support these yet.
Ed Swartz <ed.swartz@nokia.com>
parents: 382
diff changeset
   253
			if (connectedService != null)
4817219999f0 Avoid loading TRK/TCF related connected services outside Win32 since there are no native libraries to support these yet.
Ed Swartz <ed.swartz@nokia.com>
parents: 382
diff changeset
   254
				connectedServices.add(connectedService);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   255
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   256
		return connectedServices;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   257
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   258
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   259
	public IConnectedService createConnectedService(IService service, IConnection connection) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   260
		// use first created connected service returned from a factory
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   261
		for (IConnectedServiceFactory factory : connectedServiceFactories) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   262
			IConnectedService connectedService = factory.createConnectedService(service, connection);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   263
			if (connectedService != null)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   264
				return connectedService;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   265
		}
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   266
		RemoteConnectionsActivator.log(MessageFormat.format(
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   267
				Messages.getString("Registry.ConnectedServiceFactoryError"), //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   268
				service.getDisplayName(), connection.getConnectionType().getDisplayName()), null);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   269
		return null;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   270
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   271
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   272
	public void storeConnections() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   273
		try {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   274
			OutputStream os = new FileOutputStream(getConnectionStorageFile());
699
fe13162b76cf Add support for dynamic connections
dadubrow
parents: 698
diff changeset
   275
			Writer.writeToXML(os, getNonDynamicConnections());
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   276
		} 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   277
		catch (Exception e) {
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   278
			RemoteConnectionsActivator.log(Messages.getString("Registry.ConnectionStoreError"), e); //$NON-NLS-1$
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   279
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   280
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   281
	
699
fe13162b76cf Add support for dynamic connections
dadubrow
parents: 698
diff changeset
   282
	private Collection<IConnection> getNonDynamicConnections() {
fe13162b76cf Add support for dynamic connections
dadubrow
parents: 698
diff changeset
   283
		List<IConnection> nonDynamicConnections = new ArrayList<IConnection>();
fe13162b76cf Add support for dynamic connections
dadubrow
parents: 698
diff changeset
   284
		for (IConnection connection : connectionToConnectedServices.keySet()) {
fe13162b76cf Add support for dynamic connections
dadubrow
parents: 698
diff changeset
   285
			if (!(connection instanceof IConnection2) ||
fe13162b76cf Add support for dynamic connections
dadubrow
parents: 698
diff changeset
   286
					!((IConnection2) connection).isDynamic())
fe13162b76cf Add support for dynamic connections
dadubrow
parents: 698
diff changeset
   287
				nonDynamicConnections.add(connection);
fe13162b76cf Add support for dynamic connections
dadubrow
parents: 698
diff changeset
   288
		}
fe13162b76cf Add support for dynamic connections
dadubrow
parents: 698
diff changeset
   289
		return nonDynamicConnections;
fe13162b76cf Add support for dynamic connections
dadubrow
parents: 698
diff changeset
   290
	}
fe13162b76cf Add support for dynamic connections
dadubrow
parents: 698
diff changeset
   291
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   292
	public void addConnectionStoreChangedListener(IConnectionsManagerListener listener) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   293
		if (listeners == null)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   294
			listeners = new ListenerList<IConnectionsManagerListener>();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   295
		listeners.add(listener);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   296
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   297
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   298
	public void removeConnectionStoreChangedListener(IConnectionsManagerListener listener) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   299
		if (listeners != null)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   300
			listeners.remove(listener);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   301
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   302
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   303
	private void fireConnectionStoreChanged() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   304
		if (listeners == null)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   305
			return;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   306
		for (IConnectionsManagerListener listener : listeners) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   307
			listener.connectionStoreChanged();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   308
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   309
	}
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   310
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   311
	public IConnectionType getConnectionType(String identifier) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   312
		Check.checkContract(connectionTypeIdMap != null);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   313
		return connectionTypeIdMap.get(identifier);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   314
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   315
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   316
	public Collection<IConnectionType> getConnectionTypes() {
380
2c1483a2585f Return a copy of data
dadubrow
parents: 0
diff changeset
   317
		return new ArrayList<IConnectionType>(connectionTypeIdMap.values());
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   318
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   319
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   320
	public Collection<IService> getCompatibleServices(IConnectionType connectionType) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   321
		Check.checkContract(connectionTypeToServices != null);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   322
		Collection<IService> services = connectionTypeToServices.get(connectionType);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   323
		if (services != null)
380
2c1483a2585f Return a copy of data
dadubrow
parents: 0
diff changeset
   324
			return new ArrayList<IService>(services);
666
4817219999f0 Avoid loading TRK/TCF related connected services outside Win32 since there are no native libraries to support these yet.
Ed Swartz <ed.swartz@nokia.com>
parents: 382
diff changeset
   325
		return Collections.emptyList();
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   326
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   327
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   328
	/* (non-Javadoc)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   329
	 * @see com.nokia.carbide.remoteconnections.registry.IConnectionStore#addConnection(com.nokia.carbide.remoteconnections.extensions.IConnection)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   330
	 */
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   331
	public void addConnection(IConnection connection) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   332
		ensureUniqueId(connection);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   333
		ensureUniqueName(connection);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   334
		List<IConnectedService> connectedServices = createConnectedServicesForConnection(connection);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   335
		connectionToConnectedServices.put(connection, connectedServices);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   336
		fireConnectionStoreChanged();
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   337
		fireConnectionAdded(connection);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   338
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   339
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   340
	private void ensureUniqueId(IConnection connection) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   341
		String id = connection.getIdentifier();
759
d4aeef4e0f16 modify IConnectionsManager and IClientServiceSiteUI2 apis + document in relnotes
dadubrow
parents: 749
diff changeset
   342
		if (id == null || id.length() == 0 || findConnection(id) != null)
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   343
			connection.setIdentifier(getUniqueConnectionId());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   344
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   345
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   346
	public String getUniqueConnectionId() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   347
		return UUID.randomUUID().toString();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   348
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   349
	
759
d4aeef4e0f16 modify IConnectionsManager and IClientServiceSiteUI2 apis + document in relnotes
dadubrow
parents: 749
diff changeset
   350
	public IConnection findConnection(String connectionId) {
761
19123c07e2ab Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 759
diff changeset
   351
		if (CURRENT_CONNECTION_ID.equals(connectionId))
19123c07e2ab Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 759
diff changeset
   352
			return getCurrentConnection();
759
d4aeef4e0f16 modify IConnectionsManager and IClientServiceSiteUI2 apis + document in relnotes
dadubrow
parents: 749
diff changeset
   353
		
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   354
		for (IConnection connection : connectionToConnectedServices.keySet()) {
759
d4aeef4e0f16 modify IConnectionsManager and IClientServiceSiteUI2 apis + document in relnotes
dadubrow
parents: 749
diff changeset
   355
			if (connection.getIdentifier().equals(connectionId)) {
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   356
				return connection;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   357
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   358
		}
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   359
		return null;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   360
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   361
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   362
	private void ensureUniqueName(IConnection connection) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   363
		String name = connection.getDisplayName();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   364
		if (name == null)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   365
			connection.setDisplayName(connection.getIdentifier());
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   366
		if (connectionNameInUse(name)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   367
			// check if already has the suffix " (num)"
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   368
			Pattern pattern = Pattern.compile(NAME_SUFFIX_PATTERN);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   369
			Matcher matcher = pattern.matcher(name);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   370
			boolean hasSuffix = matcher.matches();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   371
			String namePart;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   372
			int number;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   373
			if (hasSuffix) { // extract the name part and the number to increment
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   374
				namePart = matcher.group(1);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   375
				String numberPart = matcher.group(2);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   376
				number = Integer.parseInt(numberPart); // all digits, so should not throw
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   377
				number = (number <= 1) ? 2 : number++;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   378
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   379
			else { // just use the name and add the number starting with 2
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   380
				namePart = name;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   381
				number = 2;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   382
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   383
			while (true) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   384
				String newName = MessageFormat.format(NAME_FMT, new Object[] { namePart, number++ });
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   385
				if (!connectionNameInUse(newName)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   386
					connection.setDisplayName(newName);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   387
					break;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   388
				}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   389
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   390
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   391
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   392
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   393
	public boolean connectionNameInUse(String name) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   394
		boolean used = false;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   395
		for (IConnection c : connectionToConnectedServices.keySet()) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   396
			if (c.getDisplayName().equals(name)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   397
				used = true;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   398
				break;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   399
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   400
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   401
		return used;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   402
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   403
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   404
	public void removeConnection(IConnection connection) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   405
		disposeConnection(connection);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   406
		connectionToConnectedServices.remove(connection);
761
19123c07e2ab Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 759
diff changeset
   407
		if (connection == currentConnection) {
19123c07e2ab Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 759
diff changeset
   408
			currentConnection = null;
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   409
		}
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   410
		fireConnectionStoreChanged();
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   411
		fireConnectionRemoved(connection);
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   412
	}
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   413
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   414
	private void disposeConnection(IConnection connection) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   415
		List<IConnectedService> connectedServices = connectionToConnectedServices.get(connection);
731
68bc07acac96 Improve error checking and messages when default connection is inappropriate or no connections exist.
Ed Swartz <ed.swartz@nokia.com>
parents: 729
diff changeset
   416
		if (connectedServices != null) {
68bc07acac96 Improve error checking and messages when default connection is inappropriate or no connections exist.
Ed Swartz <ed.swartz@nokia.com>
parents: 729
diff changeset
   417
			for (IConnectedService connectedService : connectedServices) {
68bc07acac96 Improve error checking and messages when default connection is inappropriate or no connections exist.
Ed Swartz <ed.swartz@nokia.com>
parents: 729
diff changeset
   418
				connectedService.dispose();
68bc07acac96 Improve error checking and messages when default connection is inappropriate or no connections exist.
Ed Swartz <ed.swartz@nokia.com>
parents: 729
diff changeset
   419
			}
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   420
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   421
		connection.dispose();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   422
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   423
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   424
	/* (non-Javadoc)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   425
	 * @see com.nokia.carbide.remoteconnections.registry.IConnectionStore#getConnections()
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   426
	 */
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   427
	public Collection<IConnection> getConnections() {
380
2c1483a2585f Return a copy of data
dadubrow
parents: 0
diff changeset
   428
		return new ArrayList<IConnection>(connectionToConnectedServices.keySet());
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   429
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   430
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   431
	public Collection<IConnectedService> getConnectedServices(IConnection connection) {
382
6a8fd4465a9b [Bug 9514] Fix NPE
dadubrow
parents: 380
diff changeset
   432
		List<IConnectedService> connectedServices = connectionToConnectedServices.get(connection);
6a8fd4465a9b [Bug 9514] Fix NPE
dadubrow
parents: 380
diff changeset
   433
		if (connectedServices != null)
6a8fd4465a9b [Bug 9514] Fix NPE
dadubrow
parents: 380
diff changeset
   434
			return new ArrayList<IConnectedService>(connectedServices);
6a8fd4465a9b [Bug 9514] Fix NPE
dadubrow
parents: 380
diff changeset
   435
		
6a8fd4465a9b [Bug 9514] Fix NPE
dadubrow
parents: 380
diff changeset
   436
		return null;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   437
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   438
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   439
	private File getConnectionStorageFile() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   440
		IPath path = RemoteConnectionsActivator.getDefault().getStateLocation().append(CONNECTION_DATA_XML);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   441
		return path.toFile();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   442
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   443
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   444
	public void disposeConnections() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   445
		for (IConnection connection : connectionToConnectedServices.keySet()) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   446
			disposeConnection(connection);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   447
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   448
		connectionToConnectedServices.clear();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   449
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   450
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   451
	private void fireDisplayChanged() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   452
		if (listeners == null)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   453
			return;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   454
		for (IConnectionsManagerListener listener : listeners) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   455
			listener.displayChanged();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   456
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   457
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   458
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   459
	public void updateDisplays() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   460
		fireDisplayChanged();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   461
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   462
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   463
	public IClientServiceSiteUI getClientSiteUI(IService service) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   464
		return new ClientServiceSiteUI(service);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   465
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   466
	
728
a39d0ba41f81 Initial work for bug #10418
Ed Swartz <ed.swartz@nokia.com>
parents: 718
diff changeset
   467
	public IClientServiceSiteUI2 getClientSiteUI2(IService service) {
a39d0ba41f81 Initial work for bug #10418
Ed Swartz <ed.swartz@nokia.com>
parents: 718
diff changeset
   468
		return new ClientServiceSiteUI2(service);
a39d0ba41f81 Initial work for bug #10418
Ed Swartz <ed.swartz@nokia.com>
parents: 718
diff changeset
   469
	}
a39d0ba41f81 Initial work for bug #10418
Ed Swartz <ed.swartz@nokia.com>
parents: 718
diff changeset
   470
	
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   471
	public Collection<IService> getServices() {
380
2c1483a2585f Return a copy of data
dadubrow
parents: 0
diff changeset
   472
		return new ArrayList<IService>(services);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   473
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   474
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   475
	public IService findServiceByID(String id) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   476
		for (IService service : services) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   477
			if (service.getIdentifier().equals(id))
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   478
				return service;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   479
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   480
		return null;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   481
	}
687
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   482
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   483
	public void addConnectionListener(IConnectionListener listener) {
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   484
		if (connectionListeners == null)
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   485
			connectionListeners = new ListenerList<IConnectionListener>();
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   486
		connectionListeners.add(listener);
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   487
	}
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   488
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   489
	public void removeConnectionListener(IConnectionListener listener) {
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   490
		if (connectionListeners != null)
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   491
			connectionListeners.remove(listener);
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   492
	}
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   493
	
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   494
	private void fireConnectionAdded(IConnection connection) {
708
ff775c1d2316 Fix connection listeners bug
Ed Swartz <ed.swartz@nokia.com>
parents: 701
diff changeset
   495
		if (connectionListeners == null)
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   496
			return;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   497
		for (IConnectionListener listener : connectionListeners) {
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   498
			listener.connectionAdded(connection);
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   499
		}
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   500
	}
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   501
	
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   502
	private void fireConnectionRemoved(IConnection connection) {
708
ff775c1d2316 Fix connection listeners bug
Ed Swartz <ed.swartz@nokia.com>
parents: 701
diff changeset
   503
		if (connectionListeners == null)
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   504
			return;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   505
		for (IConnectionListener listener : connectionListeners) {
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   506
			listener.connectionRemoved(connection);
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   507
		}
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   508
	}
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   509
	
761
19123c07e2ab Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 759
diff changeset
   510
	private void fireCurrentConnectionSet(IConnection connection) {
708
ff775c1d2316 Fix connection listeners bug
Ed Swartz <ed.swartz@nokia.com>
parents: 701
diff changeset
   511
		if (connectionListeners == null)
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   512
			return;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   513
		for (IConnectionListener listener : connectionListeners) {
761
19123c07e2ab Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 759
diff changeset
   514
			listener.currentConnectionSet(connection);
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   515
		}
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   516
	}
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   517
	
901
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   518
	public ISelectedConnectionInfo ensureConnection(String id, IService service) throws CoreException {
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   519
		Check.checkArg(service);
901
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   520
		final IConnection[] connectionHolder = { findConnection(id) };
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   521
		final String[] storableIdHolder = { id };
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   522
		if (!isCompatibleConnection(connectionHolder[0], service)) {
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   523
			connectionHolder[0] = getCompatibleConnectionFromUser(service, storableIdHolder);
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   524
			if (connectionHolder[0] == null) {
790
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   525
				throw new CoreException(
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   526
						Logging.newStatus(RemoteConnectionsActivator.getDefault(), IStatus.ERROR, 
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   527
								Messages.getString("Registry.NoCompatibleConnectionMsg"))); //$NON-NLS-1$
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   528
			}
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   529
		}
901
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   530
		return new ISelectedConnectionInfo() {
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   531
			public String getStorableId() {
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   532
				return storableIdHolder[0];
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   533
			}
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   534
			
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   535
			public IConnection getConnection() {
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   536
				return connectionHolder[0];
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   537
			}
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   538
		};
687
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   539
	}
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   540
901
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   541
	private IConnection getCompatibleConnectionFromUser(final IService service, final String[] storableIdHolder) {
790
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   542
		final IConnection[] connectionHolder = { null };
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   543
		if (!WorkbenchUtils.isJUnitRunning()) {
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   544
			Display.getDefault().syncExec(new Runnable() {
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   545
				public void run() {
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   546
					final IClientServiceSiteUI2 ui = getClientSiteUI2(service);
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   547
					final TitleAreaDialog dialog = new TitleAreaDialog(WorkbenchUtils.getSafeShell()) {
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   548
						@Override
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   549
						protected Control createDialogArea(Composite parent) {
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   550
							final Composite c = (Composite) super.createDialogArea(parent);
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   551
							ui.createComposite(c);
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   552
							ui.addListener(new IListener() {
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   553
								public void connectionSelected() {
791
43d328ced534 tweak dialog for ensureConnection
dadubrow
parents: 790
diff changeset
   554
									updateStatus(ui.getSelectionStatus());
790
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   555
								}
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   556
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   557
							});
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   558
							
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   559
							return c;
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   560
						}
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   561
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   562
						private void updateStatus(IStatus selectionStatus) {
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   563
							setTitle(Messages.getString("Registry.EnsureConnection.TitleLabel")); //$NON-NLS-1$
791
43d328ced534 tweak dialog for ensureConnection
dadubrow
parents: 790
diff changeset
   564
							setMessage(Messages.getString("Registry.EnsureConnection.Description")); //$NON-NLS-1$
790
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   565
							switch (selectionStatus.getSeverity()) {
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   566
							case IStatus.ERROR:
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   567
								setMessage(selectionStatus.getMessage(), IMessageProvider.ERROR);
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   568
								getButton(IDialogConstants.OK_ID).setEnabled(false);
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   569
								break;
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   570
							case IStatus.WARNING:
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   571
								setMessage(selectionStatus.getMessage(), IMessageProvider.WARNING);
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   572
								getButton(IDialogConstants.OK_ID).setEnabled(true);
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   573
								break;
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   574
							case IStatus.INFO:
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   575
								setMessage(selectionStatus.getMessage(), IMessageProvider.INFORMATION);
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   576
								getButton(IDialogConstants.OK_ID).setEnabled(true);
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   577
								break;
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   578
							default:
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   579
								getButton(IDialogConstants.OK_ID).setEnabled(true);
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   580
							}
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   581
						}
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   582
						
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   583
						@Override
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   584
						public void create() {
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   585
							super.create();
791
43d328ced534 tweak dialog for ensureConnection
dadubrow
parents: 790
diff changeset
   586
							updateStatus(ui.getSelectionStatus());
790
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   587
						}
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   588
						
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   589
						@Override
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   590
						protected void configureShell(Shell newShell) {
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   591
							super.configureShell(newShell);
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   592
							newShell.setText(Messages.getString("Registry.EnsureConnection.DialogTitle")); //$NON-NLS-1$
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   593
						}
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   594
						
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   595
						@Override
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   596
						protected boolean isResizable() {
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   597
							return true;
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   598
						}
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   599
					};
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   600
					dialog.setBlockOnOpen(true);
901
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   601
					if (dialog.open() == Dialog.OK) {
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   602
						storableIdHolder[0] = ui.getSelectedConnection();
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   603
						connectionHolder[0] = findConnection(storableIdHolder[0]);
3a0c0b389d0d 10658 - fix up launch config when ensureConnection returns
dadubrow
parents: 791
diff changeset
   604
					}
790
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   605
				}
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   606
			});
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   607
		}
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   608
		return connectionHolder[0];
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   609
	}
6c8eba9e19ea Bug 10558 - add dialog for ensureConnection
dadubrow
parents: 765
diff changeset
   610
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   611
	private boolean isCompatibleConnection(IConnection connection, IService service) {
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   612
		if (connection == null)
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   613
			return false;
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   614
		return getCompatibleServices(connection.getConnectionType()).contains(service);
687
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   615
	}
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   616
761
19123c07e2ab Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 759
diff changeset
   617
	public void setCurrentConnection(IConnection connection) {
765
beb2e296a8b7 updated set and reset current depending on ready state
dadubrow
parents: 761
diff changeset
   618
		if (connection == null) {
beb2e296a8b7 updated set and reset current depending on ready state
dadubrow
parents: 761
diff changeset
   619
			currentConnection = null; // special case
beb2e296a8b7 updated set and reset current depending on ready state
dadubrow
parents: 761
diff changeset
   620
			fireCurrentConnectionSet(null);
beb2e296a8b7 updated set and reset current depending on ready state
dadubrow
parents: 761
diff changeset
   621
		}
beb2e296a8b7 updated set and reset current depending on ready state
dadubrow
parents: 761
diff changeset
   622
		else if (connectionToConnectedServices.keySet().contains(connection)) {
761
19123c07e2ab Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 759
diff changeset
   623
			currentConnection = connection;
19123c07e2ab Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 759
diff changeset
   624
			fireCurrentConnectionSet(connection);
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   625
		}
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   626
	}
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   627
761
19123c07e2ab Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 759
diff changeset
   628
	public IConnection getCurrentConnection() {
19123c07e2ab Refactor API and related from default connection to current + update heuristics
dadubrow
parents: 759
diff changeset
   629
		return currentConnection;
687
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   630
	}
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   631
711
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   632
	public void disconnect(final IConnection2 connection) {
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   633
		if (!connection.isDynamic())
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   634
			return;
701
1912b5c050e6 make disconnect api based on new connection interface
dadubrow
parents: 700
diff changeset
   635
		
711
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   636
		// transition to disconnected state and wait:
718
72c9852d35bb remove when not in use
dadubrow
parents: 711
diff changeset
   637
		// 	when not in-use, remove and stop waiting
711
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   638
		if (connection.getStatus().getEConnectionStatus().equals(EConnectionStatus.IN_USE)) {
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   639
			IConnectionStatus status = new ConnectionStatus(EConnectionStatus.IN_USE_DISCONNECTED, 
748
7bd40a2d0a18 Add connection status reconciliation + fixes + tweaks
dadubrow
parents: 731
diff changeset
   640
					Messages.getString("ConnectionsView.DisconnectedLabel"), //$NON-NLS-1$
7bd40a2d0a18 Add connection status reconciliation + fixes + tweaks
dadubrow
parents: 731
diff changeset
   641
					Messages.getString("ConnectionsView.DisconnectedDesc")); //$NON-NLS-1$
711
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   642
			connection.setStatus(status);
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   643
			IConnectionStatusChangedListener listener = new IConnectionStatusChangedListener() {
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   644
				public void statusChanged(IConnectionStatus status) {
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   645
					if (notInUse(status)) {
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   646
						IConnectionStatusChangedListener listener = 
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   647
							connectionListenerMap.remove(connection);
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   648
						connection.removeStatusChangedListener(listener);
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   649
						removeConnection(connection);
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   650
					}
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   651
				}
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   652
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   653
				private boolean notInUse(IConnectionStatus status) {
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   654
					EConnectionStatus eStatus = status.getEConnectionStatus();
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   655
					return !eStatus.equals(EConnectionStatus.IN_USE) &&
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   656
						!eStatus.equals(EConnectionStatus.IN_USE_DISCONNECTED);
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   657
				}
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   658
			};
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   659
			connectionListenerMap.put(connection, listener);
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   660
			connection.addStatusChangedListener(listener);
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   661
		}
718
72c9852d35bb remove when not in use
dadubrow
parents: 711
diff changeset
   662
		else {
72c9852d35bb remove when not in use
dadubrow
parents: 711
diff changeset
   663
			removeConnection(connection);
72c9852d35bb remove when not in use
dadubrow
parents: 711
diff changeset
   664
		}
687
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   665
	}
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   666
701
1912b5c050e6 make disconnect api based on new connection interface
dadubrow
parents: 700
diff changeset
   667
	public boolean reconnect(IConnection2 connection) {
711
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   668
		if (!connection.isDynamic())
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   669
			return false;
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   670
		
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   671
		// if not removed, transition out of disconnected state 
698
9162f4cfad65 more changes to remote connections for discovery + load extensions
dadubrow
parents: 687
diff changeset
   672
		// return not removed
711
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   673
		IConnectionStatusChangedListener listener = connectionListenerMap.remove(connection);
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   674
		if (listener != null)
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   675
			connection.removeStatusChangedListener(listener);
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   676
		if (connectionToConnectedServices.containsKey(connection)) {
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   677
			IConnectionStatus status;
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   678
			if (ConnectionUIUtils.isSomeServiceInUse(connection)) {
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   679
				status = new ConnectionStatus(EConnectionStatus.IN_USE, 
748
7bd40a2d0a18 Add connection status reconciliation + fixes + tweaks
dadubrow
parents: 731
diff changeset
   680
						Messages.getString("ConnectionsView.InUseLabel"), //$NON-NLS-1$
711
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   681
						Messages.getString("ConnectionsView.InUseDesc")); //$NON-NLS-1$
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   682
			}
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   683
			else {
748
7bd40a2d0a18 Add connection status reconciliation + fixes + tweaks
dadubrow
parents: 731
diff changeset
   684
				status = new ConnectionStatus(EConnectionStatus.NOT_READY, "", ""); //$NON-NLS-1$ //$NON-NLS-2$
711
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   685
			}
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   686
			connection.setStatus(status);
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   687
			return true;
d97b8b6bce37 add logic for disconnect and reconnect
dadubrow
parents: 708
diff changeset
   688
		}
687
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   689
		return false;
593d05f9d5ca Changes to remote connections
dadubrow
parents: 666
diff changeset
   690
	}
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   691
}