Search in sources :

Example 1 with Roster

use of jmri.jmrit.roster.Roster in project JMRI by JMRI.

the class EcosLocoAddressManager method checkLocoList.

/* This is used after an event update form the ecos informing us of a change in the 
     * loco list, we have to determine if it is an addition or delete.
     * We should only ever do either a remove or an add in one go, if we are adding the loco
     * to the roster otherwise this causes a problem with the roster list.
     */
void checkLocoList(String[] ecoslines) {
    log.info("Checking loco list");
    String loco;
    for (int i = 0; i < ecoslines.length; i++) {
        loco = ecoslines[i];
        loco = loco.replaceAll("[\\n\\r]", "");
        if (getByEcosObject(loco) == null) {
            log.debug("We are to add loco " + loco + " to the Ecos Loco List");
            EcosMessage mout = new EcosMessage("get(" + loco + ", addr, name, protocol)");
            tc.sendEcosMessage(mout, this);
        }
    }
    String[] jmrilist = getEcosObjectArray();
    boolean nomatch = true;
    for (int i = 0; i < jmrilist.length; i++) {
        nomatch = true;
        for (int k = 0; k < ecoslines.length; k++) {
            loco = ecoslines[k];
            loco = loco.replaceAll("[\\n\\r]", "");
            if (loco.equals(jmrilist[i])) {
                nomatch = false;
                break;
            }
        }
        if (nomatch) {
            //System.out.println("We do not have a match, therefore this should be deleted from the Ecos loco Manager " + jmrilist[i]);
            log.debug("Loco not found so need to remove from register");
            if (getByEcosObject(jmrilist[i]).getRosterId() != null) {
                final String rosterid = getByEcosObject(jmrilist[i]).getRosterId();
                final Roster _roster = Roster.getDefault();
                final RosterEntry re = _roster.entryFromTitle(rosterid);
                re.deleteAttribute(p.getRosterAttribute());
                re.writeFile(null, null, null);
                Roster.getDefault().writeRoster();
                if (p.getRemoveLocoFromJMRI() == EcosPreferences.YES) {
                    _roster.removeEntry(re);
                    Roster.getDefault().writeRoster();
                } else if (p.getRemoveLocoFromJMRI() == EcosPreferences.ASK) {
                    try {
                        final JDialog dialog = new JDialog();
                        dialog.setTitle("Remove Roster Entry From JMRI?");
                        dialog.setLocation(300, 200);
                        dialog.setDefaultCloseOperation(javax.swing.JFrame.DISPOSE_ON_CLOSE);
                        JPanel container = new JPanel();
                        container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS));
                        container.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
                        JLabel question = new JLabel(rosterid + " has been removed from the Ecos do you want to remove it from JMRI?");
                        question.setAlignmentX(Component.CENTER_ALIGNMENT);
                        container.add(question);
                        final JCheckBox remember = new JCheckBox("Remember this setting for next time?");
                        remember.setFont(remember.getFont().deriveFont(10f));
                        remember.setAlignmentX(Component.CENTER_ALIGNMENT);
                        //user preferences do not have the save option, but once complete the following line can be removed
                        //Need to get the method to save connection configuration.
                        remember.setVisible(true);
                        JButton yesButton = new JButton("Yes");
                        JButton noButton = new JButton("No");
                        JPanel button = new JPanel();
                        button.setAlignmentX(Component.CENTER_ALIGNMENT);
                        button.add(yesButton);
                        button.add(noButton);
                        container.add(button);
                        noButton.addActionListener(new ActionListener() {

                            @Override
                            public void actionPerformed(ActionEvent e) {
                                if (remember.isSelected()) {
                                    p.setRemoveLocoFromJMRI(EcosPreferences.ASK);
                                }
                                dialog.dispose();
                            }
                        });
                        yesButton.addActionListener(new ActionListener() {

                            @Override
                            public void actionPerformed(ActionEvent e) {
                                if (remember.isSelected()) {
                                    p.setRemoveLocoFromJMRI(EcosPreferences.YES);
                                }
                                setLocoToRoster();
                                _roster.removeEntry(re);
                                Roster.getDefault().writeRoster();
                                dialog.dispose();
                            }
                        });
                        container.add(remember);
                        container.setAlignmentX(Component.CENTER_ALIGNMENT);
                        container.setAlignmentY(Component.CENTER_ALIGNMENT);
                        dialog.getContentPane().add(container);
                        dialog.pack();
                        dialog.setModal(true);
                        dialog.setVisible(true);
                    } catch (HeadlessException he) {
                    // silently ignore inability to display dialog
                    }
                }
            }
            //Even if we do not delete the loco from the roster, we need to remove it from the ecos list.
            deregister(getByEcosObject(jmrilist[i]));
        }
    }
}
Also used : JPanel(javax.swing.JPanel) HeadlessException(java.awt.HeadlessException) ActionEvent(java.awt.event.ActionEvent) BoxLayout(javax.swing.BoxLayout) JButton(javax.swing.JButton) JLabel(javax.swing.JLabel) JCheckBox(javax.swing.JCheckBox) Roster(jmri.jmrit.roster.Roster) EcosLocoToRoster(jmri.jmrix.ecos.utilities.EcosLocoToRoster) ActionListener(java.awt.event.ActionListener) RosterEntry(jmri.jmrit.roster.RosterEntry) JDialog(javax.swing.JDialog)

