/* * org.openmicroscopy.shoola.env.config.RegistryImpl * *------------------------------------------------------------------------------ * Copyright (C) 2006-2015 University of Dundee. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * *------------------------------------------------------------------------------ */ package org.openmicroscopy.shoola.env.config; //Java imports import java.util.Map; //Third-party libraries import omero.gateway.Gateway; //Application-internal dependencies import omero.gateway.cache.CacheService; import org.openmicroscopy.shoola.env.data.AdminService; import org.openmicroscopy.shoola.env.data.OmeroDataService; import org.openmicroscopy.shoola.env.data.OmeroImageService; import org.openmicroscopy.shoola.env.data.OmeroMetadataService; import org.openmicroscopy.shoola.env.data.views.DataServicesView; import org.openmicroscopy.shoola.env.data.views.DataViewsFactory; import org.openmicroscopy.shoola.env.event.EventBus; import omero.log.Logger; import org.openmicroscopy.shoola.env.ui.TaskBar; import org.openmicroscopy.shoola.env.ui.UserNotifier; import com.google.common.collect.MapMaker; /** * Implements the <code>Registry</code> interface. * It maintains a map of {@link Entry} objects which are keyed * by their <code>name</code> attribute and represent entries in a * configuration file. The map also contains all name-value pairs that are * added to the registry by means of the {@link #bind(String, Object) bind} * method. References to the container's services are stored into member * fields — as services are accessed frequently, this ensures <i>o(1)</i> * access time. * * @author Jean-Marie Burel      * <a href="mailto:j.burel@dundee.ac.uk">j.burel@dundee.ac.uk</a> * @author <br>Andrea Falconi      * <a href="mailto:a.falconi@dundee.ac.uk"> * a.falconi@dundee.ac.uk</a> * @version 2.2 * <small> * (<b>Internal version:</b> $Revision$ $Date$) * </small> * @since OME2.2 */ class RegistryImpl implements Registry { /** The name-value map. */ private final Map<String, Object> entriesMap = new MapMaker().makeMap(); /** Reference to container's service. */ private EventBus eb; /** Reference to container's service. */ private Logger logger; /** Reference to container's service. */ private TaskBar tb; /** Reference to container's service. */ private UserNotifier un; /** Reference to the image service. */ private OmeroImageService is; /** Reference to the metadata service. */ private OmeroMetadataService ms; /** Reference to the OMERO service. */ private OmeroDataService os; /** Reference to the Administration service. */ private AdminService admin; /** Reference to the Cache service. */ private CacheService cache; private Gateway gateway; /* may be constructed only by classes in this package */ RegistryImpl() { } /** * Implemented as specified by {@link Registry}. * @see Registry#bind(String, Object) */ public void bind(String name, Object value) { if (name != null) { ObjectEntry entry = new ObjectEntry(name); entry.setContent(value); entriesMap.put(name, entry); } } /** * Implemented as specified by {@link Registry}. * @see Registry#lookup(String) */ public Object lookup(String name) { Entry entry = (Entry) entriesMap.get(name); Object ret = null; if (entry != null) ret = entry.getValue(); return ret; } /** * Implemented as specified by {@link Registry}. * @see Registry#getEventBus() */ public EventBus getEventBus() { return eb; } /** * Implemented as specified by {@link Registry}. * @see Registry#getLogger() */ public Logger getLogger() { return logger; } /** * Implemented as specified by {@link Registry}. * @see Registry#getTaskBar() */ public TaskBar getTaskBar() { return tb; } /** * Implemented as specified by {@link Registry}. * @see Registry#getUserNotifier() */ public UserNotifier getUserNotifier() { return un; } /** * Implemented as specified by {@link Registry}. * @see Registry#getImageService() */ public OmeroImageService getImageService() { return is; } /** * Implemented as specified by {@link Registry}. * @see Registry#getDataService() */ public OmeroDataService getDataService() { return os; } /** * Implemented as specified by {@link Registry}. * @see Registry#getMetadataService() */ public OmeroMetadataService getMetadataService() { return ms; } /** * Implemented as specified by {@link Registry}. * @see Registry#getAdminService() */ public AdminService getAdminService() { return admin; } /** * Implemented as specified by {@link Registry}. * @see Registry#getCacheService() */ public CacheService getCacheService() { return cache; } /** * Implemented as specified by {@link Registry}. * @see Registry#getDataServicesView(Class) */ public DataServicesView getDataServicesView(Class<?> view) { return DataViewsFactory.makeView(view); } /** * Adds the specified {@link Entry} to the map. * * @param e A new {@link Entry} created from an entry tag in the * configuration file. */ void addEntry(Entry e) { entriesMap.put(e.getName(), e); } /** * Stores a reference to the {@link EventBus}. * * @param eb The {@link EventBus}. */ void setEventBus(EventBus eb) { this.eb = eb; } /** * Stores a reference to the {@link OmeroImageService}. * * @param is The {@link OmeroImageService}. */ void setImageService(OmeroImageService is) { this.is = is; } /** * Stores a reference to the {@link OmeroMetadataService}. * * @param ms The {@link OmeroMetadataService}. */ void setMetadataService(OmeroMetadataService ms) { this.ms = ms; } /** * Stores a reference to the {@link AdminService}. * * @param ms The {@link AdminService}. */ void setAdminService(AdminService admin) { this.admin = admin; } /** * Stores a reference to the {@link TaskBar}. * * @param tb The {@link TaskBar}. */ void setTaskBar(TaskBar tb) { this.tb = tb; } /** * Stores a reference to the {@link Logger}. * * @param logger The {@link Logger}. */ void setLogger(Logger logger) { this.logger = logger; } /** * Stores a reference to the {@link UserNotifier}. * * @param un The {@link UserNotifier}. */ void setUserNotifier(UserNotifier un) { this.un = un; } /** * Stores a reference to the {@link OmeroDataService}. * * @param os The {@link OmeroDataService}. */ void setOS(OmeroDataService os) { this.os = os; } /** * Stores a reference to the {@link CacheService}. * * @param cache The {@link CacheService}. */ void setCacheService(CacheService cache) { this.cache = cache; } public Gateway getGateway() { return gateway; } void setGateway(Gateway gateway) { this.gateway = gateway; } }