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

org.sackfix.fix44.QuoteStatusReportMessage.scala Maven / Gradle / Ivy

The newest version!
package org.sackfix.fix44

import org.sackfix.field._
import org.sackfix.common.validated.fields.{SfFixMessageBody, SfFixMessageDecoder, SfFixFieldsToAscii, SfFixRenderable}
import org.sackfix.common.message.SfRepeatingGroupCountException
import scala.annotation.tailrec
import scala.collection.immutable.HashSet
import scala.collection.mutable.ArrayBuffer


/**
  * Generated by SackFix code generator on 20210314
  * Source specification was read from:
  *   /quickfixj1.6.0/FIX44.xml
  */
case class QuoteStatusReportMessage(quoteStatusReqIDField:Option[QuoteStatusReqIDField]=None,
                                    quoteReqIDField:Option[QuoteReqIDField]=None,
                                    quoteIDField:QuoteIDField,
                                    quoteRespIDField:Option[QuoteRespIDField]=None,
                                    quoteTypeField:Option[QuoteTypeField]=None,
                                    partiesComponent:Option[PartiesComponent]=None,
                                    tradingSessionIDField:Option[TradingSessionIDField]=None,
                                    tradingSessionSubIDField:Option[TradingSessionSubIDField]=None,
                                    instrumentComponent:InstrumentComponent,
                                    financingDetailsComponent:Option[FinancingDetailsComponent]=None,
                                    noUnderlyingsField:Option[NoUnderlyingsField]=None,
                                    underlyingsGroups: Option[List[UnderlyingsGroup]]=None,
                                    sideField:Option[SideField]=None,
                                    orderQtyDataComponent:Option[OrderQtyDataComponent]=None,
                                    settlTypeField:Option[SettlTypeField]=None,
                                    settlDateField:Option[SettlDateField]=None,
                                    settlDate2Field:Option[SettlDate2Field]=None,
                                    orderQty2Field:Option[OrderQty2Field]=None,
                                    currencyField:Option[CurrencyField]=None,
                                    stipulationsComponent:Option[StipulationsComponent]=None,
                                    accountField:Option[AccountField]=None,
                                    acctIDSourceField:Option[AcctIDSourceField]=None,
                                    accountTypeField:Option[AccountTypeField]=None,
                                    noLegsField:Option[NoLegsField]=None,
                                    legsGroups: Option[List[LegsGroup]]=None,
                                    noQuoteQualifiersField:Option[NoQuoteQualifiersField]=None,
                                    quoteQualifiersGroups: Option[List[QuoteQualifiersGroup]]=None,
                                    expireTimeField:Option[ExpireTimeField]=None,
                                    priceField:Option[PriceField]=None,
                                    priceTypeField:Option[PriceTypeField]=None,
                                    spreadOrBenchmarkCurveDataComponent:Option[SpreadOrBenchmarkCurveDataComponent]=None,
                                    yieldDataComponent:Option[YieldDataComponent]=None,
                                    bidPxField:Option[BidPxField]=None,
                                    offerPxField:Option[OfferPxField]=None,
                                    mktBidPxField:Option[MktBidPxField]=None,
                                    mktOfferPxField:Option[MktOfferPxField]=None,
                                    minBidSizeField:Option[MinBidSizeField]=None,
                                    bidSizeField:Option[BidSizeField]=None,
                                    minOfferSizeField:Option[MinOfferSizeField]=None,
                                    offerSizeField:Option[OfferSizeField]=None,
                                    validUntilTimeField:Option[ValidUntilTimeField]=None,
                                    bidSpotRateField:Option[BidSpotRateField]=None,
                                    offerSpotRateField:Option[OfferSpotRateField]=None,
                                    bidForwardPointsField:Option[BidForwardPointsField]=None,
                                    offerForwardPointsField:Option[OfferForwardPointsField]=None,
                                    midPxField:Option[MidPxField]=None,
                                    bidYieldField:Option[BidYieldField]=None,
                                    midYieldField:Option[MidYieldField]=None,
                                    offerYieldField:Option[OfferYieldField]=None,
                                    transactTimeField:Option[TransactTimeField]=None,
                                    ordTypeField:Option[OrdTypeField]=None,
                                    bidForwardPoints2Field:Option[BidForwardPoints2Field]=None,
                                    offerForwardPoints2Field:Option[OfferForwardPoints2Field]=None,
                                    settlCurrBidFxRateField:Option[SettlCurrBidFxRateField]=None,
                                    settlCurrOfferFxRateField:Option[SettlCurrOfferFxRateField]=None,
                                    settlCurrFxRateCalcField:Option[SettlCurrFxRateCalcField]=None,
                                    commTypeField:Option[CommTypeField]=None,
                                    commissionField:Option[CommissionField]=None,
                                    custOrderCapacityField:Option[CustOrderCapacityField]=None,
                                    exDestinationField:Option[ExDestinationField]=None,
                                    quoteStatusField:Option[QuoteStatusField]=None,
                                    textField:Option[TextField]=None,
                                    encodedTextLenField:Option[EncodedTextLenField]=None,
                                    encodedTextField:Option[EncodedTextField]=None) extends SfFixMessageBody("AI")  with SfFixRenderable with SfFixFieldsToAscii {
  if (noUnderlyingsField.map(_.value).getOrElse(0) != underlyingsGroups.map(_.size).getOrElse(0))
    throw SfRepeatingGroupCountException(NoUnderlyingsField.TagId,noUnderlyingsField.map(_.value).getOrElse(0), underlyingsGroups.map(_.size).getOrElse(0))
  if (noLegsField.map(_.value).getOrElse(0) != legsGroups.map(_.size).getOrElse(0))
    throw SfRepeatingGroupCountException(NoLegsField.TagId,noLegsField.map(_.value).getOrElse(0), legsGroups.map(_.size).getOrElse(0))
  if (noQuoteQualifiersField.map(_.value).getOrElse(0) != quoteQualifiersGroups.map(_.size).getOrElse(0))
    throw SfRepeatingGroupCountException(NoQuoteQualifiersField.TagId,noQuoteQualifiersField.map(_.value).getOrElse(0), quoteQualifiersGroups.map(_.size).getOrElse(0))

  override lazy val fixStr : String = appendFixStr().toString
  override def appendFixStr(b:StringBuilder = new StringBuilder): StringBuilder = format(formatForFix, b)

  override def toString():String = appendStringBuilder().toString()
  def appendStringBuilder(b:StringBuilder = new StringBuilder) : StringBuilder = format(formatForToString, b)

  def format( fmt: ((StringBuilder,SfFixRenderable)=>Unit), b:StringBuilder = new StringBuilder()): StringBuilder = {
    quoteStatusReqIDField.foreach(fmt(b,_))
    quoteReqIDField.foreach(fmt(b,_))
    fmt(b,quoteIDField)
    quoteRespIDField.foreach(fmt(b,_))
    quoteTypeField.foreach(fmt(b,_))
    partiesComponent.foreach(fmt(b,_))
    tradingSessionIDField.foreach(fmt(b,_))
    tradingSessionSubIDField.foreach(fmt(b,_))
    fmt(b,instrumentComponent)
    financingDetailsComponent.foreach(fmt(b,_))
    noUnderlyingsField.foreach(fmt(b,_))
    underlyingsGroups.getOrElse(List.empty).foreach(fmt(b,_))
    sideField.foreach(fmt(b,_))
    orderQtyDataComponent.foreach(fmt(b,_))
    settlTypeField.foreach(fmt(b,_))
    settlDateField.foreach(fmt(b,_))
    settlDate2Field.foreach(fmt(b,_))
    orderQty2Field.foreach(fmt(b,_))
    currencyField.foreach(fmt(b,_))
    stipulationsComponent.foreach(fmt(b,_))
    accountField.foreach(fmt(b,_))
    acctIDSourceField.foreach(fmt(b,_))
    accountTypeField.foreach(fmt(b,_))
    noLegsField.foreach(fmt(b,_))
    legsGroups.getOrElse(List.empty).foreach(fmt(b,_))
    noQuoteQualifiersField.foreach(fmt(b,_))
    quoteQualifiersGroups.getOrElse(List.empty).foreach(fmt(b,_))
    expireTimeField.foreach(fmt(b,_))
    priceField.foreach(fmt(b,_))
    priceTypeField.foreach(fmt(b,_))
    spreadOrBenchmarkCurveDataComponent.foreach(fmt(b,_))
    yieldDataComponent.foreach(fmt(b,_))
    bidPxField.foreach(fmt(b,_))
    offerPxField.foreach(fmt(b,_))
    mktBidPxField.foreach(fmt(b,_))
    mktOfferPxField.foreach(fmt(b,_))
    minBidSizeField.foreach(fmt(b,_))
    bidSizeField.foreach(fmt(b,_))
    minOfferSizeField.foreach(fmt(b,_))
    offerSizeField.foreach(fmt(b,_))
    validUntilTimeField.foreach(fmt(b,_))
    bidSpotRateField.foreach(fmt(b,_))
    offerSpotRateField.foreach(fmt(b,_))
    bidForwardPointsField.foreach(fmt(b,_))
    offerForwardPointsField.foreach(fmt(b,_))
    midPxField.foreach(fmt(b,_))
    bidYieldField.foreach(fmt(b,_))
    midYieldField.foreach(fmt(b,_))
    offerYieldField.foreach(fmt(b,_))
    transactTimeField.foreach(fmt(b,_))
    ordTypeField.foreach(fmt(b,_))
    bidForwardPoints2Field.foreach(fmt(b,_))
    offerForwardPoints2Field.foreach(fmt(b,_))
    settlCurrBidFxRateField.foreach(fmt(b,_))
    settlCurrOfferFxRateField.foreach(fmt(b,_))
    settlCurrFxRateCalcField.foreach(fmt(b,_))
    commTypeField.foreach(fmt(b,_))
    commissionField.foreach(fmt(b,_))
    custOrderCapacityField.foreach(fmt(b,_))
    exDestinationField.foreach(fmt(b,_))
    quoteStatusField.foreach(fmt(b,_))
    textField.foreach(fmt(b,_))
    encodedTextLenField.foreach(fmt(b,_))
    encodedTextField.foreach(fmt(b,_))
    b
  }

}
     