Example 2 with Roster

use of jmri.jmrit.roster.Roster in project JMRI by JMRI.

the class RosterTableModelTest method setUp.

@Override
public void setUp() {
    apps.tests.Log4JFixture.setUp();
    // Create empty test instance
    InstanceManager.reset(Roster.class);
    InstanceManager.setDefault(Roster.class, new Roster());
    // first entry
    Element e;
    RosterEntry r;
    e = new org.jdom2.Element("locomotive").setAttribute("id", "id 1").setAttribute("fileName", "file here").setAttribute("roadNumber", "431").setAttribute("roadName", "SP").setAttribute("mfg", "Athearn").setAttribute("dccAddress", "1234").addContent(new org.jdom2.Element("decoder").setAttribute("family", "91").setAttribute("model", "33")).addContent(new org.jdom2.Element("locoaddress").addContent(new org.jdom2.Element("dcclocoaddress").setAttribute("number", "12").setAttribute("longaddress", "yes")));
    // end create element
    r = new RosterEntry(e) {

        @Override
        protected void warnShortLong(String s) {
        }
    };
    Roster.getDefault().addEntry(r);
    r.putAttribute("key a", "value 1");
    e = new org.jdom2.Element("locomotive").setAttribute("id", "id 2").setAttribute("fileName", "file here").setAttribute("roadNumber", "431").setAttribute("roadName", "SP").setAttribute("mfg", "Athearn").addContent(new org.jdom2.Element("decoder").setAttribute("family", "91").setAttribute("model", "34")).addContent(new org.jdom2.Element("locoaddress").addContent(new org.jdom2.Element("dcclocoaddress").setAttribute("number", "13").setAttribute("longaddress", "yes")));
    // end create element
    r = new RosterEntry(e) {

        @Override
        protected void warnShortLong(String s) {
        }
    };
    Roster.getDefault().addEntry(r);
    r.putAttribute("key a", "value 11");
    r.putAttribute("key b", "value 12");
    r.putAttribute("key c", "value 13");
    r.putAttribute("key d", "value 14");
    e = new org.jdom2.Element("locomotive").setAttribute("id", "id 3").setAttribute("fileName", "file here").setAttribute("roadNumber", "431").setAttribute("roadName", "SP").setAttribute("mfg", "Athearn").addContent(new org.jdom2.Element("decoder").setAttribute("family", "91").setAttribute("model", "35")).addContent(new org.jdom2.Element("locoaddress").addContent(new org.jdom2.Element("dcclocoaddress").setAttribute("number", "14").setAttribute("longaddress", "yes")));
    // end create element
    r = new RosterEntry(e) {

        @Override
        protected void warnShortLong(String s) {
        }
    };
    Roster.getDefault().addEntry(r);
}
Also used : Roster(jmri.jmrit.roster.Roster) Element(org.jdom2.Element) RosterEntry(jmri.jmrit.roster.RosterEntry) Element(org.jdom2.Element)

Example 3 with Roster

use of jmri.jmrit.roster.Roster in project JMRI by JMRI.

the class AttributeTableModelTest method setUp.

