diff --git a/src/org/leolo/rail/Constants.java b/src/org/leolo/rail/Constants.java index 0f3e8b0..2c2caa2 100644 --- a/src/org/leolo/rail/Constants.java +++ b/src/org/leolo/rail/Constants.java @@ -12,7 +12,7 @@ public class Constants { public static class Generic{ public static final long DEFAULT_SLEEP_TIME = 1000; public static final long INCRESE_RATIO = 2; - public static final boolean DEBUG_MODE = true; + public static final boolean DEBUG_MODE = false; } public static class Scheduler{ diff --git a/src/org/leolo/rail/TrainMovementProcessor.java b/src/org/leolo/rail/TrainMovementProcessor.java index f57316b..c73bcdd 100644 --- a/src/org/leolo/rail/TrainMovementProcessor.java +++ b/src/org/leolo/rail/TrainMovementProcessor.java @@ -5,6 +5,7 @@ import java.io.FileNotFoundException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.sql.Types; @@ -97,6 +98,9 @@ public class TrainMovementProcessor extends Thread{ try( Connection conn = DatabaseManager.getInstance().getConnection(); PreparedStatement pstmtTA = conn.prepareStatement("REPLACE INTO current_train VALUES (?,?,?,?,?,?)"); + PreparedStatement pstmtQsid = conn.prepareStatement("SELECT suid FROM all_schedule " + + "WHERE train_uid = ? AND ? BETWEEN start_date AND end_date AND days LIKE get_wd_str(?) " + + "ORDER BY CASE sch_type WHEN 'CAN' THEN 1 WHEN 'VAR' THEN 2 WHEN 'OVL' THEN 3 ELSE 4 END ASC LIMIT 1") ){ for(JSONObject obj:procMap.get("0001")) { String trainId = obj.getJSONObject("body").optString("train_id"); @@ -114,16 +118,20 @@ public class TrainMovementProcessor extends Thread{ } String serviceCode = obj.getJSONObject("body").optString("train_service_code"); long activationTime = obj.getJSONObject("body").optLong("creation_timestamp"); - String schSrc = obj.getJSONObject("body").optString("schedule_source"); - String tuid; - if("C".equals(schSrc)) { - tuid = trainUid + tdf.format(startDate) + tdf.format(endDate) + "0"; - }else { - tuid = trainUid + tdf.format(startDate) + tdf.format(endDate) + "V"; + String suid; + pstmtQsid.setString(1, trainUid); + pstmtQsid.setDate(2, new java.sql.Date(opDate.getTime())); + pstmtQsid.setDate(3, new java.sql.Date(opDate.getTime())); + try(ResultSet rs = pstmtQsid.executeQuery()){ + if(rs.next()) { + suid = rs.getString(1); + }else { + suid = trainUid + tdf.format(startDate) + tdf.format(endDate) + "V"; + } } -// log.debug("[TA] {}({}) TSC:{}", trainId, tuid, serviceCode); + log.debug("[TA] {}({}) TSC:{}", trainId, suid, serviceCode); pstmtTA.setString(1, trainId); - pstmtTA.setString(2, tuid); + pstmtTA.setString(2, suid); pstmtTA.setDate(3, new java.sql.Date(opDate.getTime())); pstmtTA.setString(4, serviceCode); pstmtTA.setTimestamp(5, new Timestamp(activationTime)); @@ -145,7 +153,7 @@ public class TrainMovementProcessor extends Thread{ int batchSize = 0; try( Connection conn = DatabaseManager.getInstance().getConnection(); - PreparedStatement pstmtTC = conn.prepareStatement("REPLACE train_cancellation VALUES (?,?,?,?,?,?,?)"); + PreparedStatement pstmtTC = conn.prepareStatement("REPLACE current_train_cancellation VALUES (?,?,?,?,?,?,?)"); PreparedStatement pstmtUTA = conn.prepareStatement("UPDATE current_train SET `status` = ? WHERE train_id = ?"); ){ pstmtUTA.setString(1, CurrentTrainStatus.CANCELLED.getCode()); @@ -274,7 +282,7 @@ public class TrainMovementProcessor extends Thread{ log.error(e.getMessage(), e); } }); - } + }//TM } }