/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.core.id; import java.util.Map; import org.fudgemsg.FudgeField; import org.fudgemsg.FudgeMsg; import org.fudgemsg.MutableFudgeMsg; import org.fudgemsg.mapping.FudgeBuilder; import org.fudgemsg.mapping.FudgeBuilderFor; import org.fudgemsg.mapping.FudgeDeserializer; import org.fudgemsg.mapping.FudgeSerializer; import com.google.common.collect.Maps; import com.opengamma.id.ExternalScheme; import com.opengamma.util.fudgemsg.AbstractFudgeBuilder; /** * Fudge builder for ExternalIdOrderConfig */ @FudgeBuilderFor(ExternalIdOrderConfig.class) public class ExternalIdOrderConfigFudgeBuilder extends AbstractFudgeBuilder implements FudgeBuilder<ExternalIdOrderConfig> { @Override public MutableFudgeMsg buildMessage(FudgeSerializer serializer, ExternalIdOrderConfig object) { final MutableFudgeMsg msg = serializer.newMessage(); for (Map.Entry<ExternalScheme, Integer> entry : object.getRateMap().entrySet()) { final MutableFudgeMsg entryMsg = serializer.newMessage(); serializer.addToMessage(entryMsg, "scheme", null, entry.getKey().getName()); serializer.addToMessage(entryMsg, "rating", null, entry.getValue()); serializer.addToMessage(msg, "entry", null, entryMsg); } return msg; } @Override public ExternalIdOrderConfig buildObject(FudgeDeserializer deserializer, FudgeMsg message) { Map<ExternalScheme, Integer> properMap = Maps.newHashMap(); for (FudgeField field : message.getAllByName("entry")) { FudgeMsg entryMsg = deserializer.fieldValueToObject(FudgeMsg.class, field); ExternalScheme scheme = ExternalScheme.of(entryMsg.getString("scheme")); int rating = entryMsg.getInt("rating"); properMap.put(scheme, rating); } ExternalIdOrderConfig config = new ExternalIdOrderConfig(); config.setRateMap(properMap); return config; } }