Search in sources :

Example 11 with RouteLocation

use of jmri.jmrit.operations.routes.RouteLocation in project JMRI by JMRI.

the class ExportTrains method writeFile.

public void writeFile(String name) {
    log.debug("writeFile {}", name);
    // This is taken in large part from "Java and XML" page 368
    File file = findFile(name);
    if (file == null) {
        file = new File(name);
    }
    PrintWriter fileOut = null;
    try {
        fileOut = new // NOI18N
        PrintWriter(// NOI18N
        new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8")), // NOI18N
        true);
    } catch (IOException e) {
        log.error("Can not open export cars CSV file: " + file.getName());
        return;
    }
    // create header
    String header = Bundle.getMessage("Name") + del + Bundle.getMessage("Description") + del + Bundle.getMessage("Time") + del + Bundle.getMessage("Route") + del + Bundle.getMessage("Departs") + del + Bundle.getMessage("Terminates") + del + Bundle.getMessage("Status") + del + Bundle.getMessage("Comment");
    fileOut.println(header);
    int count = 0;
    for (Train train : TrainManager.instance().getTrainsByTimeList()) {
        if (!train.isBuildEnabled())
            continue;
        count++;
        String routeName = "";
        if (train.getRoute() != null)
            routeName = train.getRoute().getName();
        String line = ESC + train.getName() + ESC + del + ESC + train.getDescription() + ESC + del + ESC + train.getDepartureTime() + ESC + del + ESC + routeName + ESC + del + ESC + train.getTrainDepartsName() + ESC + del + ESC + train.getTrainTerminatesName() + ESC + del + ESC + train.getStatus() + ESC + del + ESC + train.getComment() + ESC;
        fileOut.println(line);
    }
    fileOut.println();
    // second create header for built trains
    header = Bundle.getMessage("Name") + del + Bundle.getMessage("csvParameters") + del + Bundle.getMessage("Attributes");
    fileOut.println(header);
    for (Train train : TrainManager.instance().getTrainsByTimeList()) {
        if (!train.isBuildEnabled())
            continue;
        if (train.isBuilt() && train.getRoute() != null) {
            StringBuffer line = new StringBuffer(ESC + train.getName() + ESC + del + Bundle.getMessage("Route"));
            for (RouteLocation rl : train.getRoute().getLocationsBySequenceList()) {
                line.append(del + ESC + rl.getName() + ESC);
            }
            fileOut.println(line);
            line = new StringBuffer(ESC + train.getName() + ESC + del + Bundle.getMessage("csvArrivalTime"));
            for (RouteLocation rl : train.getRoute().getLocationsBySequenceList()) {
                line.append(del + ESC + train.getExpectedArrivalTime(rl) + ESC);
            }
            fileOut.println(line);
            line = new StringBuffer(ESC + train.getName() + ESC + del + Bundle.getMessage("csvDepartureTime"));
            for (RouteLocation rl : train.getRoute().getLocationsBySequenceList()) {
                line.append(del + ESC + train.getExpectedDepartureTime(rl) + ESC);
            }
            fileOut.println(line);
            line = new StringBuffer(ESC + train.getName() + ESC + del + Bundle.getMessage("csvTrainDirection"));
            for (RouteLocation rl : train.getRoute().getLocationsBySequenceList()) {
                line.append(del + ESC + rl.getTrainDirectionString() + ESC);
            }
            fileOut.println(line);
            line = new StringBuffer(ESC + train.getName() + ESC + del + Bundle.getMessage("csvTrainWeight"));
            for (RouteLocation rl : train.getRoute().getLocationsBySequenceList()) {
                line.append(del + ESC + train.getTrainWeight(rl) + ESC);
            }
            fileOut.println(line);
            line = new StringBuffer(ESC + train.getName() + ESC + del + Bundle.getMessage("csvTrainLength"));
            for (RouteLocation rl : train.getRoute().getLocationsBySequenceList()) {
                line.append(del + ESC + train.getTrainLength(rl) + ESC);
            }
            fileOut.println(line);
            line = new StringBuffer(ESC + train.getName() + ESC + del + Bundle.getMessage("Cars"));
            for (RouteLocation rl : train.getRoute().getLocationsBySequenceList()) {
                line.append(del + ESC + train.getNumberCarsInTrain(rl) + ESC);
            }
            fileOut.println(line);
            line = new StringBuffer(ESC + train.getName() + ESC + del + Bundle.getMessage("csvEmpties"));
            for (RouteLocation rl : train.getRoute().getLocationsBySequenceList()) {
                line.append(del + ESC + train.getNumberEmptyCarsInTrain(rl) + ESC);
            }
            fileOut.println(line);
            fileOut.println();
        }
    }
    fileOut.flush();
    fileOut.close();
    log.info("Exported {} trains to file {}", count, defaultOperationsFilename());
    JOptionPane.showMessageDialog(null, MessageFormat.format(Bundle.getMessage("ExportedTrainsToFile"), new Object[] { count, defaultOperationsFilename() }), Bundle.getMessage("ExportComplete"), JOptionPane.INFORMATION_MESSAGE);
}
Also used : IOException(java.io.IOException) RouteLocation(jmri.jmrit.operations.routes.RouteLocation) BufferedWriter(java.io.BufferedWriter) FileOutputStream(java.io.FileOutputStream) OutputStreamWriter(java.io.OutputStreamWriter) File(java.io.File) XmlFile(jmri.jmrit.XmlFile) Train(jmri.jmrit.operations.trains.Train) PrintWriter(java.io.PrintWriter)

