7 changed files with 354 additions and 0 deletions
@ -0,0 +1,98 @@
|
||||
package org.leolo.nrdatad.model; |
||||
|
||||
import java.util.Date; |
||||
|
||||
public class TrainSchedule { |
||||
|
||||
private int scheduleVersion = 0; |
||||
private String runsOnBankHoliday; |
||||
private String trainStatus;//TODO: change it into enum
|
||||
private String trainUid; |
||||
private String runsOn; |
||||
private ShortTermPlanningIndicator shortTermPlanningIndicator; |
||||
private String atocCode; |
||||
private String uicCode; |
||||
private String tractionClass; |
||||
private Date startDate; |
||||
private Date endDate; |
||||
|
||||
public String getRunsOnBankHoliday() { |
||||
return runsOnBankHoliday; |
||||
} |
||||
|
||||
public void setRunsOnBankHoliday(String runsOnBankHoliday) { |
||||
this.runsOnBankHoliday = runsOnBankHoliday; |
||||
} |
||||
|
||||
public String getTrainStatus() { |
||||
return trainStatus; |
||||
} |
||||
|
||||
public void setTrainStatus(String trainStatus) { |
||||
this.trainStatus = trainStatus; |
||||
} |
||||
|
||||
public String getTrainUid() { |
||||
return trainUid; |
||||
} |
||||
|
||||
public void setTrainUid(String trainUid) { |
||||
this.trainUid = trainUid; |
||||
} |
||||
|
||||
public String getRunsOn() { |
||||
return runsOn; |
||||
} |
||||
|
||||
public void setRunsOn(String runsOn) { |
||||
this.runsOn = runsOn; |
||||
} |
||||
|
||||
public ShortTermPlanningIndicator getShortTermPlanningIndicator() { |
||||
return shortTermPlanningIndicator; |
||||
} |
||||
|
||||
public void setShortTermPlanningIndicator(ShortTermPlanningIndicator shortTermPlanningIndicator) { |
||||
this.shortTermPlanningIndicator = shortTermPlanningIndicator; |
||||
} |
||||
|
||||
public String getAtocCode() { |
||||
return atocCode; |
||||
} |
||||
|
||||
public void setAtocCode(String atocCode) { |
||||
this.atocCode = atocCode; |
||||
} |
||||
|
||||
public String getUicCode() { |
||||
return uicCode; |
||||
} |
||||
|
||||
public void setUicCode(String uicCode) { |
||||
this.uicCode = uicCode; |
||||
} |
||||
|
||||
public String getTractionClass() { |
||||
return tractionClass; |
||||
} |
||||
|
||||
public void setTractionClass(String tractionClass) { |
||||
this.tractionClass = tractionClass; |
||||
} |
||||
|
||||
public Date getStartDate() { |
||||
return startDate; |
||||
} |
||||
|
||||
public void setStartDate(Date startDate) { |
||||
this.startDate = startDate; |
||||
} |
||||
|
||||
public Date getEndDate() { |
||||
return endDate; |
||||
} |
||||
|
||||
public void setEndDate(Date endDate) { |
||||
this.endDate = endDate; |
||||
} |
||||
} |
||||
@ -0,0 +1,58 @@
|
||||
package org.leolo.nrdatad.util; |
||||
|
||||
import org.apache.logging.log4j.LogManager; |
||||
import org.apache.logging.log4j.Logger; |
||||
|
||||
import java.util.Date; |
||||
|
||||
public class TimeUtil { |
||||
public static final long ONE_SECOND = 1_000; |
||||
public static final long ONE_MINUTE = 60_000; |
||||
public static final long ONE_HOUR = 3_600_000; |
||||
public static final long ONE_DAY = 86_400_000; |
||||
|
||||
private static Logger log = LogManager.getLogger(); |
||||
|
||||
public static long extractTime(Date date){ |
||||
return date.getTime()%ONE_DAY; |
||||
} |
||||
|
||||
public static long parseTime(String time){ |
||||
return parseTime(time, 0); |
||||
} |
||||
|
||||
|
||||
public static long parseTime(String time, int dayOffSet){ |
||||
time = time.strip().toUpperCase(); |
||||
long result; |
||||
//This given string can be 1, 2, 4 or 5 characters long
|
||||
int strLen = time.length(); |
||||
if (strLen == 0 ) { |
||||
result = 0; |
||||
} else if (strLen==1||strLen==2) { |
||||
if("H".equals(time)) { |
||||
result = 30 * ONE_SECOND; |
||||
} else if(time.endsWith("H")){ |
||||
result = Integer.parseInt(time.substring(0, 1))*ONE_MINUTE + 30*ONE_SECOND; |
||||
}else{ |
||||
result = Integer.parseInt(time)*ONE_MINUTE; |
||||
} |
||||
} else if (strLen==4||strLen==5) { |
||||
if(time.endsWith("H")){ |
||||
result = Integer.parseInt(time.substring(0, 2))*ONE_HOUR + |
||||
Integer.parseInt(time.substring(2, 4))*ONE_MINUTE + |
||||
30*ONE_SECOND; |
||||
}else{ |
||||
result = Integer.parseInt(time.substring(0, 2))*ONE_HOUR + |
||||
Integer.parseInt(time.substring(2, 4))*ONE_MINUTE; |
||||
} |
||||
} else { |
||||
log.atWarn().log("String \"{}\" is not a legal value.", time); |
||||
throw new RuntimeException(time+" is Illegal value for time"); |
||||
} |
||||
|
||||
result += dayOffSet*ONE_DAY; |
||||
return result; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,75 @@
|
||||
package org.leolo.nrdatad.util; |
||||
|
||||
import org.junit.Test; |
||||
|
||||
import static org.junit.Assert.*; |
||||
|
||||
public class TimeUtilTest { |
||||
|
||||
@Test public void testAllowance(){ |
||||
assertEquals(60000, TimeUtil.parseTime("1")); |
||||
assertEquals(0, TimeUtil.parseTime("")); |
||||
assertEquals(0, TimeUtil.parseTime(" ")); |
||||
assertEquals(0, TimeUtil.parseTime(" ")); |
||||
assertEquals(60000, TimeUtil.parseTime("1 ")); |
||||
assertEquals(90000, TimeUtil.parseTime("1H")); |
||||
assertEquals(30000, TimeUtil.parseTime("H")); |
||||
assertEquals(30000, TimeUtil.parseTime("H ")); |
||||
assertEquals(30000, TimeUtil.parseTime(" H")); |
||||
assertEquals(600000, TimeUtil.parseTime("10")); |
||||
assertEquals(900000, TimeUtil.parseTime("15")); |
||||
assertEquals(1200000, TimeUtil.parseTime("20")); |
||||
} |
||||
|
||||
@Test public void testWTTTime(){ |
||||
assertEquals(3_660_000, TimeUtil.parseTime("0101 ")); |
||||
assertEquals(3_690_000, TimeUtil.parseTime("0101H")); |
||||
assertEquals(36_000_000, TimeUtil.parseTime("1000 ")); |
||||
assertEquals(37_800_000, TimeUtil.parseTime("1030 ")); |
||||
assertEquals(36_030_000, TimeUtil.parseTime("1000H")); |
||||
assertEquals(37_830_000, TimeUtil.parseTime("1030H")); |
||||
assertEquals(72_000_000, TimeUtil.parseTime("2000 ")); |
||||
assertEquals(73_800_000, TimeUtil.parseTime("2030 ")); |
||||
assertEquals(72_030_000, TimeUtil.parseTime("2000H")); |
||||
assertEquals(73_830_000, TimeUtil.parseTime("2030H")); |
||||
assertEquals(3_660_000, TimeUtil.parseTime("0101 ", 0)); |
||||
assertEquals(3_690_000, TimeUtil.parseTime("0101H", 0)); |
||||
assertEquals(36_000_000, TimeUtil.parseTime("1000 ", 0)); |
||||
assertEquals(37_800_000, TimeUtil.parseTime("1030 ", 0)); |
||||
assertEquals(36_030_000, TimeUtil.parseTime("1000H", 0)); |
||||
assertEquals(37_830_000, TimeUtil.parseTime("1030H", 0)); |
||||
assertEquals(72_000_000, TimeUtil.parseTime("2000 ", 0)); |
||||
assertEquals(73_800_000, TimeUtil.parseTime("2030 ", 0)); |
||||
assertEquals(72_030_000, TimeUtil.parseTime("2000H", 0)); |
||||
assertEquals(73_830_000, TimeUtil.parseTime("2030H", 0)); |
||||
// 86_400_000
|
||||
assertEquals( 90_060_000, TimeUtil.parseTime("0101 ", 1)); |
||||
assertEquals( 90_090_000, TimeUtil.parseTime("0101H", 1)); |
||||
assertEquals(122_400_000, TimeUtil.parseTime("1000 ", 1)); |
||||
assertEquals(124_200_000, TimeUtil.parseTime("1030 ", 1)); |
||||
assertEquals(122_430_000, TimeUtil.parseTime("1000H", 1)); |
||||
assertEquals(124_230_000, TimeUtil.parseTime("1030H", 1)); |
||||
assertEquals(158_400_000, TimeUtil.parseTime("2000 ", 1)); |
||||
assertEquals(160_200_000, TimeUtil.parseTime("2030 ", 1)); |
||||
assertEquals(158_430_000, TimeUtil.parseTime("2000H", 1)); |
||||
assertEquals(160_230_000, TimeUtil.parseTime("2030H", 1)); |
||||
} |
||||
|
||||
@Test public void testGBTTTime(){ |
||||
assertEquals(3_660_000, TimeUtil.parseTime("0101")); |
||||
assertEquals(36_000_000, TimeUtil.parseTime("1000")); |
||||
assertEquals(37_800_000, TimeUtil.parseTime("1030")); |
||||
assertEquals(72_000_000, TimeUtil.parseTime("2000")); |
||||
assertEquals(73_800_000, TimeUtil.parseTime("2030")); |
||||
assertEquals(3_660_000, TimeUtil.parseTime("0101", 0)); |
||||
assertEquals(36_000_000, TimeUtil.parseTime("1000", 0)); |
||||
assertEquals(37_800_000, TimeUtil.parseTime("1030", 0)); |
||||
assertEquals(72_000_000, TimeUtil.parseTime("2000", 0)); |
||||
assertEquals(73_800_000, TimeUtil.parseTime("2030", 0)); |
||||
assertEquals( 90_060_000, TimeUtil.parseTime("0101", 1)); |
||||
assertEquals(122_400_000, TimeUtil.parseTime("1000", 1)); |
||||
assertEquals(124_200_000, TimeUtil.parseTime("1030", 1)); |
||||
assertEquals(158_400_000, TimeUtil.parseTime("2000", 1)); |
||||
assertEquals(160_200_000, TimeUtil.parseTime("2030", 1)); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue