diff --git a/pom.xml b/pom.xml
index 6d84dec..57a9ff4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -82,6 +82,11 @@
java-uuid-generator
4.0.1
+
+ jug
+ jug
+ 2.0.0
+
diff --git a/src/main/java/org/leolo/nrdatad/App.java b/src/main/java/org/leolo/nrdatad/App.java
index 61fd2f5..0d237b9 100644
--- a/src/main/java/org/leolo/nrdatad/App.java
+++ b/src/main/java/org/leolo/nrdatad/App.java
@@ -95,7 +95,6 @@ public class App {
return;
}
loadCronJob();
- new Thread(()->{testRefData();}).start();
while(true);
}
diff --git a/src/main/java/org/leolo/nrdatad/Constants.java b/src/main/java/org/leolo/nrdatad/Constants.java
index 068a451..af8fcfb 100644
--- a/src/main/java/org/leolo/nrdatad/Constants.java
+++ b/src/main/java/org/leolo/nrdatad/Constants.java
@@ -21,8 +21,12 @@ public final class Constants {
}
public static class NetworkRailURI{
- public static final String CORPUS_URL = "https://datafeeds.networkrail.co.uk/ntrod/SupportingFileAuthenticate?type=CORPUS";
- public static final String SMART_URL = "https://datafeeds.networkrail.co.uk/ntrod/SupportingFileAuthenticate?type=SMART";
- public static final String SCHEDULE_URL = "https://datafeeds.networkrail.co.uk/ntrod/CifFileAuthenticate?type=CIF_ALL_FULL_DAILY&day=toc-full";
+ public static final String CORPUS_URL = "https://publicdatafeeds.networkrail.co.uk/ntrod/SupportingFileAuthenticate?type=CORPUS";
+ public static final String SMART_URL = "https://publicdatafeeds.networkrail.co.uk/ntrod/SupportingFileAuthenticate?type=SMART";
+ public static final String SCHEDULE_URL = "https://publicdatafeeds.networkrail.co.uk/ntrod/CifFileAuthenticate?type=CIF_ALL_FULL_DAILY&day=toc-full";
+ }
+
+ public static class DataSourceNames {
+ public static final String SOURCE_NETWORK_RAIL = "Network Rail";
}
}
diff --git a/src/main/java/org/leolo/nrdatad/cron/ReferenceDataJob.java b/src/main/java/org/leolo/nrdatad/cron/ReferenceDataJob.java
index 6f78246..d1cf4d2 100644
--- a/src/main/java/org/leolo/nrdatad/cron/ReferenceDataJob.java
+++ b/src/main/java/org/leolo/nrdatad/cron/ReferenceDataJob.java
@@ -8,6 +8,7 @@ import org.leolo.nrdatad.ConfigurationManager;
import org.leolo.nrdatad.Constants;
import org.leolo.nrdatad.db.CorpusDao;
import org.leolo.nrdatad.model.Corpus;
+import org.leolo.nrdatad.model.DataSource;
import org.leolo.nrdatad.model.Smart;
import org.leolo.nrdatad.util.HttpUtil;
import org.quartz.Job;
@@ -50,6 +51,7 @@ public class ReferenceDataJob implements Job {
JSONArray rootArray = rootObj.getJSONArray("BERTHDATA");
log.atInfo().log("{} entries found", rootArray.length());
Collection smarts = new ArrayList<>();
+ DataSource ds = conf.getDatabaseManager().getDataSourceDao().generateAndInsertUUID(Constants.DataSourceNames.SOURCE_NETWORK_RAIL,"SMART", false);
for (int i = 0; i < rootArray.length(); i++) {
JSONObject obj = rootArray.getJSONObject(i);
Smart smart = Smart.parseJSON(obj);
@@ -57,6 +59,7 @@ public class ReferenceDataJob implements Job {
log.atInfo().log("Improper SMART record: {}", obj);
continue;
}
+ smart.setDataSource(ds);
smarts.add(smart);
}
try {
@@ -86,9 +89,12 @@ public class ReferenceDataJob implements Job {
JSONArray rootArray = rootObj.getJSONArray("TIPLOCDATA");
log.atInfo().log("{} entries found", rootArray.length());
ArrayList corpusList = new ArrayList<>();
+ DataSource ds = conf.getDatabaseManager().getDataSourceDao().generateAndInsertUUID(Constants.DataSourceNames.SOURCE_NETWORK_RAIL,"CORPUS", false);
for(int i=0;i schedules = new ArrayList<>();
+ while(true){
+ String line = br.readLine();
+ if(line == null){
+ break;
+ }
+ TrainSchedule trainSchedule = TrainSchedule.parseJSON(line);
+ if(Character.isDigit(trainSchedule.getTrainStatus().charAt(0))){
+ trainSchedule.setSchedeuleType("WTT");
+ }else{
+ trainSchedule.setSchedeuleType("STP");
+ }
+ schedules.add(trainSchedule);
+ if(schedules.size()>1000){
+ //Replace
+ log.atDebug().log("Processed a batch of SCHEDULE");
+ schedules.clear();
+ }
+ }
+ //Replace
+ log.atDebug().log("Processed last batch of SCHEDULE");
+ } catch (IOException e){
+ log.atError().withThrowable(e).log("Error when reading file.");
+ }
+ try{
+ new File(baseTempDir, file).delete();
+ } catch (Exception e){
+ log.atWarn().withThrowable(e).log("Unable to remove temp file {}", file);
+ }
+ }
}
diff --git a/src/main/java/org/leolo/nrdatad/db/DataSourceDao.java b/src/main/java/org/leolo/nrdatad/db/DataSourceDao.java
new file mode 100644
index 0000000..68abf5b
--- /dev/null
+++ b/src/main/java/org/leolo/nrdatad/db/DataSourceDao.java
@@ -0,0 +1,50 @@
+package org.leolo.nrdatad.db;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.leolo.nrdatad.model.DataSource;
+
+import java.sql.SQLException;
+import java.util.Date;
+
+public abstract class DataSourceDao extends BaseDao{
+
+ private Logger log = LogManager.getLogger();
+
+ public DataSourceDao(DatabaseManager manager) {
+ super(manager);
+ }
+
+ public abstract void insert(DataSource ds) throws SQLException;
+
+ public DataSource generateAndInsertUUID(String provider, String streamName, boolean isMessage, Date startDate, String messageId){
+ DataSource ds = new DataSource(provider, streamName, isMessage, startDate, messageId);
+ tryInsert(ds);
+ return ds;
+ }
+
+ public DataSource generateAndInsertUUID(String provider, String streamName, boolean isMessage){
+ DataSource ds = new DataSource(provider, streamName, isMessage);
+ tryInsert(ds);
+ return ds;
+ }
+
+ public DataSource generateAndInsertUUID(String provider, String streamName, boolean isMessage, String messageId){
+ DataSource ds = new DataSource(provider, streamName, isMessage, messageId);
+ tryInsert(ds);
+ return ds;
+ }
+
+ private void tryInsert(DataSource ds) {
+ new Thread(()->{
+ log.atInfo().log("Trying to insert record {}", ds.getUuid());
+ try{
+ insert(ds);
+ } catch (SQLException e){
+ log.atWarn().withThrowable(e).log("Unable to insert data source record {}", ds.getUuid());
+ }
+ }).start();
+
+ }
+
+}
diff --git a/src/main/java/org/leolo/nrdatad/db/DatabaseManager.java b/src/main/java/org/leolo/nrdatad/db/DatabaseManager.java
index c5bacfe..0943748 100644
--- a/src/main/java/org/leolo/nrdatad/db/DatabaseManager.java
+++ b/src/main/java/org/leolo/nrdatad/db/DatabaseManager.java
@@ -20,4 +20,8 @@ public interface DatabaseManager {
public TiplocDao getTiplocDao();
public TrainAssociationDao getTrainAssociationDao();
+
+ public TrainScheduleDao getTrainScheduleDao();
+
+ public DataSourceDao getDataSourceDao();
}
diff --git a/src/main/java/org/leolo/nrdatad/db/TrainScheduleDao.java b/src/main/java/org/leolo/nrdatad/db/TrainScheduleDao.java
new file mode 100644
index 0000000..a84735a
--- /dev/null
+++ b/src/main/java/org/leolo/nrdatad/db/TrainScheduleDao.java
@@ -0,0 +1,24 @@
+package org.leolo.nrdatad.db;
+
+import org.leolo.nrdatad.model.TrainSchedule;
+
+import java.sql.SQLException;
+import java.util.Collection;
+
+public abstract class TrainScheduleDao extends BaseDao {
+
+ public TrainScheduleDao(DatabaseManager databaseManager){
+ super(databaseManager);
+ }
+
+ public abstract void insert(TrainSchedule schedule) throws SQLException;
+
+ public void insertAll(Collection schedules) throws SQLException{
+ for(TrainSchedule ts: schedules){
+ insert(ts);
+ }
+ }
+
+ public abstract boolean hasSUID(String suid) throws SQLException;
+
+}
diff --git a/src/main/java/org/leolo/nrdatad/db/mariadb/CorpusDaoImpl.java b/src/main/java/org/leolo/nrdatad/db/mariadb/CorpusDaoImpl.java
index eab1e1f..6455133 100644
--- a/src/main/java/org/leolo/nrdatad/db/mariadb/CorpusDaoImpl.java
+++ b/src/main/java/org/leolo/nrdatad/db/mariadb/CorpusDaoImpl.java
@@ -99,8 +99,8 @@ public class CorpusDaoImpl extends org.leolo.nrdatad.db.CorpusDao {
try(
Connection conn = getConnection();
PreparedStatement pstmt = conn.prepareStatement(
- "INSERT INTO corpus (stanox, uic_code, crs_code, tiploc_code, nlc_code, `desc`, short_desc) " +
- "VALUES (?,?,?,?,?,?,?)")
+ "INSERT INTO corpus (stanox, uic_code, crs_code, tiploc_code, nlc_code, `desc`, short_desc, data_source) " +
+ "VALUES (?,?,?,?,?,?,?,?)")
){
setString(pstmt, 1, corpus.getStanoxCode());
setString(pstmt, 2, corpus.getUicCode());
@@ -109,6 +109,7 @@ public class CorpusDaoImpl extends org.leolo.nrdatad.db.CorpusDao {
setString(pstmt, 5, corpus.getNlcCode());
setString(pstmt, 6, corpus.getLongDescription());
setString(pstmt, 7, corpus.getShortDescription());
+ setString(pstmt, 8, corpus.getDataSource().getUuid().toString());
pstmt.executeUpdate();
conn.commit();
}
@@ -119,8 +120,8 @@ public class CorpusDaoImpl extends org.leolo.nrdatad.db.CorpusDao {
try(
Connection conn = getConnection();
PreparedStatement pstmt = conn.prepareStatement(
- "INSERT INTO corpus (stanox, uic_code, crs_code, tiploc_code, nlc_code, `desc`, short_desc) " +
- "VALUES (?,?,?,?,?,?,?)")
+ "INSERT INTO corpus (stanox, uic_code, crs_code, tiploc_code, nlc_code, `desc`, short_desc, data_source) " +
+ "VALUES (?,?,?,?,?,?,?,?)")
){
for(Corpus corpus:datas) {
setString(pstmt, 1, corpus.getStanoxCode());
@@ -130,6 +131,7 @@ public class CorpusDaoImpl extends org.leolo.nrdatad.db.CorpusDao {
setString(pstmt, 5, corpus.getNlcCode());
setString(pstmt, 6, corpus.getLongDescription());
setString(pstmt, 7, corpus.getShortDescription());
+ setString(pstmt, 8, corpus.getDataSource().getUuid().toString());
pstmt.addBatch();
}
pstmt.executeBatch();
@@ -145,11 +147,11 @@ public class CorpusDaoImpl extends org.leolo.nrdatad.db.CorpusDao {
try(
Connection conn = getConnection();
PreparedStatement psIns = conn.prepareStatement(
- "INSERT INTO corpus (stanox, uic_code, crs_code, tiploc_code, `desc`, short_desc, nlc_code) " +
- "VALUES (?,?,?,?,?,?,?)");
+ "INSERT INTO corpus (stanox, uic_code, crs_code, tiploc_code, `desc`, short_desc, data_source, nlc_code) " +
+ "VALUES (?,?,?,?,?,?,?,?)");
PreparedStatement psUpd = conn.prepareStatement(
"UPDATE corpus " +
- "SET stanox=?, uic_code=?, crs_code=?, tiploc_code=?, `desc`=?, short_desc=? " +
+ "SET stanox=?, uic_code=?, crs_code=?, tiploc_code=?, `desc`=?, short_desc=?, data_source = ? " +
"WHERE nlc_code = ?"
)
){
@@ -158,17 +160,21 @@ public class CorpusDaoImpl extends org.leolo.nrdatad.db.CorpusDao {
Corpus existing = searchCORPUSByNlcCode(corpus.getNlcCode());
PreparedStatement stmt = null;
if(corpus.equals(existing)){
+ log.atDebug().log("CORPUS {} not modified", corpus.getNlcCode());
continue;
}else if(existing==null){
if(pendingInsert.contains(corpus.getNlcCode())){
+ log.atDebug().log("CORPUS {} already arranged for insert", corpus.getNlcCode());
continue;
}
pendingInsert.add(corpus.getNlcCode());
stmt = psIns;
insertCount++;
+ log.atDebug().log("CORPUS {} to be inserted", corpus.getNlcCode());
}else{
stmt = psUpd;
updateCount++;
+ log.atDebug().log("CORPUS {} to be updated", corpus.getNlcCode());
}
setString(stmt, 1, corpus.getStanoxCode());
setString(stmt, 2, corpus.getUicCode());
@@ -176,7 +182,8 @@ public class CorpusDaoImpl extends org.leolo.nrdatad.db.CorpusDao {
setString(stmt, 4, corpus.getTiplocCode());
setString(stmt, 5, corpus.getLongDescription());
setString(stmt, 6, corpus.getShortDescription());
- setString(stmt, 7, corpus.getNlcCode());
+ setString(stmt, 7, corpus.getDataSource().getUuid().toString());
+ setString(stmt, 8, corpus.getNlcCode());
stmt.addBatch();
}
if(insertCount>0){
@@ -225,7 +232,7 @@ public class CorpusDaoImpl extends org.leolo.nrdatad.db.CorpusDao {
Connection conn = getConnection();
PreparedStatement pstmt = conn.prepareStatement(
"UPDATE corpus " +
- "SET stanox=?, uic_code=?, crs_code=?, tiploc_code=?, `desc`=?, short_desc=? " +
+ "SET stanox=?, uic_code=?, crs_code=?, tiploc_code=?, `desc`=?, short_desc=?, data_source = ? " +
"WHERE nlc_code = ?"
)
){
@@ -235,7 +242,8 @@ public class CorpusDaoImpl extends org.leolo.nrdatad.db.CorpusDao {
setString(pstmt, 4, corpus.getTiplocCode());
setString(pstmt, 5, corpus.getLongDescription());
setString(pstmt, 6, corpus.getShortDescription());
- setString(pstmt, 7, corpus.getNlcCode());
+ setString(pstmt, 7, corpus.getDataSource().getUuid().toString());
+ setString(pstmt, 8, corpus.getNlcCode());
pstmt.executeUpdate();
}
}
diff --git a/src/main/java/org/leolo/nrdatad/db/mariadb/DataSourceDaoImpl.java b/src/main/java/org/leolo/nrdatad/db/mariadb/DataSourceDaoImpl.java
new file mode 100644
index 0000000..29413b8
--- /dev/null
+++ b/src/main/java/org/leolo/nrdatad/db/mariadb/DataSourceDaoImpl.java
@@ -0,0 +1,36 @@
+package org.leolo.nrdatad.db.mariadb;
+
+import org.leolo.nrdatad.db.DataSourceDao;
+import org.leolo.nrdatad.db.DatabaseManager;
+import org.leolo.nrdatad.model.DataSource;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+public class DataSourceDaoImpl extends DataSourceDao {
+
+ public DataSourceDaoImpl(DatabaseManager manager){
+ super(manager);
+ }
+
+ @Override
+ public void insert(DataSource ds) throws SQLException {
+ try(
+ Connection conn = getConnection();
+ PreparedStatement stmt = conn.prepareStatement(
+ "INSERT INTO data_source (uuid, provider, data_stream, is_messsage, start_date, message_id) " +
+ "VALUES (?,?,?,?,?,?)"
+ )
+ ){
+ setString(stmt,1, ds.getUuid().toString());
+ setString(stmt,2, ds.getProvider());
+ setString(stmt,3, ds.getStreamName());
+ setString(stmt,4, ds.isMessage()?"Y":"N");
+ setDate (stmt,5, ds.getStartDate());
+ setString(stmt,6, ds.getMessageId());
+ stmt.executeUpdate();
+ conn.commit();
+ }
+ }
+}
diff --git a/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java b/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java
index 0c54698..81cb15a 100644
--- a/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java
+++ b/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java
@@ -85,4 +85,14 @@ public class DatabaseManager implements org.leolo.nrdatad.db.DatabaseManager{
public TrainAssociationDao getTrainAssociationDao() {
return new TrainAssociationDaoImpl(this);
}
+
+ @Override
+ public TrainScheduleDao getTrainScheduleDao() {
+ return null;
+ }
+
+ @Override
+ public DataSourceDao getDataSourceDao() {
+ return new DataSourceDaoImpl(this);
+ }
}
diff --git a/src/main/java/org/leolo/nrdatad/db/mariadb/SmartDaoImpl.java b/src/main/java/org/leolo/nrdatad/db/mariadb/SmartDaoImpl.java
index dd25cf9..1d9b9ea 100644
--- a/src/main/java/org/leolo/nrdatad/db/mariadb/SmartDaoImpl.java
+++ b/src/main/java/org/leolo/nrdatad/db/mariadb/SmartDaoImpl.java
@@ -28,8 +28,8 @@ public class SmartDaoImpl extends org.leolo.nrdatad.db.SmartDao {
PreparedStatement pstmt = conn.prepareStatement(
"INSERT INTO smart (" +
"td, from_berth, to_berth, from_line, to_line, breth_offset, platform, event, route, " +
- "stanox, station_name, step_type, comment" +
- ") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)")
+ "stanox, station_name, step_type, comment, data_source" +
+ ") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)")
){
setString(pstmt, 1, smart.getTd());
setString(pstmt, 2, smart.getFromBerth());
@@ -44,6 +44,7 @@ public class SmartDaoImpl extends org.leolo.nrdatad.db.SmartDao {
setString(pstmt, 11, smart.getStationName());
setString(pstmt, 12, smart.getStepType().getCode());
setString(pstmt, 13, smart.getComment());
+ setString(pstmt, 14, smart.getDataSource().getUuid().toString());
pstmt.executeUpdate();
conn.commit();
}
@@ -56,8 +57,8 @@ public class SmartDaoImpl extends org.leolo.nrdatad.db.SmartDao {
PreparedStatement pstmt = conn.prepareStatement(
"INSERT INTO smart (" +
"td, from_berth, to_berth, from_line, to_line, breth_offset, platform, event, route, " +
- "stanox, station_name, step_type, comment" +
- ") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)")
+ "stanox, station_name, step_type, comment, data_source" +
+ ") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?, ?)")
){
for(Smart smart:smarts){
setString(pstmt, 1, smart.getTd());
@@ -73,6 +74,7 @@ public class SmartDaoImpl extends org.leolo.nrdatad.db.SmartDao {
setString(pstmt, 11, smart.getStationName());
setString(pstmt, 12, smart.getStepType().getCode());
setString(pstmt, 13, smart.getComment());
+ setString(pstmt, 14, smart.getDataSource().getUuid().toString());
pstmt.addBatch();
}
pstmt.executeBatch();
diff --git a/src/main/java/org/leolo/nrdatad/db/mariadb/TrainScheduleDaoImpl.java b/src/main/java/org/leolo/nrdatad/db/mariadb/TrainScheduleDaoImpl.java
new file mode 100644
index 0000000..d3e8474
--- /dev/null
+++ b/src/main/java/org/leolo/nrdatad/db/mariadb/TrainScheduleDaoImpl.java
@@ -0,0 +1,40 @@
+package org.leolo.nrdatad.db.mariadb;
+
+import org.leolo.nrdatad.db.DatabaseManager;
+import org.leolo.nrdatad.db.TrainScheduleDao;
+import org.leolo.nrdatad.model.TrainSchedule;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+public class TrainScheduleDaoImpl extends TrainScheduleDao {
+ public TrainScheduleDaoImpl(DatabaseManager databaseManager) {
+ super(databaseManager);
+ }
+
+ @Override
+ public void insert(TrainSchedule schedule) throws SQLException {
+ //Insert into train_schedule, train_schedule_location
+ try(Connection conn = getConnection()){
+ //Insert the train_schedule first
+ try (
+ PreparedStatement pstmt = conn.prepareStatement(
+ "INSERT INTO train_schedule (suid, train_uid, start_date, end_date, bank_holiday, signal_id, rsid, train_status, train_category, power_type, planned_speed, operating_character, class_avail, sleeper, reservation, catering, atoc_code) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
+ )
+ ){
+ setString(pstmt, 1, schedule.getSUID());
+ setInt (pstmt, 2, 1); //This is the first one
+ setString(pstmt, 3, schedule.getTrainUid());
+ char status = schedule.getTrainStatus().charAt(0);
+
+
+ }
+ }
+ }
+
+ @Override
+ public boolean hasSUID(String suid) throws SQLException {
+ return false;
+ }
+}
diff --git a/src/main/java/org/leolo/nrdatad/model/Corpus.java b/src/main/java/org/leolo/nrdatad/model/Corpus.java
index cdc3ab0..cd7c2a6 100644
--- a/src/main/java/org/leolo/nrdatad/model/Corpus.java
+++ b/src/main/java/org/leolo/nrdatad/model/Corpus.java
@@ -15,6 +15,16 @@ public class Corpus {
private String longDescription;
private String shortDescription;
+ private DataSource dataSource;
+
+ public DataSource getDataSource() {
+ return dataSource;
+ }
+
+ public void setDataSource(DataSource dataSource) {
+ this.dataSource = dataSource;
+ }
+
public String getStanoxCode() {
return stanoxCode;
}
diff --git a/src/main/java/org/leolo/nrdatad/model/DataSource.java b/src/main/java/org/leolo/nrdatad/model/DataSource.java
new file mode 100644
index 0000000..6204526
--- /dev/null
+++ b/src/main/java/org/leolo/nrdatad/model/DataSource.java
@@ -0,0 +1,98 @@
+package org.leolo.nrdatad.model;
+
+import org.leolo.nrdatad.util.UUIDUtil;
+
+import java.util.Date;
+import java.util.UUID;
+
+public class DataSource {
+
+ private UUID uuid;
+ private String provider;
+ private String streamName;
+ private boolean isMessage;
+ private Date startDate;
+ private String messageId;
+
+ public DataSource(){
+ setRandomUuid();
+ }
+
+ public DataSource(String provider, String streamName, boolean isMessage, Date startDate, String messageId) {
+ setRandomUuid();
+ this.provider = provider;
+ this.streamName = streamName;
+ this.isMessage = isMessage;
+ this.startDate = startDate;
+ this.messageId = messageId;
+ }
+
+ public DataSource(String provider, String streamName, boolean isMessage) {
+ setRandomUuid();
+ this.provider = provider;
+ this.streamName = streamName;
+ this.isMessage = isMessage;
+ this.startDate = new Date();
+ }
+
+ public DataSource(String provider, String streamName, boolean isMessage, String messageId) {
+ setRandomUuid();
+ this.provider = provider;
+ this.streamName = streamName;
+ this.isMessage = isMessage;
+ this.startDate = new Date();
+ this.messageId = messageId;
+ }
+
+ public String getProvider() {
+ return provider;
+ }
+
+ public void setProvider(String provider) {
+ this.provider = provider;
+ }
+
+ public String getStreamName() {
+ return streamName;
+ }
+
+ public void setStreamName(String streamName) {
+ this.streamName = streamName;
+ }
+
+ public boolean isMessage() {
+ return isMessage;
+ }
+
+ public void setMessage(boolean message) {
+ isMessage = message;
+ }
+
+ public Date getStartDate() {
+ return startDate;
+ }
+
+ public void setStartDate(Date startDate) {
+ this.startDate = startDate;
+ }
+
+ public String getMessageId() {
+ return messageId;
+ }
+
+ public void setMessageId(String messageId) {
+ this.messageId = messageId;
+ }
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
+ public void setRandomUuid(){
+ this.uuid = UUIDUtil.getNextUUID();
+ }
+}
diff --git a/src/main/java/org/leolo/nrdatad/model/Smart.java b/src/main/java/org/leolo/nrdatad/model/Smart.java
index d098416..592d65c 100644
--- a/src/main/java/org/leolo/nrdatad/model/Smart.java
+++ b/src/main/java/org/leolo/nrdatad/model/Smart.java
@@ -20,6 +20,16 @@ public class Smart {
private SmartStepType stepType;
private String comment;
+ private DataSource dataSource;
+
+ public DataSource getDataSource() {
+ return dataSource;
+ }
+
+ public void setDataSource(DataSource dataSource) {
+ this.dataSource = dataSource;
+ }
+
public int getSmartId() {
return smartId;
}
diff --git a/src/main/java/org/leolo/nrdatad/model/TrainSchedule.java b/src/main/java/org/leolo/nrdatad/model/TrainSchedule.java
index 000d90c..826546f 100644
--- a/src/main/java/org/leolo/nrdatad/model/TrainSchedule.java
+++ b/src/main/java/org/leolo/nrdatad/model/TrainSchedule.java
@@ -24,6 +24,8 @@ public class TrainSchedule {
private Date endDate;
private TrainScheduleSector sector;
+ private String schedeuleType;
+
public String getSUID(){
TUIDDateFormat tuiddf = new TUIDDateFormat();
return trainUid+tuiddf.format(startDate)+tuiddf.format(endDate)+shortTermPlanningIndicator.getCode();
@@ -131,8 +133,23 @@ public class TrainSchedule {
ts.startDate = DateUtil.parseDate(object.optString("schedule_start_date"));
ts.endDate = DateUtil.parseDate(object.optString("schedule_end_date"));
ts.sector = TrainScheduleSector.parseJSON(object.getJSONObject("schedule_segment"));
+ ts.trainStatus = object.optString("train_status");
return ts;
}
+ public int getScheduleVersion() {
+ return scheduleVersion;
+ }
+
+ public void setScheduleVersion(int scheduleVersion) {
+ this.scheduleVersion = scheduleVersion;
+ }
+ public String getSchedeuleType() {
+ return schedeuleType;
+ }
+
+ public void setSchedeuleType(String schedeuleType) {
+ this.schedeuleType = schedeuleType;
+ }
}
diff --git a/src/main/java/org/leolo/nrdatad/util/UUIDUtil.java b/src/main/java/org/leolo/nrdatad/util/UUIDUtil.java
index 995b771..62865a1 100644
--- a/src/main/java/org/leolo/nrdatad/util/UUIDUtil.java
+++ b/src/main/java/org/leolo/nrdatad/util/UUIDUtil.java
@@ -1,11 +1,26 @@
package org.leolo.nrdatad.util;
+import com.fasterxml.uuid.EthernetAddress;
+import com.fasterxml.uuid.Generators;
+import org.leolo.nrdatad.ConfigurationManager;
+
import java.util.UUID;
public class UUIDUtil {
-
+
+ private static EthernetAddress ethernetAddress;
+
public static UUID getNextUUID(){
- return null;
+ return Generators.timeBasedGenerator(getEthernetAddress()).generate();
+ }
+
+ private static synchronized EthernetAddress getEthernetAddress() {
+ if(ethernetAddress==null){
+ //Get it from conf
+ String ethAddr = ConfigurationManager.getInstance().getEthAddress();
+ ethernetAddress = new EthernetAddress(ethAddr);
+ }
+ return ethernetAddress;
}
}
diff --git a/src/test/java/org/leolo/nrdatad/db/test/DatabaseManager.java b/src/test/java/org/leolo/nrdatad/db/test/DatabaseManager.java
index 7d7dc43..59ed495 100644
--- a/src/test/java/org/leolo/nrdatad/db/test/DatabaseManager.java
+++ b/src/test/java/org/leolo/nrdatad/db/test/DatabaseManager.java
@@ -38,6 +38,11 @@ public class DatabaseManager implements org.leolo.nrdatad.db.DatabaseManager {
}
@Override
+ public TrainScheduleDao getTrainScheduleDao() {
+ return null;
+ }
+
+ @Override
public MetadataDao getMetadataDao() {
return null;
}
@@ -47,5 +52,8 @@ public class DatabaseManager implements org.leolo.nrdatad.db.DatabaseManager {
return null;
}
-
+ @Override
+ public DataSourceDao getDataSourceDao() {
+ return null;
+ }
}
diff --git a/src/test/java/org/leolo/nrdatad/model/TrainScheduleTest.java b/src/test/java/org/leolo/nrdatad/model/TrainScheduleTest.java
index c9da65c..0c1a9c4 100644
--- a/src/test/java/org/leolo/nrdatad/model/TrainScheduleTest.java
+++ b/src/test/java/org/leolo/nrdatad/model/TrainScheduleTest.java
@@ -26,6 +26,7 @@ public class TrainScheduleTest {
assertEquals(sdf.parse("20230105"), ts.getEndDate());
assertEquals("0011000", ts.getRunsOn());
assertEquals("",ts.getRunsOnBankHoliday());
+ assertEquals("1", ts.getSchedeuleType());
//Sector Info
TrainScheduleSector tss = ts.getSector();
assertEquals("", tss.getServiceBranding());
@@ -122,6 +123,7 @@ public class TrainScheduleTest {
assertEquals(sdf.parse("20230105"), ts.getEndDate());
assertEquals("0011000", ts.getRunsOn());
assertEquals("",ts.getRunsOnBankHoliday());
+ assertEquals("1", ts.getSchedeuleType());
//Sector Info
TrainScheduleSector tss = ts.getSector();
assertEquals("", tss.getServiceBranding());