Example 12 with RouteLocation

use of jmri.jmrit.operations.routes.RouteLocation in project JMRI by JMRI.

the class Action method getFormatedMessage.

/**
     * Formats a message using fixed arguments in the following order:
     * <p>
     * action name, train name, route location name, automation name, goto item id,
     * train schedule day.
     * @param message the string to be formated
     *
     * @return formated message
     */
public String getFormatedMessage(String message) {
    String trainName = "";
    Train train = getAutomationItem().getTrain();
    if (train != null) {
        trainName = " " + train.getName();
    }
    String routeLocationName = "";
    RouteLocation rl = getAutomationItem().getRouteLocation();
    if (rl != null) {
        routeLocationName = " " + rl.getName();
    }
    String automationName = "";
    Automation automation = getAutomationItem().getAutomationToRun();
    if (automation != null) {
        automationName = " " + automation.getName();
    }
    String itemId = "";
    AutomationItem item = getAutomationItem().getGotoAutomationItem();
    if (item != null) {
        itemId = " " + item.getId();
    }
    String day = "";
    TrainSchedule trainSchedule = getAutomationItem().getTrainSchedule();
    if (trainSchedule != null) {
        day = " " + trainSchedule.getName();
    }
    return MessageFormat.format(message, new Object[] { getName(), trainName, routeLocationName, automationName, itemId, day });
}
Also used : Automation(jmri.jmrit.operations.automation.Automation) AutomationItem(jmri.jmrit.operations.automation.AutomationItem) TrainSchedule(jmri.jmrit.operations.trains.timetable.TrainSchedule) RouteLocation(jmri.jmrit.operations.routes.RouteLocation) Train(jmri.jmrit.operations.trains.Train)

Example 13 with RouteLocation

use of jmri.jmrit.operations.routes.RouteLocation in project JMRI by JMRI.

the class MoveTrainAction method doAction.

@Override
public void doAction() {
    if (getAutomationItem() != null) {
        Train train = getAutomationItem().getTrain();
        if (train != null && train.getRoute() != null && train.isBuilt()) {
            setRunning(true);
            RouteLocation rl = getAutomationItem().getRouteLocation();
            if (rl != null) {
                finishAction(train.move(rl));
            } else {
                train.move();
                finishAction(true);
            }
        } else {
            finishAction(false);
        }
    }
}
Also used : RouteLocation(jmri.jmrit.operations.routes.RouteLocation) Train(jmri.jmrit.operations.trains.Train)

Example 14 with RouteLocation

use of jmri.jmrit.operations.routes.RouteLocation in project JMRI by JMRI.

the class WaitTrainAction method trainUpdate.

/**
     * Wait for train to build and no location, or train to arrive at location,
     * or train build to be deselected.
     *
     */
private void trainUpdate(PropertyChangeEvent evt) {
    if (getAutomationItem() != null) {
        if (evt.getPropertyName().equals(Train.TRAIN_MOVE_COMPLETE_CHANGED_PROPERTY) || (evt.getPropertyName().equals(Train.BUILT_CHANGED_PROPERTY) && (boolean) evt.getNewValue() == true)) {
            Train train = getAutomationItem().getTrain();
            RouteLocation rl = getAutomationItem().getRouteLocation();
            if (rl != null && rl != train.getCurrentLocation()) {
                // haven't reached this location continue waiting
                return;
            }
            train.removePropertyChangeListener(this);
            finishAction(true);
        } else if (evt.getPropertyName().equals(Train.BUILD_CHANGED_PROPERTY) && (boolean) evt.getNewValue() == false) {
            Train train = getAutomationItem().getTrain();
            train.removePropertyChangeListener(this);
            finishAction(true);
        }
    }
}
Also used : RouteLocation(jmri.jmrit.operations.routes.RouteLocation) Train(jmri.jmrit.operations.trains.Train)