object QuoteStatusReportMessage extends SfFixMessageDecoder {
  val MsgType="AI"
  val MsgName="QuoteStatusReport"
             
  override val MandatoryFields = HashSet[Int](
    QuoteIDField.TagId)

  override def isMandatoryField(tagId:Int) : Boolean = {
    MandatoryFields.contains(tagId)  || 
    PartiesComponent.isMandatoryField(tagId) || InstrumentComponent.isMandatoryField(tagId) || FinancingDetailsComponent.isMandatoryField(tagId) || UnderlyingsGroup.isMandatoryField(tagId) || 
    OrderQtyDataComponent.isMandatoryField(tagId) || StipulationsComponent.isMandatoryField(tagId) || LegsGroup.isMandatoryField(tagId) || QuoteQualifiersGroup.isMandatoryField(tagId) || 
    SpreadOrBenchmarkCurveDataComponent.isMandatoryField(tagId) || YieldDataComponent.isMandatoryField(tagId)
  }

  override val OptionalFields = HashSet[Int](
    QuoteStatusReqIDField.TagId, QuoteReqIDField.TagId, QuoteRespIDField.TagId, QuoteTypeField.TagId, TradingSessionIDField.TagId, 
    TradingSessionSubIDField.TagId, NoUnderlyingsField.TagId, SideField.TagId, SettlTypeField.TagId, SettlDateField.TagId, 
    SettlDate2Field.TagId, OrderQty2Field.TagId, CurrencyField.TagId, AccountField.TagId, AcctIDSourceField.TagId, 
    AccountTypeField.TagId, NoLegsField.TagId, NoQuoteQualifiersField.TagId, ExpireTimeField.TagId, PriceField.TagId, 
    PriceTypeField.TagId, BidPxField.TagId, OfferPxField.TagId, MktBidPxField.TagId, MktOfferPxField.TagId, 
    MinBidSizeField.TagId, BidSizeField.TagId, MinOfferSizeField.TagId, OfferSizeField.TagId, ValidUntilTimeField.TagId, 
    BidSpotRateField.TagId, OfferSpotRateField.TagId, BidForwardPointsField.TagId, OfferForwardPointsField.TagId, MidPxField.TagId, 
    BidYieldField.TagId, MidYieldField.TagId, OfferYieldField.TagId, TransactTimeField.TagId, OrdTypeField.TagId, 
    BidForwardPoints2Field.TagId, OfferForwardPoints2Field.TagId, SettlCurrBidFxRateField.TagId, SettlCurrOfferFxRateField.TagId, SettlCurrFxRateCalcField.TagId, 
    CommTypeField.TagId, CommissionField.TagId, CustOrderCapacityField.TagId, ExDestinationField.TagId, QuoteStatusField.TagId, 
    TextField.TagId, EncodedTextLenField.TagId, EncodedTextField.TagId)

