All Downloads are FREE. Search and download functionalities are using the official Maven repository.

templates.FixSpec Maven / Gradle / Ivy

There is a newer version: 1.6
Show newest version
package ${packageName};

import org.fix4j.test.fixmodel.FixMessage;
import org.fix4j.test.fixspec.BaseTag;
import org.fix4j.test.fixspec.FieldAndGroupTypes;
import org.fix4j.test.fixspec.FieldType;
import org.fix4j.test.fixspec.FixSpecification;
import org.fix4j.test.fixspec.GroupKey;
import org.fix4j.test.fixspec.GroupType;
import org.fix4j.test.fixspec.MsgType;
import org.fix4j.test.fixspec.Tag;
import org.fix4j.test.expression.MessageExpressionParser;

public class FixSpec implements FixSpecification {
    public static final FixSpec INSTANCE = new FixSpec();

    private FixSpec() {}

    @Override
    public FieldType getFieldTypeByTag(final Tag tag) {
        return FieldTypes.getFieldTypeByTag(tag.getValue());
    }

    @Override
    public FieldType getFieldTypeByTag(final int tag) {
        return FieldTypes.getFieldTypeByTag(tag);
    }

    @Override
    public FieldAndGroupTypes getStandardHeaderType() {
        return new StandardHeader();
    }

    @Override
    public FieldAndGroupTypes getStandardTrailerType() {
        return new StandardTrailer();
    }

    @Override
    public int getMsgTypeTagNumber() {
        return MSG_TYPE_TAG_NUMBER;
    }

    @Override
    public Tag getMsgTypeTag() {
        return FieldTypes.MsgType.getTag();
    }

    @Override
    public MsgType getMsgTypeByTag(final Tag tag) {
        return MsgTypes.getMsgTypeByTag(tag);
    }

    @Override
    public MsgType getMsgTypeByTag(final String tagValue) {
        return MsgTypes.getMsgTypeByTag(new BaseTag(tagValue));
    }

    @Override
    public GroupType getGroupTypeByKey(final GroupKey groupKey) {
        GroupType groupTypeByKey = MsgTypes.getGroupTypeByKey(groupKey);
        if(groupTypeByKey != null){
            return groupTypeByKey;
        }

        groupTypeByKey = getStandardHeaderType().getGroupType(groupKey.getNoOfFieldType().getTag().getValue());
        if(groupTypeByKey != null){
            return groupTypeByKey;
        }

        groupTypeByKey = getStandardTrailerType().getGroupType(groupKey.getNoOfFieldType().getTag().getValue());
        if(groupTypeByKey != null){
            return groupTypeByKey;
        }

        return null;
    }

    @Override
    public FieldType getFieldTypeByName(final String fieldName) {
        try {
            return FieldTypes.getFieldTypeByName(fieldName);
        } catch (IllegalArgumentException e) {
            throw new IllegalArgumentException("Unknown field type: '" + fieldName + "'. If you wish to use a tag not in this specification, then please create a custom field using FieldType.Factory.forCustomTag(int).");
        }
    }

    @Override
    public FieldType getMsgTypeFieldType() {
        return FieldTypes.MsgType;
    }

    @Override
    public FixMessage parse(final String expression) {
        return (new MessageExpressionParser(this)).parse(expression).asMessage(this);
    }

    @Override
    public MsgType getMsgTypeByName(final String msgTypeName) {
        return MsgTypes.getMsgTypeByName(msgTypeName);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy