01: /*
02: * Copyright 2006-2007 Pentaho Corporation. All rights reserved.
03: * This software was developed by Pentaho Corporation and is provided under the terms
04: * of the Mozilla Public License, Version 1.1, or any later version. You may not use
05: * this file except in compliance with the license. If you need a copy of the license,
06: * please go to http://www.mozilla.org/MPL/MPL-1.1.txt.
07: *
08: * Software distributed under the Mozilla Public License is distributed on an "AS IS"
09: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to
10: * the license for the specific language governing your rights and limitations.
11: *
12: * Additional Contributor(s): Martin Schmid gridvision engineering GmbH
13: */
14: package org.pentaho.reportdesigner.crm.report.datasetplugin;
15:
16: import org.jetbrains.annotations.NotNull;
17: import org.jetbrains.annotations.Nullable;
18:
19: import java.util.LinkedHashSet;
20:
21: /**
22: * User: Martin
23: * Date: 27.02.2006
24: * Time: 09:43:01
25: */
26: public class DataSetPluginRegistry {
27: @NotNull
28: private static final DataSetPluginRegistry instance = new DataSetPluginRegistry();
29:
30: @NotNull
31: public static DataSetPluginRegistry getInstance() {
32: return instance;
33: }
34:
35: @NotNull
36: private LinkedHashSet<DataSetPlugin> dataSetPlugins;
37: @NotNull
38: private LinkedHashSet<DataSetPluginRegistryListener> dataSetPluginRegistryListeners;
39:
40: private DataSetPluginRegistry() {
41: dataSetPlugins = new LinkedHashSet<DataSetPlugin>();
42: dataSetPluginRegistryListeners = new LinkedHashSet<DataSetPluginRegistryListener>();
43: }
44:
45: public void registerDataSetPlugin(@NotNull
46: DataSetPlugin dataSetPlugin) {
47: if (dataSetPlugins.add(dataSetPlugin)) {
48: firePluginAdded(dataSetPlugin);
49: }
50: }
51:
52: public void deregisterDataSetPlugin(@NotNull
53: DataSetPlugin dataSetPlugin) {
54: if (dataSetPlugins.remove(dataSetPlugin)) {
55: firePluginRemoved(dataSetPlugin);
56: }
57: }
58:
59: @NotNull
60: public LinkedHashSet<DataSetPlugin> getDataSetPlugins() {
61: return new LinkedHashSet<DataSetPlugin>(dataSetPlugins);
62: }
63:
64: public void addDataSetPluginRegistryListener(@NotNull
65: DataSetPluginRegistryListener listener) {
66: dataSetPluginRegistryListeners.add(listener);
67: }
68:
69: public void removeDataSetPluginRegistryListener(@Nullable
70: DataSetPluginRegistryListener listener) {
71: dataSetPluginRegistryListeners.remove(listener);
72: }
73:
74: private void firePluginAdded(@NotNull
75: DataSetPlugin dataSetPlugin) {
76: LinkedHashSet<DataSetPluginRegistryListener> listeners = new LinkedHashSet<DataSetPluginRegistryListener>(
77: dataSetPluginRegistryListeners);
78: for (DataSetPluginRegistryListener dataSetPluginRegistryListener : listeners) {
79: dataSetPluginRegistryListener.pluginAdded(dataSetPlugin);
80: }
81: }
82:
83: private void firePluginRemoved(@NotNull
84: DataSetPlugin dataSetPlugin) {
85: LinkedHashSet<DataSetPluginRegistryListener> listeners = new LinkedHashSet<DataSetPluginRegistryListener>(
86: dataSetPluginRegistryListeners);
87: for (DataSetPluginRegistryListener dataSetPluginRegistryListener : listeners) {
88: dataSetPluginRegistryListener.pluginRemoved(dataSetPlugin);
89: }
90: }
91:
92: }
|