package sql;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import etc.Constants;
public class InfoPackage {
private static String sTime, eTime, tTime;
private static int [] _actions;
public InfoPackage () {
_actions = new int [500];
for(int i=0; i<500; i++) {
_actions[i] = 0;
}
}
private static long parseInterval(final String s) {
final Pattern p = Pattern.compile("^(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d{3})$");
final Matcher m = p.matcher(s);
if (m.matches()) {
final long hr = Long.parseLong(m.group(1)) * TimeUnit.HOURS.toMillis(1);
final long min = Long.parseLong(m.group(2)) * TimeUnit.MINUTES.toMillis(1);
final long sec = Long.parseLong(m.group(3)) * TimeUnit.SECONDS.toMillis(1);
final long ms = Long.parseLong(m.group(4));
return hr + min + sec + ms;
} else {
throw new IllegalArgumentException(s + " is not a supported interval format!");
}
}
private static String formatInterval(final long l) {
final long hr = TimeUnit.MILLISECONDS.toHours(l);
final long min = TimeUnit.MILLISECONDS.toMinutes(l - TimeUnit.HOURS.toMillis(hr));
final long sec = TimeUnit.MILLISECONDS.toSeconds(l - TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min));
final long ms = TimeUnit.MILLISECONDS.toMillis(l - TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min) - TimeUnit.SECONDS.toMillis(sec));
return String.format("%02d:%02d:%02d.%03d", hr, min, sec, ms);
}
public static void getTotalTime(final String s1, final String s2) {
final long i1 = parseInterval(s1);
final long i2 = parseInterval(s2);
tTime = formatInterval(i2 - i1);
System.out.println(tTime);
}
public void setTimes(String s, String e) {
sTime = s;
eTime = e;
}
public void setActions(int [] a) {//sends in action array. a[] is the actions[]
for(int i=0; i<500; i++) {
if(a[i] != Constants.DIR_LEFT && a[i] != Constants.DIR_RIGHT && a[i] != Constants.DIR_UP && a[i] != Constants.DIR_DOWN && a[i] != 0) {
System.out.printf("ERROR (IP): Unexpected action value!\n");
} else {
_actions[i] = a[i];
}
}
}
public int [] getActions() {
return _actions;
}
public String getTime() {
getTotalTime(sTime, eTime);
return tTime;
}
}