/** * Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.bbg.livedata.normalization; import org.fudgemsg.FudgeContext; import org.fudgemsg.FudgeField; import org.fudgemsg.MutableFudgeMsg; import org.fudgemsg.mapping.FudgeDeserializer; import com.opengamma.bbg.BloombergConstants; import com.opengamma.bbg.BloombergPermissions; import com.opengamma.livedata.normalization.NormalizationRule; import com.opengamma.livedata.permission.PermissionUtils; import com.opengamma.livedata.server.FieldHistoryStore; import com.opengamma.util.fudgemsg.OpenGammaFudgeContext; /** * */ public class BloombergEidFieldValueNormalizer implements NormalizationRule { private static final String EID_LIVE_DATA = BloombergConstants.EID_LIVE_DATA_FIELD; private static final String EID_REF_DATA = BloombergConstants.EID_DATA.toString(); private final FudgeContext _fudgeContext = OpenGammaFudgeContext.getInstance(); @Override public MutableFudgeMsg apply(MutableFudgeMsg msg, String securityUniqueId, FieldHistoryStore fieldHistory) { MutableFudgeMsg normalizedMsg = _fudgeContext.newMessage(); FudgeDeserializer fudgeDeserializer = new FudgeDeserializer(_fudgeContext); for (FudgeField field : msg) { if (field.getName().equalsIgnoreCase(EID_LIVE_DATA) || field.getName().equalsIgnoreCase(EID_REF_DATA)) { try { Integer eidValue = fudgeDeserializer.fieldValueToObject(Integer.class, field); normalizedMsg.add(PermissionUtils.LIVE_DATA_PERMISSION_FIELD, BloombergPermissions.createEidPermissionString((int) eidValue)); } catch (Exception ex) { //ignore } } else { normalizedMsg.add(field); } } return normalizedMsg; } }