@Override
public void setUp() {
    apps.tests.Log4JFixture.setUp();
    // Create empty test instance
    InstanceManager.reset(Roster.class);
    InstanceManager.setDefault(Roster.class, new Roster());
    // first entry
    Element e;
    RosterEntry r;
    e = new org.jdom2.Element("locomotive").setAttribute("id", "id 1").setAttribute("fileName", "file here").setAttribute("roadNumber", "431").setAttribute("roadName", "SP").setAttribute("mfg", "Athearn").setAttribute("dccAddress", "1234").addContent(new org.jdom2.Element("decoder").setAttribute("family", "91").setAttribute("model", "33")).addContent(new org.jdom2.Element("locoaddress").addContent(new org.jdom2.Element("dcclocoaddress").setAttribute("number", "12").setAttribute("longaddress", "yes")));
    // end create element
    r = new RosterEntry(e) {

        @Override
        protected void warnShortLong(String s) {
        }
    };
    Roster.getDefault().addEntry(r);
    r.putAttribute("key a", "value 1");
    e = new org.jdom2.Element("locomotive").setAttribute("id", "id 2").setAttribute("fileName", "file here").setAttribute("roadNumber", "431").setAttribute("roadName", "SP").setAttribute("mfg", "Athearn").addContent(new org.jdom2.Element("decoder").setAttribute("family", "91").setAttribute("model", "33")).addContent(new org.jdom2.Element("locoaddress").addContent(new org.jdom2.Element("dcclocoaddress").setAttribute("number", "12").setAttribute("longaddress", "yes")));
    // end create element
    r = new RosterEntry(e) {

        @Override
        protected void warnShortLong(String s) {
        }
    };
    Roster.getDefault().addEntry(r);
    r.putAttribute("key a", "value 11");
    r.putAttribute("key b", "value 12");
    r.putAttribute("key c", "value 13");
    r.putAttribute("key d", "value 14");
    e = new org.jdom2.Element("locomotive").setAttribute("id", "id 3").setAttribute("fileName", "file here").setAttribute("roadNumber", "431").setAttribute("roadName", "SP").setAttribute("mfg", "Athearn").addContent(new org.jdom2.Element("decoder").setAttribute("family", "91").setAttribute("model", "33")).addContent(new org.jdom2.Element("locoaddress").addContent(new org.jdom2.Element("dcclocoaddress").setAttribute("number", "12").setAttribute("longaddress", "yes")));
    // end create element
    r = new RosterEntry(e) {

        @Override
        protected void warnShortLong(String s) {
        }
    };
    Roster.getDefault().addEntry(r);
}
Also used : Roster(jmri.jmrit.roster.Roster) Element(org.jdom2.Element) RosterEntry(jmri.jmrit.roster.RosterEntry) Element(org.jdom2.Element)

Example 4 with Roster

use of jmri.jmrit.roster.Roster in project JMRI by JMRI.

the class JsonRosterHttpServiceTest method setUp.

// private final static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(JsonRosterHttpServiceTest.class);
@Before
public void setUp() throws Exception {
    Log4JFixture.setUp();
    JUnitUtil.resetInstanceManager();
    JUnitUtil.initConfigureManager();
    InstanceManager.setDefault(Roster.class, new Roster("java/test/jmri/server/json/roster/data/roster.xml"));
}
Also used : Roster(jmri.jmrit.roster.Roster) Before(org.junit.Before)

Example 5 with Roster

use of jmri.jmrit.roster.Roster in project JMRI by JMRI.

the class JsonRosterSocketServiceTest method setUp.

@Before
public void setUp() throws Exception {
    Log4JFixture.setUp();
    JUnitUtil.resetInstanceManager();
    JUnitUtil.initConfigureManager();
    InstanceManager.setDefault(Roster.class, new Roster("java/test/jmri/server/json/roster/data/roster.xml"));
    // clear the last message (if any) from the connection
    this.connection.sendMessage((JsonNode) null);
}
Also used : Roster(jmri.jmrit.roster.Roster) Before(org.junit.Before)

Aggregations

Roster (jmri.jmrit.roster.Roster)5 RosterEntry (jmri.jmrit.roster.RosterEntry)3 Element (org.jdom2.Element)2 Before (org.junit.Before)2 HeadlessException (java.awt.HeadlessException)1 ActionEvent (java.awt.event.ActionEvent)1 ActionListener (java.awt.event.ActionListener)1 BoxLayout (javax.swing.BoxLayout)1 JButton (javax.swing.JButton)1 JCheckBox (javax.swing.JCheckBox)1 JDialog (javax.swing.JDialog)1 JLabel (javax.swing.JLabel)1 JPanel (javax.swing.JPanel)1 EcosLocoToRoster (jmri.jmrix.ecos.utilities.EcosLocoToRoster)1