private PrintWriter checkFloatingCar(Vehicle vehicle) { PrintWriter printWriter = printWriters.get(vehicle); if (printWriter != null) { return printWriter; } final int vehNumber = vehicle.getVehNumber(); if (floatingCarVehicleNumbers.contains(vehNumber) || selectRandomPercentage(vehicle)) { floatingCarVehicleNumbers.remove(vehNumber); final PrintWriter writer = fileFloatingCars.createWriter(vehicle, route); FileFloatingCars.writeHeader(writer, vehicle, route); writer.flush(); printWriters.put(vehicle, writer); return writer; } return null; }
private void writeOutput(double simulationTime) { for (final RoadSegment roadSegment : route) { for (Vehicle vehicle : roadSegment) { PrintWriter writer = checkFloatingCar(vehicle); if (writer != null) { final Vehicle frontVeh = roadSegment.frontVehicleOnLane(vehicle); FileFloatingCars.writeData(simulationTime, vehicle, frontVeh, writer); } } } }