1 /*******************************************************************************
2 * Copyright (c) 2009, 2010 Ericsson
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.internal
.tmf
.core
.component
;
15 import java
.util
.ArrayList
;
16 import java
.util
.HashMap
;
17 import java
.util
.List
;
20 import org
.eclipse
.linuxtools
.tmf
.core
.component
.TmfDataProvider
;
21 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEvent
;
24 * Singleton that keeps track of the event providers.
27 * @author Francois Chouinard
29 public class TmfProviderManager
{
31 // ------------------------------------------------------------------------
33 // ------------------------------------------------------------------------
35 private TmfProviderManager() {}
37 // ------------------------------------------------------------------------
38 // Keeps track of the providers for each event type
39 // ------------------------------------------------------------------------
41 private static Map
<Class
<?
extends ITmfEvent
>, List
<TmfDataProvider
>> fProviders
=
42 new HashMap
<Class
<?
extends ITmfEvent
>, List
<TmfDataProvider
>>();
45 * Registers [provider] as a provider of [eventType]
47 * @param eventType The event type
48 * @param provider The data provider
50 public static <T
extends ITmfEvent
> void register(Class
<T
> eventType
, TmfDataProvider provider
) {
51 if (fProviders
.get(eventType
) == null) {
52 fProviders
.put(eventType
, new ArrayList
<TmfDataProvider
>());
54 fProviders
.get(eventType
).add(provider
);
58 * Re-registers [provider] as a provider of [eventType]
60 * @param eventType The event type
61 * @param provider The data provider
63 public static <T
extends ITmfEvent
> void deregister(Class
<T
> eventType
, TmfDataProvider provider
) {
64 List
<TmfDataProvider
> list
= fProviders
.get(eventType
);
66 list
.remove(provider
);
67 if (list
.size() == 0) {
68 fProviders
.remove(eventType
);
74 * Returns the list of components that provide [eventType]
76 * @param eventType The event type
77 * @return the list of components that provide [eventType]
79 public static TmfDataProvider
[] getProviders(Class
<?
extends ITmfEvent
> eventType
) {
80 List
<TmfDataProvider
> list
= fProviders
.get(eventType
);
82 list
= new ArrayList
<TmfDataProvider
>();
84 TmfDataProvider
[] result
= new TmfDataProvider
[list
.size()];
85 return list
.toArray(result
);
89 * Returns the list of components of type [providerType] that provide [eventType]
91 * @param eventType The event type
92 * @param providerType The data provider
93 * @return the list of components of type [providerType] that provide [eventType]
95 public static TmfDataProvider
[] getProviders(Class
<?
extends ITmfEvent
> eventType
, Class
<?
extends TmfDataProvider
> providerType
) {
96 if (providerType
== null) {
97 return getProviders(eventType
);
99 TmfDataProvider
[] list
= getProviders(eventType
);
100 List
<TmfDataProvider
> result
= new ArrayList
<TmfDataProvider
>();
102 for (TmfDataProvider provider
: list
) {
103 if (provider
.getClass() == providerType
) {
104 result
.add(provider
);
108 TmfDataProvider
[] array
= new TmfDataProvider
[result
.size()];
109 return result
.toArray(array
);
This page took 0.035467 seconds and 6 git commands to generate.