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. 28
      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 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{

28
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
}
}

Loading…
Cancel
Save