  override def isOptionalField(tagId:Int) : Boolean = {
    OptionalFields.contains(tagId)  || 
    PartiesComponent.isOptionalField(tagId) || InstrumentComponent.isOptionalField(tagId) || FinancingDetailsComponent.isOptionalField(tagId) || UnderlyingsGroup.isOptionalField(tagId) || 
    OrderQtyDataComponent.isOptionalField(tagId) || StipulationsComponent.isOptionalField(tagId) || LegsGroup.isOptionalField(tagId) || QuoteQualifiersGroup.isOptionalField(tagId) || 
    SpreadOrBenchmarkCurveDataComponent.isOptionalField(tagId) || YieldDataComponent.isOptionalField(tagId)
  }

  override def isFieldOf(tagId:Int) : Boolean = isMandatoryField(tagId) || isOptionalField(tagId)  || 
    PartiesComponent.isFieldOf(tagId) || InstrumentComponent.isFieldOf(tagId) || FinancingDetailsComponent.isFieldOf(tagId) || 
    UnderlyingsGroup.isFieldOf(tagId) || OrderQtyDataComponent.isFieldOf(tagId) || StipulationsComponent.isFieldOf(tagId) || 
    LegsGroup.isFieldOf(tagId) || QuoteQualifiersGroup.isFieldOf(tagId) || SpreadOrBenchmarkCurveDataComponent.isFieldOf(tagId) || 
    YieldDataComponent.isFieldOf(tagId)

