module Data.FpML.V53.Notification.CreditEvent
( module Data.FpML.V53.Notification.CreditEvent
, module Data.FpML.V53.Msg
) where
import Text.XML.HaXml.Schema.Schema (SchemaType(..),SimpleType(..),Extension(..),Restricts(..))
import Text.XML.HaXml.Schema.Schema as Schema
import Text.XML.HaXml.OneOfN
import qualified Text.XML.HaXml.Schema.PrimitiveTypes as Xsd
import Data.FpML.V53.Msg
data AffectedTransactions = AffectedTransactions
{ affectTrans_choice0 :: (Maybe (OneOf2 Trade PartyTradeIdentifiers))
}
deriving (Eq,Show)
instance SchemaType AffectedTransactions where
parseSchemaType s = do
(pos,e) <- posnElement [s]
commit $ interior e $ return AffectedTransactions
`apply` optional (oneOf' [ ("Trade", fmap OneOf2 (parseSchemaType "trade"))
, ("PartyTradeIdentifiers", fmap TwoOf2 (parseSchemaType "tradeReference"))
])
schemaTypeToXML s x@AffectedTransactions{} =
toXMLElement s []
[ maybe [] (foldOneOf2 (schemaTypeToXML "trade")
(schemaTypeToXML "tradeReference")
) $ affectTrans_choice0 x
]
data BankruptcyEvent = BankruptcyEvent
deriving (Eq,Show)
instance SchemaType BankruptcyEvent where
parseSchemaType s = do
(pos,e) <- posnElement [s]
commit $ interior e $ return BankruptcyEvent
schemaTypeToXML s x@BankruptcyEvent{} =
toXMLElement s []
[]
instance Extension BankruptcyEvent CreditEvent where
supertype (BankruptcyEvent) =
CreditEvent
data CreditEvent = CreditEvent
deriving (Eq,Show)
instance SchemaType CreditEvent where
parseSchemaType s = do
(pos,e) <- posnElement [s]
commit $ interior e $ return CreditEvent
schemaTypeToXML s x@CreditEvent{} =
toXMLElement s []
[]
data CreditEventNoticeDocument = CreditEventNoticeDocument
{ creditEventNoticeDocum_affectedTransactions :: Maybe AffectedTransactions
, creditEventNoticeDocum_referenceEntity :: Maybe LegalEntity
, creditEventNoticeDocum_creditEvent :: Maybe CreditEvent
, creditEventNoticeDocum_publiclyAvailableInformation :: [Resource]
, creditEventNoticeDocum_notifyingPartyReference :: Maybe PartyReference
, creditEventNoticeDocum_notifiedPartyReference :: Maybe PartyReference
, creditEventNoticeDocum_creditEventNoticeDate :: Maybe Xsd.Date
, creditEventNoticeDocum_creditEventDate :: Maybe Xsd.Date
}
deriving (Eq,Show)
instance SchemaType CreditEventNoticeDocument where
parseSchemaType s = do
(pos,e) <- posnElement [s]
commit $ interior e $ return CreditEventNoticeDocument
`apply` optional (parseSchemaType "affectedTransactions")
`apply` optional (parseSchemaType "referenceEntity")
`apply` optional (elementCreditEvent)
`apply` many (parseSchemaType "publiclyAvailableInformation")
`apply` optional (parseSchemaType "notifyingPartyReference")
`apply` optional (parseSchemaType "notifiedPartyReference")
`apply` optional (parseSchemaType "creditEventNoticeDate")
`apply` optional (parseSchemaType "creditEventDate")
schemaTypeToXML s x@CreditEventNoticeDocument{} =
toXMLElement s []
[ maybe [] (schemaTypeToXML "affectedTransactions") $ creditEventNoticeDocum_affectedTransactions x
, maybe [] (schemaTypeToXML "referenceEntity") $ creditEventNoticeDocum_referenceEntity x
, maybe [] (elementToXMLCreditEvent) $ creditEventNoticeDocum_creditEvent x
, concatMap (schemaTypeToXML "publiclyAvailableInformation") $ creditEventNoticeDocum_publiclyAvailableInformation x
, maybe [] (schemaTypeToXML "notifyingPartyReference") $ creditEventNoticeDocum_notifyingPartyReference x
, maybe [] (schemaTypeToXML "notifiedPartyReference") $ creditEventNoticeDocum_notifiedPartyReference x
, maybe [] (schemaTypeToXML "creditEventNoticeDate") $ creditEventNoticeDocum_creditEventNoticeDate x
, maybe [] (schemaTypeToXML "creditEventDate") $ creditEventNoticeDocum_creditEventDate x
]
data CreditEventNotification = CreditEventNotification
{ creditEventNotif_fpmlVersion :: Xsd.XsdString
, creditEventNotif_expectedBuild :: Maybe Xsd.PositiveInteger
, creditEventNotif_actualBuild :: Maybe Xsd.PositiveInteger
, creditEventNotif_header :: Maybe RequestMessageHeader
, creditEventNotif_validation :: [Validation]
, creditEventNotif_isCorrection :: Maybe Xsd.Boolean
, creditEventNotif_parentCorrelationId :: Maybe CorrelationId
, creditEventNotif_correlationId :: [CorrelationId]
, creditEventNotif_sequenceNumber :: Maybe Xsd.PositiveInteger
, creditEventNotif_onBehalfOf :: [OnBehalfOf]
, creditEventNotif_creditEventNotice :: Maybe CreditEventNoticeDocument
, creditEventNotif_party :: [Party]
}
deriving (Eq,Show)
instance SchemaType CreditEventNotification where
parseSchemaType s = do
(pos,e) <- posnElement [s]
a0 <- getAttribute "fpmlVersion" e pos
a1 <- optional $ getAttribute "expectedBuild" e pos
a2 <- optional $ getAttribute "actualBuild" e pos
commit $ interior e $ return (CreditEventNotification a0 a1 a2)
`apply` optional (parseSchemaType "header")
`apply` many (parseSchemaType "validation")
`apply` optional (parseSchemaType "isCorrection")
`apply` optional (parseSchemaType "parentCorrelationId")
`apply` between (Occurs (Just 0) (Just 2))
(parseSchemaType "correlationId")
`apply` optional (parseSchemaType "sequenceNumber")
`apply` between (Occurs (Just 0) (Just 4))
(parseSchemaType "onBehalfOf")
`apply` optional (parseSchemaType "creditEventNotice")
`apply` many (parseSchemaType "party")
schemaTypeToXML s x@CreditEventNotification{} =
toXMLElement s [ toXMLAttribute "fpmlVersion" $ creditEventNotif_fpmlVersion x
, maybe [] (toXMLAttribute "expectedBuild") $ creditEventNotif_expectedBuild x
, maybe [] (toXMLAttribute "actualBuild") $ creditEventNotif_actualBuild x
]
[ maybe [] (schemaTypeToXML "header") $ creditEventNotif_header x
, concatMap (schemaTypeToXML "validation") $ creditEventNotif_validation x
, maybe [] (schemaTypeToXML "isCorrection") $ creditEventNotif_isCorrection x
, maybe [] (schemaTypeToXML "parentCorrelationId") $ creditEventNotif_parentCorrelationId x
, concatMap (schemaTypeToXML "correlationId") $ creditEventNotif_correlationId x
, maybe [] (schemaTypeToXML "sequenceNumber") $ creditEventNotif_sequenceNumber x
, concatMap (schemaTypeToXML "onBehalfOf") $ creditEventNotif_onBehalfOf x
, maybe [] (schemaTypeToXML "creditEventNotice") $ creditEventNotif_creditEventNotice x
, concatMap (schemaTypeToXML "party") $ creditEventNotif_party x
]
instance Extension CreditEventNotification CorrectableRequestMessage where
supertype v = CorrectableRequestMessage_CreditEventNotification v
instance Extension CreditEventNotification RequestMessage where
supertype = (supertype :: CorrectableRequestMessage -> RequestMessage)
. (supertype :: CreditEventNotification -> CorrectableRequestMessage)
instance Extension CreditEventNotification Message where
supertype = (supertype :: RequestMessage -> Message)
. (supertype :: CorrectableRequestMessage -> RequestMessage)
. (supertype :: CreditEventNotification -> CorrectableRequestMessage)
instance Extension CreditEventNotification Document where
supertype = (supertype :: Message -> Document)
. (supertype :: RequestMessage -> Message)
. (supertype :: CorrectableRequestMessage -> RequestMessage)
. (supertype :: CreditEventNotification -> CorrectableRequestMessage)
data FailureToPayEvent = FailureToPayEvent
deriving (Eq,Show)
instance SchemaType FailureToPayEvent where
parseSchemaType s = do
(pos,e) <- posnElement [s]
commit $ interior e $ return FailureToPayEvent
schemaTypeToXML s x@FailureToPayEvent{} =
toXMLElement s []
[]
instance Extension FailureToPayEvent CreditEvent where
supertype (FailureToPayEvent) =
CreditEvent
data ObligationAccelerationEvent = ObligationAccelerationEvent
deriving (Eq,Show)
instance SchemaType ObligationAccelerationEvent where
parseSchemaType s = do
(pos,e) <- posnElement [s]
commit $ interior e $ return ObligationAccelerationEvent
schemaTypeToXML s x@ObligationAccelerationEvent{} =
toXMLElement s []
[]
instance Extension ObligationAccelerationEvent CreditEvent where
supertype (ObligationAccelerationEvent) =
CreditEvent
data ObligationDefaultEvent = ObligationDefaultEvent
deriving (Eq,Show)
instance SchemaType ObligationDefaultEvent where
parseSchemaType s = do
(pos,e) <- posnElement [s]
commit $ interior e $ return ObligationDefaultEvent
schemaTypeToXML s x@ObligationDefaultEvent{} =
toXMLElement s []
[]
instance Extension ObligationDefaultEvent CreditEvent where
supertype (ObligationDefaultEvent) =
CreditEvent
data RepudiationMoratoriumEvent = RepudiationMoratoriumEvent
deriving (Eq,Show)
instance SchemaType RepudiationMoratoriumEvent where
parseSchemaType s = do
(pos,e) <- posnElement [s]
commit $ interior e $ return RepudiationMoratoriumEvent
schemaTypeToXML s x@RepudiationMoratoriumEvent{} =
toXMLElement s []
[]
instance Extension RepudiationMoratoriumEvent CreditEvent where
supertype (RepudiationMoratoriumEvent) =
CreditEvent
data RestructuringEvent = RestructuringEvent
{ restrEvent_partialExerciseAmount :: Maybe Money
}
deriving (Eq,Show)
instance SchemaType RestructuringEvent where
parseSchemaType s = do
(pos,e) <- posnElement [s]
commit $ interior e $ return RestructuringEvent
`apply` optional (parseSchemaType "partialExerciseAmount")
schemaTypeToXML s x@RestructuringEvent{} =
toXMLElement s []
[ maybe [] (schemaTypeToXML "partialExerciseAmount") $ restrEvent_partialExerciseAmount x
]
instance Extension RestructuringEvent CreditEvent where
supertype (RestructuringEvent e0) =
CreditEvent
elementBankruptcy :: XMLParser BankruptcyEvent
elementBankruptcy = parseSchemaType "bankruptcy"
elementToXMLBankruptcy :: BankruptcyEvent -> [Content ()]
elementToXMLBankruptcy = schemaTypeToXML "bankruptcy"
elementCreditEvent :: XMLParser CreditEvent
elementCreditEvent = fmap supertype elementRestructuring
`onFail`
fmap supertype elementRepudiationMoratorium
`onFail`
fmap supertype elementObligationDefault
`onFail`
fmap supertype elementObligationAcceleration
`onFail`
fmap supertype elementFailureToPay
`onFail`
fmap supertype elementBankruptcy
`onFail` fail "Parse failed when expecting an element in the substitution group for\n\
\ <creditEvent>,\n\
\ namely one of:\n\
\<restructuring>, <repudiationMoratorium>, <obligationDefault>, <obligationAcceleration>, <failureToPay>, <bankruptcy>"
elementToXMLCreditEvent :: CreditEvent -> [Content ()]
elementToXMLCreditEvent = schemaTypeToXML "creditEvent"
elementCreditEventNotice :: XMLParser CreditEventNoticeDocument
elementCreditEventNotice = parseSchemaType "creditEventNotice"
elementToXMLCreditEventNotice :: CreditEventNoticeDocument -> [Content ()]
elementToXMLCreditEventNotice = schemaTypeToXML "creditEventNotice"
elementFailureToPay :: XMLParser FailureToPayEvent
elementFailureToPay = parseSchemaType "failureToPay"
elementToXMLFailureToPay :: FailureToPayEvent -> [Content ()]
elementToXMLFailureToPay = schemaTypeToXML "failureToPay"
elementObligationAcceleration :: XMLParser ObligationAccelerationEvent
elementObligationAcceleration = parseSchemaType "obligationAcceleration"
elementToXMLObligationAcceleration :: ObligationAccelerationEvent -> [Content ()]
elementToXMLObligationAcceleration = schemaTypeToXML "obligationAcceleration"
elementObligationDefault :: XMLParser ObligationDefaultEvent
elementObligationDefault = parseSchemaType "obligationDefault"
elementToXMLObligationDefault :: ObligationDefaultEvent -> [Content ()]
elementToXMLObligationDefault = schemaTypeToXML "obligationDefault"
elementRepudiationMoratorium :: XMLParser RepudiationMoratoriumEvent
elementRepudiationMoratorium = parseSchemaType "repudiationMoratorium"
elementToXMLRepudiationMoratorium :: RepudiationMoratoriumEvent -> [Content ()]
elementToXMLRepudiationMoratorium = schemaTypeToXML "repudiationMoratorium"
elementRestructuring :: XMLParser RestructuringEvent
elementRestructuring = parseSchemaType "restructuring"
elementToXMLRestructuring :: RestructuringEvent -> [Content ()]
elementToXMLRestructuring = schemaTypeToXML "restructuring"
elementCreditEventNotification :: XMLParser CreditEventNotification
elementCreditEventNotification = parseSchemaType "creditEventNotification"
elementToXMLCreditEventNotification :: CreditEventNotification -> [Content ()]
elementToXMLCreditEventNotification = schemaTypeToXML "creditEventNotification"
elementCreditEventAcknowledgement :: XMLParser Acknowledgement
elementCreditEventAcknowledgement = parseSchemaType "creditEventAcknowledgement"
elementToXMLCreditEventAcknowledgement :: Acknowledgement -> [Content ()]
elementToXMLCreditEventAcknowledgement = schemaTypeToXML "creditEventAcknowledgement"
elementCreditEventException :: XMLParser Exception
elementCreditEventException = parseSchemaType "creditEventException"
elementToXMLCreditEventException :: Exception -> [Content ()]
elementToXMLCreditEventException = schemaTypeToXML "creditEventException"