/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.examples.marketdata.credit.markit; import com.opengamma.strata.product.credit.RestructuringClause; /** * Specifies the form of the restructuring credit event that is applicable to the credit default swap. * <p> * This is also known as the <i>DocClause</i>. */ public enum MarkitRestructuringClause { /** * Modified-Modified Restructuring 2003. */ MM, /** * Modified-Modified Restructuring 2014. */ MM14, /** * Modified Restructuring 2003. */ MR, /** * Modified Restructuring 2014. */ MR14, /** * Cum/Old/Full Restructuring 2003. */ CR, /** * Cum/Old/Full Restructuring 2014. */ CR14, /** * Ex/No restructuring 2003. */ XR, /** * Ex/No restructuring 2014. */ XR14; //------------------------------------------------------------------------- /** * Converts Markit code to standard restructuring clause. * * @return the converted clause */ public RestructuringClause translate() { switch (this) { case MM: return RestructuringClause.MOD_MOD_RESTRUCTURING_2003; case MM14: return RestructuringClause.MOD_MOD_RESTRUCTURING_2014; case MR: return RestructuringClause.MODIFIED_RESTRUCTURING_2003; case MR14: return RestructuringClause.MODIFIED_RESTRUCTURING_2014; case CR: return RestructuringClause.CUM_RESTRUCTURING_2003; case CR14: return RestructuringClause.CUM_RESTRUCTURING_2014; case XR: return RestructuringClause.NO_RESTRUCTURING_2003; case XR14: return RestructuringClause.NO_RESTRUCTURING_2014; default: throw new IllegalStateException("Unmapped restructuring clause. Do not have mapping for " + this); } } /** * Converts restructuring clause to Markit equivalent. * * @param restructuringClause the clause to convert * @return the converted clause */ public static MarkitRestructuringClause from(RestructuringClause restructuringClause) { switch (restructuringClause) { case MOD_MOD_RESTRUCTURING_2003: return MM; case MOD_MOD_RESTRUCTURING_2014: return MM14; case MODIFIED_RESTRUCTURING_2003: return MR; case MODIFIED_RESTRUCTURING_2014: return MR14; case CUM_RESTRUCTURING_2003: return CR; case CUM_RESTRUCTURING_2014: return CR14; case NO_RESTRUCTURING_2003: return XR; case NO_RESTRUCTURING_2014: return XR14; default: throw new UnsupportedOperationException("Unknown restructuring clause. Do not have mapping for " + restructuringClause); } } }