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

net.openhft.fix.include.util.FixConfig Maven / Gradle / Ivy

There is a newer version: 1.0.2-alpha
Show newest version
/*
 * Copyright 2013 peter.lawrey Lawrey
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package net.openhft.fix.include.util;

import net.openhft.compiler.CachedCompiler;
import net.openhft.fix.compiler.FieldLookup;
import net.openhft.fix.include.v42.*;
import net.openhft.lang.collection.HugeArray;
import net.openhft.lang.io.ByteBufferBytes;
import net.openhft.lang.io.Bytes;
import net.openhft.lang.model.Byteable;
import net.openhft.lang.model.DataValueGenerator;

import java.nio.ByteBuffer;

/**
 * Default configuration class for a Fix 4.2 message. Uses static methods to initialize FIX 4.2
 * header and fields. The main purpose of this class is to initialize standard fix 4.2 fields
 * to allocate memory before usage to avoid dynamic allocation of ByteBufferBytes during runtime
 * for FIX fields data.
 */
public class FixConfig implements Cloneable {

    private int fixVersionMajor;
    private int fixVersionMinor;
    private int fixVersionServicePack;

    private int currentFixVersion;
    private int fix4_2_0_mask = 0x01A4;
    private int fix5_0_0_mask = 0x01F4;
    private final DataValueGenerator dvg = new DataValueGenerator();
    private Trailer trailer;
    private Header header;
    private Messages messages;
    private Components components;
    private Fields fields;


    public FixConfig clone() {
        try {
            return (FixConfig) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new AssertionError(e);
        }
    }

    public static FixConfig SERVER_DEFAULT_4_2 = new FixConfig()
            .setFixVersionMajor(4)
            .setFixVersionMinor(2)
            .setFixVersionServicePack(0)
                                                /*.createServerFixHeader()
												.createServerFixMessages()
												.createServerFixTrailer()
												.createServerFixComponents()*/
            .createServerFixFields();

    /**
     * Static factory method to initializes FIX message header to default Fix 4.2 version
     *
     * @return -FixConfig
     */
    public FixConfig createServerFixHeader() {
        if ((currentFixVersion & fix4_2_0_mask) != 0) {
            try {
                load42DefaultHeader();
            } catch (Exception e) {
                throw new AssertionError(e);
            }
        }
        return this;
    }

    private void load42DefaultHeader() throws Exception {
        //this.header = (Header) dvg.nativeInstance(FixMessageType.class);

        String actual = new DataValueGenerator().generateNativeObject(FixMessageType.class);
        CachedCompiler cc = new CachedCompiler(null, null);
        Class aClass = cc.loadFromJava(FixMessageType.class.getName() + "$$Native", actual);

        @SuppressWarnings("unchecked")
        FixMessageType fmt = (FixMessageType) aClass.asSubclass(FixMessageType.class).newInstance();
        Bytes bytes = new ByteBufferBytes(ByteBuffer.allocate(1024 * 1024));
        ((Byteable) fmt).bytes(bytes, 0L);

        this.header = (Header) fmt;
        //this.header = new Header();
        HugeArray array = this.header.setFieldSize(27).getField();
        Field field = null;
        for (short i = 0; i < FixConstants.headerFieldName.length; i++) {
            field = array.get(i);
            field.setName(FixConstants.headerFieldName[i]);
            if (i < 5) {
                field.setRequired("Y");
            } else {
                field.setRequired("N");
            }
        }
    }

    /**
     * Static factory method to initializes all the standard FIX  of FIX 4.2 version
     *
     * @return -FixConfig
     */
    public FixConfig createServerFixMessages() {
        if ((currentFixVersion & fix4_2_0_mask) != 0) {
            load42DefaultMessages();
        }
        return this;
    }

    private void load42DefaultMessages() {
        //this.messages = dvg.nativeInstance(Messages.class);
        this.messages = new Messages();
        //default is 46 messages
        HugeArray array = this.messages.setMessagesSize(46).getMessage();
        Message message = null;

        for (short i = 0; i < FixConstants.messsagesMsgName.length; i++) {
            message = array.get(i);
            message.setName(FixConstants.messsagesMsgName[i]);
            message.setMsgtype(FixConstants.messagesMsgType[i]);
            populateMessage(i, message);
        }
    }

