package org.marketcetera.photon.views.fixmessagedetail.dialogs.executionreport.data; import org.marketcetera.photon.Messages; import org.marketcetera.photon.PhotonPlugin; import org.marketcetera.quickfix.FIXDataDictionary; import org.marketcetera.trade.ExecutionReport; import quickfix.Message; import quickfix.StringField; /** * Custom execution report field. Both field name * and value are user-defined. * * @author milan * */ public class CustomFixField extends ExecutionReportField { /** Custom field tag */ private final int fFieldTag; public CustomFixField(int fieldTag) { fFieldTag = fieldTag; } @Override public String getFieldName() { FIXDataDictionary fixDictionary = PhotonPlugin.getDefault() .getFIXDataDictionary(); String fieldName = fixDictionary.getHumanFieldName(fFieldTag); if(fieldName != null) return fieldName; return String.valueOf(fFieldTag); } @Override public String[] getValues() { return NULL_VALUE; } @Override public void insertField(Message message) { if(fValue != null && fValue != EMPTY_STRING) { message.setField(new StringField(getFieldTag(), fValue)); } } @Override public boolean validateValue() { if(!super.validateValue()) { return false; } return getFieldTag() > 0; } @Override public String getValidateMessage() { if(!super.validateValue()) { return super.getValidateMessage(); } else { return Messages.ADD_EXECUTION_REPORT_NUMBER_FORMAT_ERROR_CUSTOM.getText(); } } @Override public void parseFromReport(ExecutionReport executionReport) { } @Override public int getFieldTag() { return fFieldTag; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof CustomFixField)) { return false; } CustomFixField other = (CustomFixField) obj; if (fFieldTag != other.fFieldTag) { return false; } return true; } }