Browse Source

Various changes

feature-schedule
LO Kam Tao Leo 3 years ago
parent
commit
4bdbf01bbb
  1. 5
      pom.xml
  2. 1
      src/main/java/org/leolo/nrdatad/App.java
  3. 10
      src/main/java/org/leolo/nrdatad/Constants.java
  4. 8
      src/main/java/org/leolo/nrdatad/cron/ReferenceDataJob.java
  5. 46
      src/main/java/org/leolo/nrdatad/cron/ScheduleImportJob.java
  6. 50
      src/main/java/org/leolo/nrdatad/db/DataSourceDao.java
  7. 4
      src/main/java/org/leolo/nrdatad/db/DatabaseManager.java
  8. 24
      src/main/java/org/leolo/nrdatad/db/TrainScheduleDao.java
  9. 28
      src/main/java/org/leolo/nrdatad/db/mariadb/CorpusDaoImpl.java
  10. 36
      src/main/java/org/leolo/nrdatad/db/mariadb/DataSourceDaoImpl.java
  11. 10
      src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java
  12. 10
      src/main/java/org/leolo/nrdatad/db/mariadb/SmartDaoImpl.java
  13. 40
      src/main/java/org/leolo/nrdatad/db/mariadb/TrainScheduleDaoImpl.java
  14. 10
      src/main/java/org/leolo/nrdatad/model/Corpus.java
  15. 98
      src/main/java/org/leolo/nrdatad/model/DataSource.java
  16. 10
      src/main/java/org/leolo/nrdatad/model/Smart.java
  17. 17
      src/main/java/org/leolo/nrdatad/model/TrainSchedule.java
  18. 19
      src/main/java/org/leolo/nrdatad/util/UUIDUtil.java
  19. 10
      src/test/java/org/leolo/nrdatad/db/test/DatabaseManager.java
  20. 2
      src/test/java/org/leolo/nrdatad/model/TrainScheduleTest.java

5
pom.xml

@ -82,6 +82,11 @@
<artifactId>java-uuid-generator</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>jug</groupId>
<artifactId>jug</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>

1
src/main/java/org/leolo/nrdatad/App.java

@ -95,7 +95,6 @@ public class App {
return;
}
loadCronJob();
new Thread(()->{testRefData();}).start();
while(true);
}

10
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";
}
}

8
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<Smart> 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<Corpus> corpusList = new ArrayList<>();
DataSource ds = conf.getDatabaseManager().getDataSourceDao().generateAndInsertUUID(Constants.DataSourceNames.SOURCE_NETWORK_RAIL,"CORPUS", false);
for(int i=0;i<rootArray.length();i++){
JSONObject obj = rootArray.getJSONObject(i);
corpusList.add(Corpus.parseJSON(obj));
Corpus corpus = Corpus.parseJSON(obj);
corpus.setDataSource(ds);
corpusList.add(corpus);
}
log.atInfo().log("Going to replace the data");
try {

46
src/main/java/org/leolo/nrdatad/cron/ScheduleImportJob.java

@ -7,6 +7,7 @@ import org.leolo.nrdatad.ConfigurationManager;
import org.leolo.nrdatad.Constants;
import org.leolo.nrdatad.model.ScheduleAssociation;
import org.leolo.nrdatad.model.Tiploc;
import org.leolo.nrdatad.model.TrainSchedule;
import org.leolo.nrdatad.util.HttpUtil;
import org.leolo.nrdatad.util.TUIDDateFormat;
import org.quartz.Job;
@ -224,4 +225,49 @@ public class ScheduleImportJob implements Job {
log.atWarn().withThrowable(e).log("Unable to remove temp file {}", file);
}
}
private void processSchedule(String file){
log.atDebug().log("Processing {}",file);
try(
BufferedReader br = new BufferedReader(
new InputStreamReader(
new GZIPInputStream(
new FileInputStream(
new File(baseTempDir, file)
)
)
)
)
){
int count = 0;
ArrayList<TrainSchedule> 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);
}
}
}

50
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();
}
}

4
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();
}

24
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<TrainSchedule> schedules) throws SQLException{
for(TrainSchedule ts: schedules){
insert(ts);
}
}
public abstract boolean hasSUID(String suid) throws SQLException;
}

28
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();
}
}

36
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();
}
}
}

10
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);
}
}

10
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();

40
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;
}
}

10
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;
}

98
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();
}
}

10
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;
}

17
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;
}
}

19
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;
}
}

10
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;
}
}

2
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());

Loading…
Cancel
Save