Browse Source

Changes on how data is stored

develop
LO Kam Tao Leo 4 years ago
parent
commit
7af889fb7e
  1. 2
      src/org/leolo/rail/Constants.java
  2. 26
      src/org/leolo/rail/TrainMovementProcessor.java

2
src/org/leolo/rail/Constants.java

@ -12,7 +12,7 @@ public class Constants {
public static class Generic{ public static class Generic{
public static final long DEFAULT_SLEEP_TIME = 1000; public static final long DEFAULT_SLEEP_TIME = 1000;
public static final long INCRESE_RATIO = 2; 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{ public static class Scheduler{

26
src/org/leolo/rail/TrainMovementProcessor.java

@ -5,6 +5,7 @@ import java.io.FileNotFoundException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.sql.Types; import java.sql.Types;
@ -97,6 +98,9 @@ public class TrainMovementProcessor extends Thread{
try( try(
Connection conn = DatabaseManager.getInstance().getConnection(); Connection conn = DatabaseManager.getInstance().getConnection();
PreparedStatement pstmtTA = conn.prepareStatement("REPLACE INTO current_train VALUES (?,?,?,?,?,?)"); 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")) { for(JSONObject obj:procMap.get("0001")) {
String trainId = obj.getJSONObject("body").optString("train_id"); 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"); String serviceCode = obj.getJSONObject("body").optString("train_service_code");
long activationTime = obj.getJSONObject("body").optLong("creation_timestamp"); long activationTime = obj.getJSONObject("body").optLong("creation_timestamp");
String schSrc = obj.getJSONObject("body").optString("schedule_source"); String suid;
String tuid; pstmtQsid.setString(1, trainUid);
if("C".equals(schSrc)) { pstmtQsid.setDate(2, new java.sql.Date(opDate.getTime()));
tuid = trainUid + tdf.format(startDate) + tdf.format(endDate) + "0"; pstmtQsid.setDate(3, new java.sql.Date(opDate.getTime()));
try(ResultSet rs = pstmtQsid.executeQuery()){
if(rs.next()) {
suid = rs.getString(1);
}else { }else {
tuid = trainUid + tdf.format(startDate) + tdf.format(endDate) + "V"; 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(1, trainId);
pstmtTA.setString(2, tuid); pstmtTA.setString(2, suid);
pstmtTA.setDate(3, new java.sql.Date(opDate.getTime())); pstmtTA.setDate(3, new java.sql.Date(opDate.getTime()));
pstmtTA.setString(4, serviceCode); pstmtTA.setString(4, serviceCode);
pstmtTA.setTimestamp(5, new Timestamp(activationTime)); pstmtTA.setTimestamp(5, new Timestamp(activationTime));
@ -145,7 +153,7 @@ public class TrainMovementProcessor extends Thread{
int batchSize = 0; int batchSize = 0;
try( try(
Connection conn = DatabaseManager.getInstance().getConnection(); 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 = ?"); PreparedStatement pstmtUTA = conn.prepareStatement("UPDATE current_train SET `status` = ? WHERE train_id = ?");
){ ){
pstmtUTA.setString(1, CurrentTrainStatus.CANCELLED.getCode()); pstmtUTA.setString(1, CurrentTrainStatus.CANCELLED.getCode());
@ -274,7 +282,7 @@ public class TrainMovementProcessor extends Thread{
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }
}); });
} }//TM
} }
} }

Loading…
Cancel
Save