/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.core;
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;
/**
* Fudge builder for {@link Mappings}.
*/
@FudgeBuilderFor(Mappings.class)
public class MappingsFudgeBuilder implements FudgeBuilder<Mappings> {
private static final String ITEM = "item";
private static final String VALUE = "value";
private static final String MAPPING = "mapping";
@Override
public MutableFudgeMsg buildMessage(FudgeSerializer serializer, Mappings mappings) {
MutableFudgeMsg msg = serializer.newMessage();
for (Map.Entry<String, String> entry : mappings.getMappings().entrySet()) {
MutableFudgeMsg itemMsg = serializer.newMessage();
itemMsg.add(VALUE, entry.getKey());
itemMsg.add(MAPPING, entry.getValue());
serializer.addToMessage(msg, ITEM, null, itemMsg);
}
return msg;
}
@Override
public Mappings buildObject(FudgeDeserializer deserializer, FudgeMsg msg) {
Map<String, String> mappings = Maps.newHashMap();
for (FudgeField itemField : msg.getAllByName(ITEM)) {
FudgeMsg itemMsg = (FudgeMsg) itemField.getValue();
String value = deserializer.fieldValueToObject(String.class, itemMsg.getByName(VALUE));
String mapping = deserializer.fieldValueToObject(String.class, itemMsg.getByName(MAPPING));
mappings.put(value, mapping);
}
return new Mappings(mappings);
}
}