private void recordTripUpdate(TripUpdate tripUpdate, DataCopier tuCopier, DataCopier stCopier) throws SQLException { PreparedStatement stmt = null; int updateId = getUpdateId(); DataCopierRow tuRow = null; if (tuCopier != null) { tuRow = new DataCopierRow(); } else { stmt = mStatements.get(STTRIPUPDATE); } if (tuRow == null) { stmt.setInt(1, updateId); } else { tuRow.add(updateId); } if (tripUpdate.hasTimestamp()) { if (tuRow == null) { stmt.setLong(2, tripUpdate.getTimestamp()); } else { tuRow.add(tripUpdate.getTimestamp()); } } else { if (tuRow == null) { stmt.setNull(2, Types.INTEGER); } else { tuRow.addNull(); } } if (tripUpdate.hasTrip()) { TripDescriptor trip = tripUpdate.getTrip(); if (trip.hasScheduleRelationship()) { if (tuRow == null) { stmt.setInt(3, trip.getScheduleRelationship().getNumber()); } else { tuRow.add(trip.getScheduleRelationship().getNumber()); } } else { if (tuRow == null) { stmt.setNull(3, Types.INTEGER); } else { tuRow.addNull(); } } if (trip.hasStartDate()) { if (tuRow == null) { stmt.setString(4, trip.getStartDate()); } else { tuRow.add(trip.getStartDate()); } } else { if (tuRow == null) { stmt.setNull(4, Types.VARCHAR); } else { tuRow.addNull(); } } if (trip.hasStartTime()) { if (tuRow == null) { stmt.setString(5, trip.getStartTime()); } else { tuRow.add(trip.getStartTime()); } } else { if (tuRow == null) { stmt.setNull(5, Types.VARCHAR); } else { tuRow.addNull(); } } if (trip.hasTripId()) { if (tuRow == null) { stmt.setString(6, trip.getTripId()); } else { tuRow.add(trip.getTripId()); } } else { if (tuRow == null) { stmt.setNull(6, Types.VARCHAR); } else { tuRow.addNull(); } } if (trip.hasRouteId()) { if (tuRow == null) { stmt.setString(7, trip.getRouteId()); } else { tuRow.add(trip.getRouteId()); } } else { if (tuRow == null) { stmt.setNull(7, Types.VARCHAR); } else { tuRow.addNull(); } } } else { if (tuRow == null) { stmt.setNull(3, Types.INTEGER); stmt.setNull(4, Types.VARCHAR); stmt.setNull(5, Types.VARCHAR); stmt.setNull(6, Types.VARCHAR); stmt.setNull(7, Types.VARCHAR); } else { tuRow.addNull(5); } } if (tripUpdate.hasVehicle()) { VehicleDescriptor vd = tripUpdate.getVehicle(); if (vd.hasId()) { if (tuRow == null) { stmt.setString(8, vd.getId()); } else { tuRow.add(vd.getId()); } } else { if (tuRow == null) { stmt.setNull(8, Types.INTEGER); } else { tuRow.addNull(); } } if (vd.hasLabel()) { if (tuRow == null) { stmt.setString(9, vd.getLabel()); } else { tuRow.add(vd.getLabel()); } } else { if (tuRow == null) { stmt.setNull(9, Types.VARCHAR); } else { tuRow.addNull(); } } if (vd.hasLicensePlate()) { if (tuRow == null) { stmt.setString(10, vd.getLicensePlate()); } else { tuRow.add(vd.getLicensePlate()); } } else { if (tuRow == null) { stmt.setNull(10, Types.VARCHAR); } else { tuRow.addNull(); } } } else { if (tuRow == null) { stmt.setNull(8, Types.INTEGER); stmt.setNull(9, Types.VARCHAR); stmt.setNull(10, Types.VARCHAR); } else { tuRow.addNull(3); } } Date recorded = new Date(); if (tuRow == null) { stmt.setInt(11, (int) (recorded.getTime() / 1000)); } else { tuRow.add((int) (recorded.getTime() / 1000)); } if (tuCopier == null) { stmt.addBatch(); } else { tuCopier.add(tuRow); } if (stCopier == null) { stmt = mStatements.get(STTRIPUPDATE_STOPTIMEUPDATES); } else { stmt = null; } for (StopTimeUpdate stu : tripUpdate.getStopTimeUpdateList()) { DataCopierRow stRow = null; if (stmt == null) { stRow = new DataCopierRow(); } if (stRow == null) { stmt.setInt(1, updateId); } else { stRow.add(updateId); } if (stu.hasArrival()) { StopTimeEvent ste = stu.getArrival(); if (ste.hasTime()) { if (stRow == null) { stmt.setLong(2, ste.getTime()); } else { stRow.add(ste.getTime()); } } else { if (stRow == null) { stmt.setNull(2, Types.INTEGER); } else { stRow.addNull(); } } if (ste.hasUncertainty()) { if (stRow == null) { stmt.setInt(3, ste.getUncertainty()); } else { stRow.add(ste.getUncertainty()); } } else { if (stRow == null) { stmt.setNull(3, Types.INTEGER); } else { stRow.addNull(); } } if (ste.hasDelay()) { if (stRow == null) { stmt.setInt(4, ste.getDelay()); } else { stRow.add(ste.getDelay()); } } else { if (stRow == null) { stmt.setNull(4, Types.INTEGER); } else { stRow.addNull(); } } } else { if (stRow == null) { stmt.setNull(2, Types.INTEGER); stmt.setNull(3, Types.INTEGER); stmt.setNull(4, Types.INTEGER); } else { stRow.addNull(3); } } if (stu.hasDeparture()) { StopTimeEvent ste = stu.getDeparture(); if (ste.hasTime()) { if (stRow == null) { stmt.setLong(5, ste.getTime()); } else { stRow.add(ste.getTime()); } } else { if (stRow == null) { stmt.setNull(5, Types.INTEGER); } else { stRow.addNull(); } } if (ste.hasUncertainty()) { if (stRow == null) { stmt.setInt(6, ste.getUncertainty()); } else { stRow.add(ste.getUncertainty()); } } else { if (stRow == null) { stmt.setNull(6, Types.INTEGER); } else { stRow.addNull(); } } if (ste.hasDelay()) { if (stRow == null) { stmt.setInt(7, ste.getDelay()); } else { stRow.add(ste.getDelay()); } } else { if (stRow == null) { stmt.setNull(7, Types.INTEGER); } else { stRow.addNull(); } } } else { if (stRow == null) { stmt.setNull(5, Types.INTEGER); stmt.setNull(6, Types.INTEGER); stmt.setNull(7, Types.INTEGER); } else { stRow.addNull(3); } } int srInt = stu.hasScheduleRelationship() ? stu.getScheduleRelationship().getNumber() : com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate .ScheduleRelationship.SCHEDULED_VALUE; if (stRow == null) { stmt.setInt(8, srInt); } else { stRow.add(srInt); } if (stu.hasStopId()) { if (stRow == null) { stmt.setString(9, stu.getStopId()); } else { stRow.add(stu.getStopId()); } } else { if (stRow == null) { stmt.setNull(9, Types.VARCHAR); } else { stRow.addNull(); } } int ssInt = stu.hasStopSequence() ? stu.getStopSequence() : -1; if (stRow == null) { stmt.setInt(10, ssInt); } else { stRow.add(ssInt); } if (stmt == null) { stCopier.add(stRow); } else { stmt.addBatch(); } } }
private void recordVehicle(VehiclePosition vehicle, DataCopier copier) throws SQLException, Exception { if (!vehicle.hasPosition()) { throw new Exception("No position found"); } PreparedStatement stmt = null; DataCopierRow row = null; if (copier == null) { stmt = mStatements.get(STVEHICLE); } else { row = new DataCopierRow(); } int congestionLevel = vehicle.hasCongestionLevel() ? vehicle.getCongestionLevel().getNumber() : CongestionLevel.UNKNOWN_CONGESTION_LEVEL_VALUE; int vehicleStatus = vehicle.hasCurrentStatus() ? vehicle.getCurrentStatus().getNumber() : VehicleStopStatus.IN_TRANSIT_TO_VALUE; int stopSequence = vehicle.hasCurrentStopSequence() ? vehicle.getCurrentStopSequence() : -1; if (row == null) { stmt.setInt(1, congestionLevel); stmt.setInt(2, vehicleStatus); stmt.setInt(3, stopSequence); } else { row.add(congestionLevel); row.add(vehicleStatus); row.add(stopSequence); } Position pos = vehicle.getPosition(); if (pos.hasBearing()) { if (row == null) { stmt.setFloat(4, pos.getBearing()); } else { row.add(pos.getBearing()); } } else { if (row == null) { stmt.setNull(4, Types.FLOAT); } else { row.addNull(); } } if (pos.hasOdometer()) { if (row == null) { stmt.setDouble(5, pos.getOdometer()); } else { row.add(pos.getOdometer()); } } else { if (row == null) { stmt.setNull(5, Types.DOUBLE); } else { row.addNull(); } } if (pos.hasSpeed()) { if (row == null) { stmt.setFloat(6, pos.getSpeed()); } else { row.add(pos.getSpeed()); } } else { if (row == null) { stmt.setNull(6, Types.FLOAT); } else { row.addNull(); } } if (pos.hasLatitude()) { if (row == null) { stmt.setFloat(7, pos.getLatitude()); } else { row.add(pos.getLatitude()); } } else { if (row == null) { stmt.setNull(7, Types.FLOAT); } else { row.addNull(); } } if (pos.hasLongitude()) { if (row == null) { stmt.setFloat(8, pos.getLongitude()); } else { row.add(pos.getLongitude()); } } else { if (row == null) { stmt.setNull(8, Types.FLOAT); } else { row.addNull(); } } if (vehicle.hasStopId()) { if (row == null) { stmt.setString(9, vehicle.getStopId()); } else { row.add(vehicle.getStopId()); } } else { if (row == null) { stmt.setNull(9, Types.VARCHAR); } else { row.addNull(); } } if (vehicle.hasTimestamp()) { if (row == null) { stmt.setLong(10, vehicle.getTimestamp()); } else { row.add(vehicle.getTimestamp()); } } else { if (row == null) { stmt.setNull(10, Types.INTEGER); } else { row.addNull(); } } if (vehicle.hasTrip()) { TripDescriptor trip = vehicle.getTrip(); if (trip.hasScheduleRelationship()) { if (row == null) { stmt.setInt(11, trip.getScheduleRelationship().getNumber()); } else { row.add(trip.getScheduleRelationship().getNumber()); } } else { if (row == null) { stmt.setNull(11, Types.INTEGER); } else { row.addNull(); } } if (trip.hasStartDate()) { if (row == null) { stmt.setString(12, trip.getStartDate()); } else { row.add(trip.getStartDate()); } } else { if (row == null) { stmt.setNull(12, Types.VARCHAR); } else { row.addNull(); } } if (trip.hasStartTime()) { if (row == null) { stmt.setString(13, trip.getStartTime()); } else { row.add(trip.getStartTime()); } } else { if (row == null) { stmt.setNull(13, Types.VARCHAR); } else { row.addNull(); } } if (trip.hasTripId()) { if (row == null) { stmt.setString(14, trip.getTripId()); } else { row.add(trip.getTripId()); } } else { if (row == null) { stmt.setNull(14, Types.VARCHAR); } else { row.addNull(); } } if (trip.hasRouteId()) { if (row == null) { stmt.setString(15, trip.getRouteId()); } else { row.add(trip.getRouteId()); } } else { if (row == null) { stmt.setNull(15, Types.VARCHAR); } else { row.addNull(); } } } else { if (row == null) { stmt.setNull(11, Types.INTEGER); stmt.setNull(12, Types.VARCHAR); stmt.setNull(13, Types.VARCHAR); stmt.setNull(14, Types.VARCHAR); stmt.setNull(15, Types.VARCHAR); } else { row.addNull(5); } } if (vehicle.hasVehicle()) { VehicleDescriptor vd = vehicle.getVehicle(); if (vd.hasId()) { if (row == null) { stmt.setString(16, vd.getId()); } else { row.add(vd.getId()); } } else { if (row == null) { stmt.setNull(16, Types.VARCHAR); } else { row.addNull(); } } if (vd.hasLabel()) { if (row == null) { stmt.setString(17, vd.getLabel()); } else { row.add(vd.getLabel()); } } else { if (row == null) { stmt.setNull(17, Types.VARCHAR); } else { row.addNull(); } } if (vd.hasLicensePlate()) { if (row == null) { stmt.setString(18, vd.getLicensePlate()); } else { row.add(vd.getLicensePlate()); } } else { if (row == null) { stmt.setNull(18, Types.VARCHAR); } else { row.addNull(); } } } else { if (row == null) { stmt.setNull(16, Types.VARCHAR); stmt.setNull(17, Types.VARCHAR); stmt.setNull(18, Types.VARCHAR); } else { row.addNull(3); } } Date recorded = new Date(); if (row == null) { stmt.setInt(19, (int) (recorded.getTime() / 1000)); } else { row.add((int) (recorded.getTime() / 1000)); } if (stmt == null) { copier.add(row); } else { stmt.execute(); } }