package ch.elexis.connect.afinion.packages;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import ch.rgw.tools.TimeTool;
public class HeaderPart extends AbstractPart {
private int recordNum;
private int runNr;
private String lotNr;
private String id;
private Calendar cal;
public HeaderPart(final byte[] bytes){
parse(bytes);
}
public static Calendar getUTCBaseCalendar(){
Calendar cal0_utc = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
cal0_utc.set(1970, 0, 1, 0, 0, 0);
cal0_utc.set(Calendar.MILLISECOND, 0);
return cal0_utc;
}
public void parse(final byte[] bytes){
recordNum = getInteger(bytes, 0);
runNr = getInteger(bytes, 4);
lotNr = getString(bytes, 25, 17);
id = getString(bytes, 42, 17);
int dateSeconds = getInteger(bytes, 60); // Seconds since 1.1.1970 00:00 UTC
cal = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
cal.set(1970, 0, 1, 0, 0, 0);
cal.set(Calendar.SECOND, dateSeconds);
cal.getTime();
}
@Override
public int length(){
return 68;
}
public int getRecordNum(){
return recordNum;
}
public String getLotNr(){
return lotNr;
}
public int getRunNr(){
return runNr;
}
public String getId(){
return id;
}
public Calendar getCalendar(){
return cal;
}
public TimeTool getDate(){
return new TimeTool(getCalendar().getTimeInMillis());
}
private static String toTimeStampString(Calendar cal){
int date = cal.get(Calendar.DATE);
int month = cal.get(Calendar.MONTH) + 1;
int year = cal.get(Calendar.YEAR);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minutes = cal.get(Calendar.MINUTE);
int seconds = cal.get(Calendar.SECOND);
String dateStr = (date < 10 ? "0" : "") + Integer.valueOf(date).toString();
String monthStr = (month < 10 ? "0" : "") + Integer.valueOf(month).toString();
String yearStr = Integer.valueOf(year).toString();
String hourStr = (hour < 10 ? "0" : "") + Integer.valueOf(hour).toString();
String minuteStr = (minutes < 10 ? "0" : "") + Integer.valueOf(minutes).toString();
String secondStr = (seconds < 10 ? "0" : "") + Integer.valueOf(seconds).toString();
return dateStr + "." + monthStr + "." + yearStr + " " + hourStr + ":" + minuteStr + ":"
+ secondStr + " (" + cal.getTimeZone().getID() + ")";
}
public String toString(){
String str = "";
str += "H-Record " + recordNum + ";";
str += " " + toTimeStampString(getCalendar()) + ";";
str += " Run#:" + runNr + ";";
str += " ID:" + id + ";";
str += " Lot#:" + lotNr + ";";
return str;
}
}