001package jmri.jmrix.pi;
002
003import java.util.Comparator;
004import java.util.ResourceBundle;
005import javax.annotation.Nonnull;
006
007import jmri.*;
008import jmri.jmrix.ConfiguringSystemConnectionMemo;
009import jmri.jmrix.DefaultSystemConnectionMemo;
010import jmri.util.NamedBeanComparator;
011
012import org.slf4j.Logger;
013import org.slf4j.LoggerFactory;
014
015/**
016 * Lightweight class to denote that a system is active
017 * and provide general information.
018 * <p>
019 * Objects of specific subtypes are registered in the 
020 * instance manager to activate their particular system.
021 *
022 * @author   Paul Bender Copyright (C) 2015
023 */
024public class RaspberryPiSystemConnectionMemo extends DefaultSystemConnectionMemo implements ConfiguringSystemConnectionMemo {
025
026    public RaspberryPiSystemConnectionMemo(@Nonnull String prefix, @Nonnull String name) {
027        super(prefix, name); // NOI18N
028
029        InstanceManager.store(this, RaspberryPiSystemConnectionMemo.class);
030        log.debug("Created RaspberryPiSystemConnectionMemo");
031    }
032
033    public RaspberryPiSystemConnectionMemo(){
034        this("P", "RaspberryPi");
035    }
036
037    /*
038     * Provides access to the SensorManager for this particular connection.
039     * NOTE: SensorManager defaults to NULL
040     */
041    public SensorManager getSensorManager(){
042        return get(SensorManager.class);
043
044    }
045    public void setSensorManager(SensorManager s){
046         InstanceManager.setSensorManager(s);
047         store(s,SensorManager.class);
048    }
049
050    /*
051     * Provides access to the TurnoutManager for this particular connection.
052     * NOTE: TurnoutManager defaults to NULL
053     */
054    public TurnoutManager getTurnoutManager(){
055        return get(TurnoutManager.class);
056    }
057
058    public void setTurnoutManager(TurnoutManager t){
059         InstanceManager.setTurnoutManager(t);
060         store(t,TurnoutManager.class);
061    }
062
063    /*
064     * Provides access to the LightManager for this particular connection.
065     * NOTE: Light manager defaults to NULL
066     */
067    public LightManager getLightManager(){
068        return get(LightManager.class);
069
070    }
071    public void setLightManager(LightManager l){
072         InstanceManager.setLightManager(l);
073         store(l,LightManager.class);
074    }
075
076    @Override
077    public void configureManagers(){
078       setTurnoutManager(new RaspberryPiTurnoutManager(this));
079       setSensorManager(new RaspberryPiSensorManager(this));
080       register();
081    }
082    
083    @Override
084    protected ResourceBundle getActionModelResourceBundle(){
085        return ResourceBundle.getBundle("jmri.jmrix.pi.RaspberryPiActionListBundle");
086    }
087
088    @Override
089    public <B extends NamedBean> Comparator<B> getNamedBeanComparator(Class<B> type) {
090        return new NamedBeanComparator<>();
091    }
092
093    @Override
094    public void dispose() {
095        InstanceManager.deregister(this, RaspberryPiSystemConnectionMemo.class);
096        super.dispose();
097    }
098
099    private final static Logger log = LoggerFactory.getLogger(RaspberryPiSystemConnectionMemo.class);
100
101}