Example 15 with RouteLocation

use of jmri.jmrit.operations.routes.RouteLocation in project JMRI by JMRI.

the class YardmasterByTrackPanel method runUpdate.

@SuppressFBWarnings(value = "BC_UNCONFIRMED_CAST_OF_RETURN_VALUE", justification = "CarManager only provides Car Objects")
private void runUpdate() {
    log.debug("run update");
    removePropertyChangeListerners();
    // reset the utility car counts
    trainCommon.clearUtilityCarTypes();
    checkBoxes.clear();
    pTrack.removeAll();
    boolean pickup = false;
    boolean setout = false;
    if (_track != null) {
        pTrackPane.setBorder(BorderFactory.createTitledBorder(_track.getName()));
        textTrackCommentPane.setText(_track.getComment());
        textTrackCommentPane.setVisible(!_track.getComment().equals(Track.NONE));
        textTrackCommentWorkPane.setText("");
        for (Train train : trainManager.getTrainsArrivingThisLocationList(_track.getLocation())) {
            JPanel pTrain = new JPanel();
            pTrain.setLayout(new BoxLayout(pTrain, BoxLayout.Y_AXIS));
            pTrain.setBorder(BorderFactory.createTitledBorder(MessageFormat.format(TrainSwitchListText.getStringScheduledWork(), new Object[] { train.getName(), train.getDescription() })));
            // List locos first
            List<Engine> engList = engManager.getByTrainBlockingList(train);
            if (Setup.isPrintHeadersEnabled()) {
                for (Engine engine : engList) {
                    if (engine.getTrack() == _track) {
                        JLabel header = new JLabel(Tab + trainCommon.getPickupEngineHeader());
                        setLabelFont(header);
                        pTrain.add(header);
                        break;
                    }
                }
            }
            for (Engine engine : engList) {
                if (engine.getTrack() == _track) {
                    engine.addPropertyChangeListener(this);
                    rollingStock.add(engine);
                    JCheckBox checkBox = new JCheckBox(trainCommon.pickupEngine(engine));
                    setCheckBoxFont(checkBox);
                    pTrain.add(checkBox);
                    checkBoxes.put(engine.getId(), checkBox);
                    pTrack.add(pTrain);
                }
            }
            // now do locomotive set outs
            if (Setup.isPrintHeadersEnabled()) {
                for (Engine engine : engList) {
                    if (engine.getDestinationTrack() == _track) {
                        JLabel header = new JLabel(Tab + trainCommon.getDropEngineHeader());
                        setLabelFont(header);
                        pTrain.add(header);
                        break;
                    }
                }
            }
            for (Engine engine : engList) {
                if (engine.getDestinationTrack() == _track) {
                    engine.addPropertyChangeListener(this);
                    rollingStock.add(engine);
                    JCheckBox checkBox = new JCheckBox(trainCommon.dropEngine(engine));
                    setCheckBoxFont(checkBox);
                    pTrain.add(checkBox);
                    checkBoxes.put(engine.getId(), checkBox);
                    pTrack.add(pTrain);
                }
            }
            // now cars
            List<Car> carList = carManager.getByTrainDestinationList(train);
            if (Setup.isPrintHeadersEnabled()) {
                for (Car car : carList) {
                    if (car.getTrack() == _track && car.getRouteDestination() != car.getRouteLocation()) {
                        JLabel header = new JLabel(Tab + trainCommon.getPickupCarHeader(!IS_MANIFEST, !TrainCommon.IS_TWO_COLUMN_TRACK));
                        setLabelFont(header);
                        pTrain.add(header);
                        break;
                    }
                }
            }
            // sort car pick ups by their destination
            List<RouteLocation> routeList = train.getRoute().getLocationsBySequenceList();
            for (RouteLocation rl : routeList) {
                for (Car car : carList) {
                    if (car.getTrack() == _track && car.getRouteDestination() != car.getRouteLocation() && car.getRouteDestination() == rl) {
                        car.addPropertyChangeListener(this);
                        rollingStock.add(car);
                        String text;
                        if (car.isUtility()) {
                            text = trainCommon.pickupUtilityCars(carList, car, !IS_MANIFEST, !TrainCommon.IS_TWO_COLUMN_TRACK);
                            if (text == null) {
                                // this car type has already been processed
                                continue;
                            }
                        } else {
                            text = trainCommon.pickupCar(car, !IS_MANIFEST, !TrainCommon.IS_TWO_COLUMN_TRACK);
                        }
                        pickup = true;
                        JCheckBox checkBox = new JCheckBox(text);
                        setCheckBoxFont(checkBox);
                        pTrain.add(checkBox);
                        checkBoxes.put(car.getId(), checkBox);
                        pTrack.add(pTrain);
                    }
                }
            }
            // now do car set outs
            if (Setup.isPrintHeadersEnabled()) {
                for (Car car : carList) {
                    if (car.getDestinationTrack() == _track && car.getRouteDestination() != car.getRouteLocation()) {
                        JLabel header = new JLabel(Tab + trainCommon.getDropCarHeader(!IS_MANIFEST, !TrainCommon.IS_TWO_COLUMN_TRACK));
                        setLabelFont(header);
                        pTrain.add(header);
                        break;
                    }
                }
            }
            for (Car car : carList) {
                if (car.getDestinationTrack() == _track && car.getRouteLocation() != car.getRouteDestination()) {
                    car.addPropertyChangeListener(this);
                    rollingStock.add(car);
                    String text;
                    if (car.isUtility()) {
                        text = trainCommon.setoutUtilityCars(carList, car, !TrainCommon.LOCAL, !IS_MANIFEST);
                        if (text == null) {
                            // this car type has already been processed
                            continue;
                        }
                    } else {
                        text = trainCommon.dropCar(car, !IS_MANIFEST, !TrainCommon.IS_TWO_COLUMN_TRACK);
                    }
                    setout = true;
                    JCheckBox checkBox = new JCheckBox(text);
                    setCheckBoxFont(checkBox);
                    pTrain.add(checkBox);
                    checkBoxes.put(car.getId(), checkBox);
                    pTrack.add(pTrain);
                }
            }
            // now do local car moves
            if (Setup.isPrintHeadersEnabled()) {
                for (Car car : carList) {
                    if ((car.getTrack() == _track || car.getDestinationTrack() == _track) && car.getRouteDestination() == car.getRouteLocation()) {
                        JLabel header = new JLabel(Tab + trainCommon.getLocalMoveHeader(!IS_MANIFEST));
                        setLabelFont(header);
                        pTrain.add(header);
                        break;
                    }
                }
            }
            for (Car car : carList) {
                if ((car.getTrack() == _track || car.getDestinationTrack() == _track) && car.getRouteLocation() != null && car.getRouteLocation() == car.getRouteDestination()) {
                    car.addPropertyChangeListener(this);
                    rollingStock.add(car);
                    String text;
                    if (car.isUtility()) {
                        text = trainCommon.setoutUtilityCars(carList, car, TrainCommon.LOCAL, !IS_MANIFEST);
                        if (text == null) {
                            // this car type has already been processed
                            continue;
                        }
                    } else {
                        text = trainCommon.localMoveCar(car, !IS_MANIFEST);
                    }
                    setout = true;
                    JCheckBox checkBox = new JCheckBox(text);
                    setCheckBoxFont(checkBox);
                    pTrain.add(checkBox);
                    checkBoxes.put(car.getId(), checkBox);
                    pTrack.add(pTrain);
                }
            }
            pTrackPane.validate();
            pTrain.setMaximumSize(new Dimension(2000, pTrain.getHeight()));
            pTrain.revalidate();
        }
        // now do car holds
        // we only need the cars on this track
        List<RollingStock> rsList = carManager.getByTrainList();
        List<Car> carList = new ArrayList<Car>();
        for (RollingStock rs : rsList) {
            if (rs.getTrack() != _track || rs.getRouteLocation() != null)
                continue;
            carList.add((Car) rs);
        }
        JPanel pHoldCars = new JPanel();
        pHoldCars.setLayout(new BoxLayout(pHoldCars, BoxLayout.Y_AXIS));
        pHoldCars.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("HoldCars")));
        for (Car car : carList) {
            String text;
            if (car.isUtility()) {
                String s = trainCommon.pickupUtilityCars(carList, car, !IS_MANIFEST, !TrainCommon.IS_TWO_COLUMN_TRACK);
                if (s == null)
                    continue;
                text = TrainSwitchListText.getStringHoldCar().split("\\{")[0] + s.trim();
            } else {
                text = MessageFormat.format(TrainSwitchListText.getStringHoldCar(), new Object[] { TrainCommon.padAndTruncateString(car.getRoadName(), CarRoads.instance().getMaxNameLength()), TrainCommon.padAndTruncateString(TrainCommon.splitString(car.getNumber()), Control.max_len_string_print_road_number), TrainCommon.padAndTruncateString(car.getTypeName().split("-")[0], CarTypes.instance().getMaxNameLength()), TrainCommon.padAndTruncateString(car.getLength() + TrainCommon.LENGTHABV, Control.max_len_string_length_name), TrainCommon.padAndTruncateString(car.getLoadName(), CarLoads.instance().getMaxNameLength()), TrainCommon.padAndTruncateString(_track.getName(), LocationManager.instance().getMaxTrackNameLength()), TrainCommon.padAndTruncateString(car.getColor(), CarColors.instance().getMaxNameLength()) });
            }
            JCheckBox checkBox = new JCheckBox(text);
            setCheckBoxFont(checkBox);
            pHoldCars.add(checkBox);
            checkBoxes.put(car.getId(), checkBox);
            pTrack.add(pHoldCars);
        }
        pTrackPane.validate();
        pHoldCars.setMaximumSize(new Dimension(2000, pHoldCars.getHeight()));
        pHoldCars.revalidate();
        if (pickup && !setout) {
            textTrackCommentWorkPane.setText(_track.getCommentPickup());
        } else if (!pickup && setout) {
            textTrackCommentWorkPane.setText(_track.getCommentSetout());
        } else if (pickup && setout) {
            textTrackCommentWorkPane.setText(_track.getCommentBoth());
        }
        textTrackCommentWorkPane.setVisible(!textTrackCommentWorkPane.getText().equals(""));
    } else {
        pTrackPane.setBorder(BorderFactory.createTitledBorder(""));
        textTrackCommentPane.setVisible(false);
        textTrackCommentWorkPane.setVisible(false);
    }
}
Also used : JPanel(javax.swing.JPanel) BoxLayout(javax.swing.BoxLayout) ArrayList(java.util.ArrayList) JLabel(javax.swing.JLabel) RouteLocation(jmri.jmrit.operations.routes.RouteLocation) Dimension(java.awt.Dimension) RollingStock(jmri.jmrit.operations.rollingstock.RollingStock) JCheckBox(javax.swing.JCheckBox) Car(jmri.jmrit.operations.rollingstock.cars.Car) Train(jmri.jmrit.operations.trains.Train) Engine(jmri.jmrit.operations.rollingstock.engines.Engine) SuppressFBWarnings(edu.umd.cs.findbugs.annotations.SuppressFBWarnings)

