package org.marketcetera.photon.views.fixmessagedetail.dialogs.executionreport.data; import java.util.Date; import org.joda.time.DateTime; import org.marketcetera.photon.Messages; import org.marketcetera.trade.ExecutionReport; import quickfix.Message; import quickfix.field.SendingTime; /** * Sending time execution report field * * @author milan * */ public class SendingTimeField extends ExecutionReportField { @Override public String getFieldName() { return Messages.EXECUTION_REPORT_FIELD_SENDING_TIME.getText(); } @Override public String[] getValues() { return NULL_VALUE; } @Override public boolean validateValue() { if(!super.validateValue()) { return false; } try { utc1.parseDateTime(fValue); return true; } catch (IllegalArgumentException iae1) { try { utc2.parseDateTime(fValue); return true; }catch (IllegalArgumentException iae2) {} } return false; } @Override public void insertField(Message message) { if(fValue != null && fValue != EMPTY_STRING) { try { message.getHeader().setField(new SendingTime(new Date(utc1.parseDateTime(fValue).getMillis()))); } catch (IllegalArgumentException e) { message.getHeader().setField(new SendingTime(new Date(utc2.parseDateTime(fValue).getMillis()))); } } } @Override public String getValidateMessage() { return Messages.ADD_EXECUTION_REPORT_DATE_FORMAT_ERROR.getText(allowedFormats); } @Override public void parseFromReport(ExecutionReport executionReport) { if(executionReport.getSendingTime() != null) { DateTime dt = new DateTime(executionReport.getSendingTime()); fValue = utc2.print(dt); } else { fValue = EMPTY_STRING; } } @Override public int getFieldTag() { return SendingTime.FIELD; } }