   override lazy val RepeatingGroupsTags = HashSet[Int](
    NoUnderlyingsField.TagId, NoLegsField.TagId, NoQuoteQualifiersField.TagId)
  
      
  override def isFirstField(tagId:Int) : Boolean = tagId==QuoteStatusReqIDField.TagId 

  override def decode(flds: Seq[Tuple2[Int, Any]], startPos:Int = 0):Option[SfFixMessageBody] = {
    val (pos, myFields, nextTagPosLookup) = extractMyFieldsAndPopulatePositions(false, flds, startPos)
    validateMandatoryFieldsPresent(myFields)

    if (MandatoryFields.isEmpty || myFields.nonEmpty) {
      Some(QuoteStatusReportMessage(myFields.get(QuoteStatusReqIDField.TagId).flatMap(f=>QuoteStatusReqIDField.decode(f)),
        myFields.get(QuoteReqIDField.TagId).flatMap(f=>QuoteReqIDField.decode(f)),
        QuoteIDField.decode(myFields.get(QuoteIDField.TagId)).get,
        myFields.get(QuoteRespIDField.TagId).flatMap(f=>QuoteRespIDField.decode(f)),
        myFields.get(QuoteTypeField.TagId).flatMap(f=>QuoteTypeField.decode(f)),
        PartiesComponent.decode(flds, startPos),
        myFields.get(TradingSessionIDField.TagId).flatMap(f=>TradingSessionIDField.decode(f)),
        myFields.get(TradingSessionSubIDField.TagId).flatMap(f=>TradingSessionSubIDField.decode(f)),
        InstrumentComponent.decode(flds, startPos).get,
        FinancingDetailsComponent.decode(flds, startPos),
        myFields.get(NoUnderlyingsField.TagId).flatMap(f=>NoUnderlyingsField.decode(f)),
        if (nextTagPosLookup.contains(NoUnderlyingsField.TagId)) UnderlyingsGroup.decode(flds, nextTagPosLookup(NoUnderlyingsField.TagId)) else None,
        myFields.get(SideField.TagId).flatMap(f=>SideField.decode(f)),
        OrderQtyDataComponent.decode(flds, startPos),
        myFields.get(SettlTypeField.TagId).flatMap(f=>SettlTypeField.decode(f)),
        myFields.get(SettlDateField.TagId).flatMap(f=>SettlDateField.decode(f)),
        myFields.get(SettlDate2Field.TagId).flatMap(f=>SettlDate2Field.decode(f)),
        myFields.get(OrderQty2Field.TagId).flatMap(f=>OrderQty2Field.decode(f)),
        myFields.get(CurrencyField.TagId).flatMap(f=>CurrencyField.decode(f)),
        StipulationsComponent.decode(flds, startPos),
        myFields.get(AccountField.TagId).flatMap(f=>AccountField.decode(f)),
        myFields.get(AcctIDSourceField.TagId).flatMap(f=>AcctIDSourceField.decode(f)),
        myFields.get(AccountTypeField.TagId).flatMap(f=>AccountTypeField.decode(f)),
        myFields.get(NoLegsField.TagId).flatMap(f=>NoLegsField.decode(f)),
        if (nextTagPosLookup.contains(NoLegsField.TagId)) LegsGroup.decode(flds, nextTagPosLookup(NoLegsField.TagId)) else None,
        myFields.get(NoQuoteQualifiersField.TagId).flatMap(f=>NoQuoteQualifiersField.decode(f)),
        if (nextTagPosLookup.contains(NoQuoteQualifiersField.TagId)) QuoteQualifiersGroup.decode(flds, nextTagPosLookup(NoQuoteQualifiersField.TagId)) else None,
        myFields.get(ExpireTimeField.TagId).flatMap(f=>ExpireTimeField.decode(f)),
        myFields.get(PriceField.TagId).flatMap(f=>PriceField.decode(f)),
        myFields.get(PriceTypeField.TagId).flatMap(f=>PriceTypeField.decode(f)),
        SpreadOrBenchmarkCurveDataComponent.decode(flds, startPos),
        YieldDataComponent.decode(flds, startPos),
        myFields.get(BidPxField.TagId).flatMap(f=>BidPxField.decode(f)),
        myFields.get(OfferPxField.TagId).flatMap(f=>OfferPxField.decode(f)),
        myFields.get(MktBidPxField.TagId).flatMap(f=>MktBidPxField.decode(f)),
        myFields.get(MktOfferPxField.TagId).flatMap(f=>MktOfferPxField.decode(f)),
        myFields.get(MinBidSizeField.TagId).flatMap(f=>MinBidSizeField.decode(f)),
        myFields.get(BidSizeField.TagId).flatMap(f=>BidSizeField.decode(f)),
        myFields.get(MinOfferSizeField.TagId).flatMap(f=>MinOfferSizeField.decode(f)),
        myFields.get(OfferSizeField.TagId).flatMap(f=>OfferSizeField.decode(f)),
        myFields.get(ValidUntilTimeField.TagId).flatMap(f=>ValidUntilTimeField.decode(f)),
        myFields.get(BidSpotRateField.TagId).flatMap(f=>BidSpotRateField.decode(f)),
        myFields.get(OfferSpotRateField.TagId).flatMap(f=>OfferSpotRateField.decode(f)),
        myFields.get(BidForwardPointsField.TagId).flatMap(f=>BidForwardPointsField.decode(f)),
        myFields.get(OfferForwardPointsField.TagId).flatMap(f=>OfferForwardPointsField.decode(f)),
        myFields.get(MidPxField.TagId).flatMap(f=>MidPxField.decode(f)),
        myFields.get(BidYieldField.TagId).flatMap(f=>BidYieldField.decode(f)),
        myFields.get(MidYieldField.TagId).flatMap(f=>MidYieldField.decode(f)),
        myFields.get(OfferYieldField.TagId).flatMap(f=>OfferYieldField.decode(f)),
        myFields.get(TransactTimeField.TagId).flatMap(f=>TransactTimeField.decode(f)),
        myFields.get(OrdTypeField.TagId).flatMap(f=>OrdTypeField.decode(f)),
        myFields.get(BidForwardPoints2Field.TagId).flatMap(f=>BidForwardPoints2Field.decode(f)),
        myFields.get(OfferForwardPoints2Field.TagId).flatMap(f=>OfferForwardPoints2Field.decode(f)),
        myFields.get(SettlCurrBidFxRateField.TagId).flatMap(f=>SettlCurrBidFxRateField.decode(f)),
        myFields.get(SettlCurrOfferFxRateField.TagId).flatMap(f=>SettlCurrOfferFxRateField.decode(f)),
        myFields.get(SettlCurrFxRateCalcField.TagId).flatMap(f=>SettlCurrFxRateCalcField.decode(f)),
        myFields.get(CommTypeField.TagId).flatMap(f=>CommTypeField.decode(f)),
        myFields.get(CommissionField.TagId).flatMap(f=>CommissionField.decode(f)),
        myFields.get(CustOrderCapacityField.TagId).flatMap(f=>CustOrderCapacityField.decode(f)),
        myFields.get(ExDestinationField.TagId).flatMap(f=>ExDestinationField.decode(f)),
        myFields.get(QuoteStatusField.TagId).flatMap(f=>QuoteStatusField.decode(f)),
        myFields.get(TextField.TagId).flatMap(f=>TextField.decode(f)),
        myFields.get(EncodedTextLenField.TagId).flatMap(f=>EncodedTextLenField.decode(f)),
        myFields.get(EncodedTextField.TagId).flatMap(f=>EncodedTextField.decode(f))))
    } else None
  }

    
}
     




© 2015 - 2025 Weber Informatics LLC | Privacy Policy