Aggregations

RouteLocation (jmri.jmrit.operations.routes.RouteLocation)118 Route (jmri.jmrit.operations.routes.Route)64 Location (jmri.jmrit.operations.locations.Location)55 Track (jmri.jmrit.operations.locations.Track)52 Car (jmri.jmrit.operations.rollingstock.cars.Car)48 Engine (jmri.jmrit.operations.rollingstock.engines.Engine)33 LocationManager (jmri.jmrit.operations.locations.LocationManager)21 RouteManager (jmri.jmrit.operations.routes.RouteManager)20 Consist (jmri.jmrit.operations.rollingstock.engines.Consist)17 Train (jmri.jmrit.operations.trains.Train)16 CarManager (jmri.jmrit.operations.rollingstock.cars.CarManager)13 ArrayList (java.util.ArrayList)12 CarTypes (jmri.jmrit.operations.rollingstock.cars.CarTypes)12 EngineManager (jmri.jmrit.operations.rollingstock.engines.EngineManager)12 RollingStock (jmri.jmrit.operations.rollingstock.RollingStock)11 EngineTypes (jmri.jmrit.operations.rollingstock.engines.EngineTypes)8 SuppressFBWarnings (edu.umd.cs.findbugs.annotations.SuppressFBWarnings)6 IOException (java.io.IOException)6 TrainManager (jmri.jmrit.operations.trains.TrainManager)6 JCheckBox (javax.swing.JCheckBox)5