    private void populateMessage(int msgNo, Message message) {
        HugeArray arrayField = null;
        HugeArray arrayGroup = null;
        HugeArray arrayInnerGroup = null;
        int[] fieldYesArray = null;
        String[] fieldArray = null;
        int[] groupYesArray = null;
        String[] groupArray = null;
        int[] groupFieldSize = null;
        int[][] groupFieldYesArray = null;
        String[] groupField = null;
        int[] innerGroupFieldSize = null;
        String[] innerGroupField = null;
        String[] innerGroup = null;

        switch (msgNo) {
            case 0:
                message.setMsgcat(FixConstants.messagesMsgCat[0]);
                arrayField = null;
                arrayField = message.setFieldSize(1).getField();
                arrayField.get(0).setName(FixConstants.MESSAGES_TEST_REQID_FN);
                arrayField.get(0).setRequired("N");
            case 1:
                message.setMsgcat(FixConstants.messagesMsgCat[0]);
                arrayField = null;
                arrayField = message.setFieldSize(1).getField();
                arrayField.get(0).setName(FixConstants.MESSAGES_TEST_REQID_FN);
                arrayField.get(0).setRequired("Y");
            case 2:
                message.setMsgcat(FixConstants.messagesMsgCat[0]);
                arrayField = null;
                arrayField = message.setFieldSize(FixConstants.messagesResendReq.length).getField();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messagesResendReq[i]);
                    arrayField.get(i).setRequired("Y");
                }
            case 3:
                message.setMsgcat(FixConstants.messagesMsgCat[0]);
                arrayField = null;
                arrayField = message.setFieldSize(FixConstants.messagesReject.length).getField();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messagesReject[i]);
                    if (i == 0) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
            case 4:
                message.setMsgcat(FixConstants.messagesMsgCat[0]);
                arrayField = null;
                arrayField = message.setFieldSize(FixConstants.messagesSeqReset.length).getField();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messagesSeqReset[i]);
                    if (i == 0) {
                        arrayField.get(i).setRequired("N");
                    } else {
                        arrayField.get(i).setRequired("Y");
                    }
                }
            case 5:
                message.setMsgcat(FixConstants.messagesMsgCat[0]);
                arrayField = null;
                arrayField = message.setFieldSize(FixConstants.messagesLogout.length).getField();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messagesLogout[i]);
                    arrayField.get(i).setRequired("N");
                }
            case 6:
                message.setMsgcat(FixConstants.messagesMsgCat[1]);
                arrayField = null;
                arrayGroup = null;
                //default 36
                arrayField = message.setFieldSize(FixConstants.messagesIOI.length).getField();
                arrayGroup = message.setGroupSize(FixConstants.messagesIOIGroup.length).getGroup();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messagesIOI[i]);
                    if (i == 0 || i == 1 || i == 3 || i == 22 || i == 23) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
                for (short i = 0; i < arrayGroup.length(); i++) {
                    arrayGroup.get(i).setName(FixConstants.messagesIOIGroup[i]);
                    arrayGroup.get(i).setRequired("N");
                    arrayField = null;
                    if (i == 0) {
                        arrayField = arrayGroup.get(i).setFieldSize(1).getField();
                        arrayField.get(0).setName(FixConstants.messagesIOIGroupFields[0]);
                        arrayField.get(0).setRequired("N");
                    } else {
                        arrayField = arrayGroup.get(i).setFieldSize(
                                FixConstants.messagesIOIGroupFields.length).getField();
                        for (short j = 0; j < arrayField.length(); j++) {
                            arrayField.get(0).setName(FixConstants.messagesIOIGroupFields[j + 1]);
                            arrayField.get(0).setRequired("N");
                        }
                    }
                }
            case 7:
                message.setMsgcat(FixConstants.messagesMsgCat[1]);
                arrayField = null;
                arrayField = message.setFieldSize(FixConstants.messagesAdv.length).getField();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messagesAdv[i]);
                    if (i == 0 || i == 1 || i == 3 || i == 22 || i == 23) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
            case 8:
                message.setMsgcat(FixConstants.messagesMsgCat[1]);
                arrayField = null;
                arrayGroup = null;
                //default 36
                arrayField = message.setFieldSize(FixConstants.messageExecReport.length).getField();
                arrayGroup = message.setGroupSize(1).getGroup();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messageExecReport[i]);
                    if (i == 0 || i == 1 || i == 3 || i == 22 || i == 23) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
                arrayGroup.get(0).setName(FixConstants.messageExecReportGrp);
                arrayGroup.get(0).setRequired("N");
                arrayField = null;
                arrayField = arrayGroup.get(0).setFieldSize(
                        FixConstants.messageExecReportGrpFlds.length).getField();
                for (short j = 0; j < arrayField.length(); j++) {
                    arrayField.get(0).setName(FixConstants.messageExecReportGrpFlds[j]);
                    arrayField.get(0).setRequired("N");
                }
            case 9:
                message.setMsgcat(FixConstants.messagesMsgCat[1]);
                arrayField = null;
                arrayField = message.setFieldSize(
                        FixConstants.messageOrderCancelRej.length).getField();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messageOrderCancelRej[i]);
                    if (i == 0 || i == 2 || i == 3 || i == 4 || i == 10) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
            case 10://logon
                message.setMsgcat(FixConstants.messagesMsgCat[0]);
                arrayField = null;
                arrayGroup = null;
                //default 36
                arrayField = message.setFieldSize(FixConstants.messageLogon.length).getField();
                arrayGroup = message.setGroupSize(1).getGroup();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messageLogon[i]);
                    if (i == 0 || i == 1) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
                arrayGroup.get(0).setName(FixConstants.messageLogonGrp);
                arrayGroup.get(0).setRequired("N");
                arrayField = null;
                arrayField = arrayGroup.get(0).setFieldSize(
                        FixConstants.messageLogonGrpFlds.length).getField();
                for (short j = 0; j < arrayField.length(); j++) {
                    arrayField.get(0).setName(FixConstants.messageLogonGrpFlds[j]);
                    arrayField.get(0).setRequired("N");
                }
            case 11://News
                message.setMsgcat(FixConstants.messagesMsgCat[1]);
                arrayField = null;
                arrayGroup = null;
                arrayField = message.setFieldSize(FixConstants.messageNews.length).getField();
                arrayGroup = message.setGroupSize(FixConstants.messageNewsGrp.length).getGroup();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messageNews[i]);
                    if (i == 0) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
                for (short i = 0; i < arrayGroup.length(); i++) {
                    arrayGroup.get(i).setName(FixConstants.messageNewsGrp[i]);
                    arrayField = null;
                    if (i == 0) {
                        arrayGroup.get(i).setRequired("N");
                        arrayField = arrayGroup.get(i).setFieldSize(2).getField();
                        for (short j = 0; j < arrayField.length(); j++) {
                            arrayField.get(j).setName(FixConstants.messageNewsGrpFlds[j]);
                            arrayField.get(j).setRequired("N");
                        }
                    } else if (i == 1) {
                        arrayGroup.get(i).setRequired("N");
                        arrayField = arrayGroup.get(i).setFieldSize(19).getField();
                        for (short j = 0; j < arrayField.length(); j++) {
                            arrayField.get(j).setName(FixConstants.messageNewsGrpFlds[j + 2]);
                            arrayField.get(j).setRequired("N");
                        }
                    } else if (i == 2) {
                        arrayGroup.get(i).setRequired("Y");
                        arrayField = arrayGroup.get(i).setFieldSize(3).getField();
                        for (short j = 0; j < arrayField.length(); j++) {
                            arrayField.get(j).setName(FixConstants.messageNewsGrpFlds[j + 21]);
                            if (j == 0) {
                                arrayField.get(j).setRequired("Y");//LinesOfText
                            } else {
                                arrayField.get(j).setRequired("N");
                            }
                        }
                    }
                }
            case 12://Email
                message.setMsgcat(FixConstants.messagesMsgCat[1]);
                arrayField = null;
                arrayGroup = null;
                arrayField = message.setFieldSize(FixConstants.messagesEmail.length).getField();
                arrayGroup = message.setGroupSize(FixConstants.messagesEmaiGrp.length).getGroup();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messagesEmail[i]);
                    if (i == 0 || i == 1 || i == 3) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
                for (short i = 0; i < arrayGroup.length(); i++) {
                    arrayGroup.get(i).setName(FixConstants.messagesEmaiGrp[i]);
                    arrayField = null;
                    if (i == 0) {
                        arrayGroup.get(i).setRequired("N");
                        arrayField = arrayGroup.get(i).setFieldSize(2).getField();
                        for (short j = 0; j < arrayField.length(); j++) {
                            arrayField.get(j).setName(FixConstants.messagesEmaiGrpFlds[j]);
                            arrayField.get(j).setRequired("N");
                        }
                    } else if (i == 1) {
                        arrayGroup.get(i).setRequired("N");
                        arrayField = arrayGroup.get(i).setFieldSize(19).getField();
                        for (short j = 0; j < arrayField.length(); j++) {
                            arrayField.get(j).setName(FixConstants.messagesEmaiGrpFlds[j + 2]);
                            arrayField.get(j).setRequired("N");
                        }
                    } else if (i == 2) {
                        arrayGroup.get(i).setRequired("Y");
                        arrayField = arrayGroup.get(i).setFieldSize(3).getField();
                        for (short j = 0; j < arrayField.length(); j++) {
                            arrayField.get(j).setName(FixConstants.messagesEmaiGrpFlds[j + 21]);
                            if (j == 0) {
                                arrayField.get(j).setRequired("Y");//LinesOfText
                            } else {
                                arrayField.get(j).setRequired("N");
                            }
                        }
                    }
                }
            case 13://NewOrderSingle
                message.setMsgcat(FixConstants.messagesMsgCat[1]);
                arrayField = null;
                arrayGroup = null;
                arrayField = message.setFieldSize(FixConstants.messagesNOS.length).getField();
                arrayGroup = message.setGroupSize(FixConstants.messagesNOSGrp.length).getGroup();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messagesNOS[i]);
                    if (i == 0 || i == 6 || i == 12 || i == 32 || i == 34 || i == 37) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
                for (short i = 0; i < arrayGroup.length(); i++) {
                    arrayGroup.get(i).setName(FixConstants.messagesNOSGrp[i]);
                    arrayGroup.get(i).setRequired("N");
                    arrayField = null;
                    if (i == 0) {
                        arrayField = arrayGroup.get(i).setFieldSize(2).getField();
                        for (short j = 0; j < arrayField.length(); j++) {
                            arrayField.get(j).setName(FixConstants.messagesNOSGrpFlds[j]);
                            arrayField.get(j).setRequired("N");
                        }
                    } else if (i == 1) {
                        arrayField = arrayGroup.get(i).setFieldSize(1).getField();
                        for (short j = 0; j < arrayField.length(); j++) {
                            arrayField.get(j).setName(FixConstants.messagesNOSGrpFlds[j + 2]);
                            arrayField.get(j).setRequired("N");
                        }
                    }
                }
            case 14://NewOrderList
                message.setMsgcat(FixConstants.messagesMsgCat[1]);
                arrayField = null;
                arrayGroup = null;
                arrayField = message.setFieldSize(FixConstants.messagesNOL.length).getField();
                arrayGroup = message.setGroupSize(1).getGroup();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messagesNOL[i]);
                    if (i == 0 || i == 4 || i == 10) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
                arrayGroup.get(0).setName(FixConstants.messagesNOLOuterGrp);
                arrayGroup.get(0).setRequired("Y");
                arrayField = null;
                arrayField = arrayGroup.get(0).setFieldSize(
                        FixConstants.messagesNOLOuterGrpFlds.length).getField();
                for (short j = 0; j < arrayField.length(); j++) {
                    arrayField.get(j).setName(FixConstants.messagesNOLOuterGrpFlds[j]);
                    if (j == 0 || j == 1 || j == 14 || j == 34) {
                        arrayField.get(j).setRequired("Y");
                    } else {
                        arrayField.get(j).setRequired("N");
                    }
                }
                arrayInnerGroup = arrayGroup.get(0).setGroupSize(2).getGroup();
                for (short i = 0; i < arrayInnerGroup.length(); i++) {
                    arrayInnerGroup.get(i).setName(FixConstants.messagesNOLInnerGrp[i]);
                    arrayInnerGroup.get(i).setRequired("N");
                    arrayField = null;
                    if (i == 0) {
                        arrayField = arrayInnerGroup.get(i).setFieldSize(2).getField();
                        for (short j = 0; j < arrayField.length(); j++) {
                            arrayField.get(j).setName(FixConstants.messagesNOLInnerGrpFlds[j]);
                            arrayField.get(j).setRequired("N");
                        }
                    } else if (i == 1) {
                        arrayField = arrayInnerGroup.get(i).setFieldSize(1).getField();
                        for (short j = 0; j < arrayField.length(); j++) {
                            arrayField.get(j).setName(FixConstants.messagesNOLInnerGrpFlds[j + 2]);
                            arrayField.get(j).setRequired("N");
                        }
                    }
                }

            case 15://OrderCancelRequest
                message.setMsgcat(FixConstants.messagesMsgCat[1]);
                arrayField = null;
                arrayGroup = null;
                arrayField = message.setFieldSize(FixConstants.messagesOCR.length).getField();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messagesOCR[i]);
                    if (i == 0 || i == 2 || i == 7 || i == 27) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
            case 16://OrderCancelReplaceRequest
                message.setMsgcat(FixConstants.messagesMsgCat[1]);
                arrayField = null;
                arrayGroup = null;
                arrayField = message.setFieldSize(FixConstants.messagesOCR.length).getField();
                arrayGroup = message.setGroupSize(FixConstants.messagesOCRGrp.length).getGroup();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messagesOCR[i]);
                    if (i == 3 || i == 4 || i == 9 || i == 14 || i == 33 || i == 34 || i == 37) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
                for (short i = 0; i < arrayGroup.length(); i++) {
                    arrayGroup.get(i).setName(FixConstants.messagesOCRGrp[i]);
                    arrayGroup.get(i).setRequired("N");
                    arrayField = null;
                    if (i == 0) {
                        arrayField = arrayGroup.get(i).setFieldSize(2).getField();
                        for (short j = 0; j < arrayField.length(); j++) {
                            arrayField.get(j).setName(FixConstants.messagesOCRGrpFlds[j]);
                            arrayField.get(j).setRequired("N");
                        }
                    } else if (i == 1) {
                        arrayField = arrayGroup.get(i).setFieldSize(1).getField();
                        for (short j = 0; j < arrayField.length(); j++) {
                            arrayField.get(j).setName(FixConstants.messagesOCRGrpFlds[j + 2]);
                            arrayField.get(j).setRequired("N");
                        }
                    }
                }
            case 17://OrderStatusRekquest
                message.setMsgcat(FixConstants.messagesMsgCat[1]);
                arrayField = null;
                arrayGroup = null;
                arrayField = message.setFieldSize(FixConstants.messagesOSR.length).getField();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messagesOSR[i]);
                    if (i == 1 || i == 5 || i == 2 || i == 4) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
            case 18://Allocation
                message.setMsgcat(FixConstants.messagesMsgCat[1]);
                arrayField = null;
                arrayGroup = null;
                arrayField = message.setFieldSize(FixConstants.messagesAlloc.length).getField();
                arrayGroup = message.setGroupSize(FixConstants.messagesAllocOGrp.length).getGroup();
                for (short i = 0; i < arrayField.length(); i++) {
                    arrayField.get(i).setName(FixConstants.messagesAlloc[i]);
                    if (i == 0 || i == 1 || i == 5 || i == 6 || i == 25 || i == 28 || i == 31) {
                        arrayField.get(i).setRequired("Y");
                    } else {
                        arrayField.get(i).setRequired("N");
                    }
                }
                for (short i = 0; i < arrayGroup.length(); i++) {
                    arrayGroup.get(i).setName(FixConstants.messagesAllocOGrp[i]);
                    arrayGroup.get(i).setRequired("N");
                    arrayField = null;
                    arrayField = arrayGroup.get(i).setFieldSize(
                            FixConstants.messagesAllocOGrpFlds.length).getField();
                    for (short j = 0; j < arrayField.length(); j++) {
                        arrayField.get(j).setName(FixConstants.messagesAllocOGrpFlds[j]);
                        if (i == 2 && j == 2) {
                            arrayField.get(j).setRequired("Y");
                            arrayInnerGroup = arrayGroup.get(i).setGroupSize(1).getGroup();
                            arrayInnerGroup.get(0).setName(FixConstants.messagesAllocIGrp);
                            arrayInnerGroup.get(0).setRequired("N");
                            arrayField = null;
                            arrayField = arrayGroup.get(j).setFieldSize(
                                    FixConstants.messagesAllocIGrpFlds.length).getField();
                            for (short k = 0; k < arrayField.length(); k++) {
                                arrayField.get(k).setName(FixConstants.messagesAllocIGrpFlds[j]);
                                arrayField.get(k).setRequired("N");
                            }
                        } else {
                            arrayField.get(j).setRequired("N");
                        }
                    }
                }
            case 19://ListCancelRequest
                fieldYesArray = null;
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], new int[]{0, 1},
                        FixConstants.messagesListCancelReq,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField,
                        innerGroupFieldSize, innerGroupField, innerGroup);
            case 20://ListExecute
                fieldYesArray = null;
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], new int[]{0, 3},
                        FixConstants.messagesListExec,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField,
                        innerGroupFieldSize, innerGroupField, innerGroup);
            case 21://ListStatusRequest
                fieldYesArray = null;
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], new int[]{0},
                        FixConstants.messagesListStatusReq,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField,
                        innerGroupFieldSize, innerGroupField, innerGroup);
            case 22://ListStatus
                fieldYesArray = new int[]{0, 1, 3, 4, 9};
                fieldArray = null;
                groupYesArray = new int[]{0};
                groupArray = FixConstants.messagesListStatusGrp;
                groupFieldSize = new int[]{FixConstants.messagesListStatusGrpFld.length};
                groupFieldYesArray = new int[][]{new int[]{0, 1, 2, 3, 4, 5}};
                groupField = FixConstants.messagesListStatusGrpFld;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesListStatusReq,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 23:
                fieldYesArray = new int[]{2, 3, 5};
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesAllocationAck,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 24://DontKnowTrade
                fieldYesArray = new int[]{0, 1, 2, 3, 22};
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesDNT,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 25://QuoteRequest
                fieldYesArray = new int[]{0};
                fieldArray = null;
                groupYesArray = new int[]{0};
                groupArray = FixConstants.messagesQuoteReqGrp;
                groupFieldSize = new int[]{FixConstants.messagesQuoteReqGrpFld.length};
                groupFieldYesArray = new int[][]{new int[]{0}};
                groupField = FixConstants.messagesQuoteReqGrpFld;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesQuoteReq,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 26://Quote
                fieldYesArray = new int[]{1, 4};
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesQuote,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 27://SettlementInstructions
                fieldYesArray = new int[]{0, 1, 2, 3, 4, 5, 14};
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messageSettlementInst,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 28://MarketDataRequest
                fieldYesArray = new int[]{0, 1, 2};
                fieldArray = null;
                groupYesArray = new int[]{0, 1};
                groupArray = FixConstants.messagesMarketDataReqGrp;
                groupFieldSize = new int[]{FixConstants.messagesMarketDataReqGrpFld.length};
                groupFieldYesArray = new int[][]{new int[]{0}, new int[]{0}};
                groupField = FixConstants.messagesMarketDataReqGrpFld;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesMarketDataReq,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 29://MarketDataSnapshotFullRefresh
                fieldYesArray = new int[]{1};
                fieldArray = null;
                groupYesArray = new int[]{0};
                groupArray = FixConstants.messagesMarketDataSSFReqGrp;
                groupFieldSize = new int[]{FixConstants.messagesMarketDataSSFReqGrpFld.length};
                groupFieldYesArray = new int[][]{new int[]{0, 1}};
                groupField = FixConstants.messagesMarketDataSSFReqGrpFld;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesMarketDataSSFReq,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 30://MarketDataIncrementalRefresh
                fieldYesArray = null;
                fieldArray = null;
                groupYesArray = new int[]{0};
                groupArray = FixConstants.messagesMarketDataINCRReqGrp;
                groupFieldSize = new int[]{FixConstants.messagesMarketDataINCRReqGrpFld.length};
                groupFieldYesArray = new int[][]{new int[]{0}};
                groupField = FixConstants.messagesMarketDataINCRReqGrpFld;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesMarketDataINCRReq,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 31://MarketDataRequestReject
                fieldYesArray = new int[]{0};
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesMarketDataReqRej,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 32://QuoteCancel
                fieldYesArray = new int[]{1, 2};
                ;
                fieldArray = null;
                groupYesArray = new int[]{0};
                groupArray = FixConstants.messagesQuoteCancelGrp;
                groupFieldSize = new int[]{FixConstants.messagesQuoteCancelGrpFlds.length};
                groupFieldYesArray = new int[][]{new int[]{0}};
                groupField = FixConstants.messagesQuoteCancelGrpFlds;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesQuoteCancel,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 33://QuoteStatusRequest
                fieldYesArray = new int[]{1};
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesQuoteStmtReq,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 34://QuoteAcknowledgement
                fieldYesArray = new int[]{2};
                fieldArray = null;
                groupYesArray = null;
                groupArray = FixConstants.messagesQuoteAckGrp;
                groupFieldSize = new int[]{FixConstants.messagesQuoteAckGrpFlds.length};
                groupFieldYesArray = null;
                groupField = FixConstants.messagesQuoteAckGrpFlds;
                innerGroupFieldSize = null;
                innerGroupField = FixConstants.messagesIQuoteAckGrpFlds;
                innerGroup = FixConstants.messagesIQuoteAckGrp;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesQuoteAck,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 35://SecurityDefinitionRequest
                fieldYesArray = new int[]{2};
                fieldArray = null;
                groupYesArray = null;
                groupArray = FixConstants.messagesSecDefReqGrp;
                groupFieldSize = new int[]{FixConstants.messagesSecDefReqGrpFlds.length};
                groupFieldYesArray = null;
                groupField = FixConstants.messagesSecDefReqGrpFlds;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesSecDefReq,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 36://SecurityDefinition
                fieldYesArray = new int[]{0, 1, 3};
                fieldArray = null;
                groupYesArray = null;
                groupArray = FixConstants.messagesSecDefGrp;
                groupFieldSize = new int[]{FixConstants.messagesSecDefGrpFlds.length};
                groupFieldYesArray = null;
                groupField = FixConstants.messagesSecDefGrpFlds;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesSecDef,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 37://SecurityStatusRequest
                fieldYesArray = new int[]{0, 1, 3};
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesSecStatusReq,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 38://SecurityStatus
                fieldYesArray = new int[]{1};
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesSecStatus,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 39://TradingSessionStatusRequest
                fieldYesArray = new int[]{0, 4};
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesTSSReq,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 40://TradingSessionStatus
                fieldYesArray = new int[]{1, 5};
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesTSS,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 41://MassQuote (InnerGroup TODO)
                fieldYesArray = new int[]{1};
                fieldArray = null;
                groupYesArray = new int[]{0};
                groupArray = FixConstants.messagesMassQGrp;
                groupFieldSize = new int[]{FixConstants.messagesMassQGrpFlds.length};
                groupFieldYesArray = null;
                groupField = FixConstants.messagesMassQGrpFlds;
                innerGroupFieldSize = null;
                innerGroupField = FixConstants.messagesIMassQGrpFlds;
                innerGroup = FixConstants.messagesIMassQGrp;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesMassQ,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 42://BusinessMessageReject
                fieldYesArray = new int[]{1, 3};
                fieldArray = null;
                groupYesArray = null;
                groupArray = null;
                groupFieldSize = null;
                groupFieldYesArray = null;
                groupField = null;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesBMRej,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 43://BidRequest
                fieldYesArray = new int[]{1, 2, 4, 21, 22};
                fieldArray = null;
                groupYesArray = null;
                groupArray = FixConstants.messagesBidReqGrp;
                groupFieldSize = new int[]{FixConstants.messagesBidReqGrpFld.length};
                groupFieldYesArray = null;
                groupField = FixConstants.messagesBidReqGrpFld;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesBidReq,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 44://BidResponse
                fieldYesArray = null;
                fieldArray = null;
                groupYesArray = new int[]{0, 1};
                groupArray = FixConstants.messagesBidResGrp;
                groupFieldSize = new int[]{FixConstants.messagesBidResGrpFld.length};
                groupFieldYesArray = null;
                groupField = FixConstants.messagesBidResGrpFld;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesBidRes,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
            case 45://ListStrikePrice
                fieldYesArray = null;
                fieldArray = null;
                groupYesArray = new int[]{0, 22};
                groupArray = FixConstants.messagesLSPriceGrp;
                groupFieldSize = new int[]{FixConstants.messagesLSPriceGrpFld.length};
                groupFieldYesArray = null;
                groupField = FixConstants.messagesLSPriceGrpFld;
                innerGroupFieldSize = null;
                innerGroupField = null;
                innerGroup = null;
                addMessageInfo(message, FixConstants.messagesMsgCat[1], fieldYesArray, FixConstants.messagesLSPrice,
                        groupYesArray, groupArray, groupFieldSize, groupFieldYesArray, groupField, innerGroupFieldSize, innerGroupField
                        , innerGroup);
        }

    }

    private void addMessageInfo(
            Message message, String messageCat,
            int[] fieldYesArray, String[] fieldArray,
            int[] groupYesArray, String[] groupArray, int[] groupFieldSize, int[][] groupFieldYesArray, String[] groupField,
            int[] innerGroupFieldSize, String[] innerGroupField, String[] innerGroup
    ) {

        HugeArray arrayField = null;
        HugeArray arrayGroup = null;

        message.setMsgcat(messageCat);
        arrayField = message.setFieldSize(fieldArray.length).getField();
        for (short i = 0; i < arrayField.length(); i++) {
            arrayField.get(i).setName(fieldArray[i]);
            for (short j = 0; j < fieldYesArray.length; j++) {
                if (i == j) {
                    arrayField.get(i).setRequired("Y");
                    break;
                } else {
                    arrayField.get(i).setRequired("N");
                }
            }
        }

        if (groupArray != null) {
            arrayGroup = message.setGroupSize(groupArray.length).getGroup();
            for (short i = 0; i < arrayGroup.length(); i++) {
                arrayGroup.get(i).setName(groupArray[i]);
                for (short j = 0; j < groupYesArray.length; j++) {
                    if (i == j) {
                        arrayGroup.get(i).setRequired("Y");
                        break;
                    } else {
                        arrayGroup.get(i).setRequired("N");
                    }
                }
                arrayField = null;
                short groupFieldCounter = 0;
                int[] arrayYesCounter = groupFieldYesArray[i];
                arrayField = arrayGroup.get(i).setFieldSize(groupFieldSize[i]).getField();

                for (short j = groupFieldCounter; j < arrayField.length(); j++) {
                    arrayField.get(j).setName(groupField[j]);
                    for (short k = 0; j < arrayYesCounter.length; k++) {
                        if (j == k) {
                            arrayField.get(j).setRequired("Y");
                            break;
                        } else {
                            arrayField.get(j).setRequired("N");
                        }
                    }
                    arrayField.get(j).setRequired("N");
                    groupFieldCounter++;
                }

                addGroupToGroup(arrayGroup.get(i), innerGroupFieldSize, innerGroupField, innerGroup);
            }
        }
    }

    private void addGroupToGroup(Group group,
                                 int[] innerGroupFieldSize, String[] innerGroupField, String[] innerGroup
    ) {
        HugeArray arrayInnerGroup = null;
        HugeArray arrayField = null;
        if (innerGroupFieldSize == null) {
            return;
        }

        arrayInnerGroup = group.setGroupSize(innerGroup.length).getGroup();
        for (short i = 0; i < innerGroup.length; i++) {
            arrayInnerGroup.get(i).setName(innerGroup[i]);
            arrayInnerGroup.get(i).setRequired("N");
            arrayField = null;
            arrayField = group.setFieldSize(innerGroupField.length).getField();
            for (short k = 0; k < arrayField.length(); k++) {
                arrayField.get(k).setName(innerGroupField[k]);
                arrayField.get(k).setRequired("N");
            }
        }


    }

    /**
     * Static factory method to initializes Trailer fields of FIX 4.2 version
     *
     * @return - FixConfig
     */
    public FixConfig createServerFixTrailer() {
        if ((currentFixVersion & fix4_2_0_mask) != 0) {
            load42DefaultTrailer();
        }
        return this;
    }

    private void load42DefaultTrailer() {
        //this.trailer = dvg.nativeInstance(Trailer.class);
        this.trailer = new Trailer();
        HugeArray array = this.trailer.setFieldSize(3).getField();
        Field field = null;
        for (short i = 0; i < FixConstants.trailerFieldName.length; i++) {
            field = array.get(i);
            field.setName(FixConstants.trailerFieldName[i]);
            if (i == 2) {
                field.setRequired("Y");
            } else {
                field.setRequired("N");
            }
        }
    }


    @SuppressWarnings("unused")
    private FixConfig createServerFixComponents() {
        return this;
    }

    /**
     * Static factory method to initializes all the standard FIX  of FIX 4.2 version
     *
     * @return -FixConfig
     */
    public FixConfig createServerFixFields() {
        if ((currentFixVersion & fix4_2_0_mask) != 0) {
            load42DefaultFields();
        }
        return this;
    }

    private Field[] fieldArr;


    /**
     * Returns an array of all the initialized Fix Fields
     *
     * @return -Field[]
     */
    public Field[] getFieldArr() {
        return fieldArr;
    }

    private void load42DefaultFields() {
        //this.fields = dvg.nativeInstance(Fields.class);
        //this.fields = new Fields();
        //HugeArray array =this.header.setFieldSize(FixConstants.fieldsNumber.length).getField();
        fieldArr = new Field[FixConstants.fieldsNumber.length];
        //Arrays.fill(fieldArr, 0,fieldArr.length,fieldFill);
        //initializing Field for this Fields
        //Field field = null;
        for (short i = 0; i < FixConstants.fieldsNumber.length; i++) {
            //field = array.get(i);
            //field = fieldArr[i];
            fieldArr[i] = new Field();
            fieldArr[i].setNumber(FixConstants.fieldsNumber[i]);
            fieldArr[i].setName(FixConstants.fieldsName[i]);
            fieldArr[i].setType(FieldLookup.fieldFor(FixConstants.fieldsTypeOrdering[i]));
        }
        //Generating Empty Values Fields (including defined ones assuming SINGLE)
		/*HugeArray valueArr = null;
		Value value = null;
		for (short i=0;i 1 on a field
			value = valueArr.get(i);value.setEnum("");//TODO
		}	*/
    }

    /**
     * Returns Fix version 'Major'; like 3 or 4 or 5
     *
     * @return - fixVersionMajor
     */
    public int getFixVersionMajor() {
        return fixVersionMajor;
    }


    /**
     * Static factory method to set FIX protocol version-major
     *
     * @param fixVersionMajor - major version intvalue
     * @return - FixConfig
     */
    public FixConfig setFixVersionMajor(int fixVersionMajor) {
        this.fixVersionMajor = fixVersionMajor;
        return this;
    }

    /**
     * Returns minor value of the FIX protocol version like 2 or 4 for Fix 4.2 or 4.4
     *
     * @return -fixVersionMinor
     */
    public int getFixVersionMinor() {
        return fixVersionMinor;
    }

    /**
     * Static factory method to set FIX protocol version-minor
     *
     * @param fixVersionMinor-minor version intvalue
     * @return -FixConfig
     */
    public FixConfig setFixVersionMinor(int fixVersionMinor) {
        this.fixVersionMinor = fixVersionMinor;
        return this;
    }

    /**
     * Returns Fix Protocol service Pack value for this FIX object
     *
     * @return -fixVersionServicePack
     */
    public int getFixVersionServicePack() {
        return fixVersionServicePack;
    }

    /**
     * Static factory method to set Fix Protocol service Pack value
     * @param fixVersionServicePack - fix servicepack
     * @return -FixConfig
     */    
    public FixConfig setFixVersionServicePack(int fixVersionServicePack) {
        this.fixVersionServicePack = fixVersionServicePack;
        setCurrentFixVersion();
        return this;
    }

    private void setCurrentFixVersion() {
        currentFixVersion = fixVersionMajor | fixVersionMinor | fixVersionServicePack;
    }

    /**
     * Returns Tailer object for this FIX message
     *
     * @return -trailer
     */
    public Trailer getTrailer() {
        return trailer;
    }

    /**
     * Returns Header object for this FIX message
     *
     * @return -header
     */
    public Header getHeader() {
        return header;
    }

    /**
     * Returns Messages object for this FIX message
     *
     * @return -messages
     */
    public Messages getMessages() {
        return messages;
    }

    /**
     * Returns Components object for this FIX message
     *
     * @return -components
     */
    public Components getComponents() {
        return components;
    }

    /**
     * Returns Fields object for this FIX message
     *
     * @return -fields
     */
    public Fields getFields() {
        return fields;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy