/** * 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.SeniorityLevel; /** * Specifies the repayment precedence of a debt instrument. * <p> * This is also known as the <i>RED Tier Code</i>. */ public enum MarkitSeniorityLevel { /** * Senior domestic. */ SECDOM, /** * Senior foreign. */ SNRFOR, /** * Subordinate, Lower Tier 2. */ SUBLT2, /** * Subordinate Tier 1. */ PREFT1, /** * Subordinate, Upper Tier 2. */ JRSUBUT2; //------------------------------------------------------------------------- /** * Converts Markit code to standard seniority level. * * @return the converted level */ public SeniorityLevel translate() { switch (this) { case SECDOM: return SeniorityLevel.SENIOR_SECURED_DOMESTIC; case SNRFOR: return SeniorityLevel.SENIOR_UNSECURED_FOREIGN; case SUBLT2: return SeniorityLevel.SUBORDINATE_LOWER_TIER_2; case PREFT1: return SeniorityLevel.SUBORDINATE_TIER_1; case JRSUBUT2: return SeniorityLevel.SUBORDINATE_UPPER_TIER_2; default: throw new IllegalStateException("Unmapped seniority level. Do not have mapping for " + this); } } /** * Converts seniority level to Markit equivalent. * * @param seniorityLevel the level to convert * @return the converted level */ public static MarkitSeniorityLevel from(SeniorityLevel seniorityLevel) { switch (seniorityLevel) { case SENIOR_SECURED_DOMESTIC: return SECDOM; case SENIOR_UNSECURED_FOREIGN: return SNRFOR; case SUBORDINATE_LOWER_TIER_2: return SUBLT2; case SUBORDINATE_TIER_1: return PREFT1; case SUBORDINATE_UPPER_TIER_2: return JRSUBUT2; default: throw new IllegalArgumentException("Unknown seniority level. Do not have mapping for " + seniorityLevel); } } }