001package jmri;
002
003import javax.annotation.CheckForNull;
004
005/**
006 * Interface for obtaining information about signal systems.
007 * <p>
008 * Each NamedBean here represents a single signal system. The actual objects are
009 * SignalAspectTable objects; that's a current anachronism, soon to be fixed.
010 * <p>
011 * See the common implementation for information on how loaded, etc.
012 *
013 * <hr>
014 * This file is part of JMRI.
015 * <p>
016 * JMRI is free software; you can redistribute it and/or modify it under the
017 * terms of version 2 of the GNU General Public License as published by the Free
018 * Software Foundation. See the "COPYING" file for a copy of this license.
019 * <p>
020 * JMRI is distributed in the hope that it will be useful, but WITHOUT ANY
021 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
022 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
023 *
024 * @author Bob Jacobsen Copyright (C) 2009
025 */
026public interface SignalSystemManager extends Manager<SignalSystem> {
027
028    /**
029     * Get SignalSystem by Name.
030     * @param name to search for.
031     * @return SignalSystem or null if no system found.
032     */
033    @CheckForNull
034    SignalSystem getSystem(String name);
035
036    /** {@inheritDoc} */
037    @Override
038    @CheckForNull
039    SignalSystem getBySystemName(String name);
040
041    /** {@inheritDoc} */
042    @Override
043    @CheckForNull
044    SignalSystem getByUserName(String name);
045}