/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.master.historicaltimeseries.impl;
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;
/**
* Builder for converting object instances to/from Fudge messages.
*/
@FudgeBuilderFor(HistoricalTimeSeriesRatingRule.class)
public class HistoricalTimeSeriesRatingRuleFudgeBuilder implements FudgeBuilder<HistoricalTimeSeriesRatingRule> {
/** Field name. */
public static final String FIELD_NAME_FIELD_NAME = "fieldName";
/** Field name. */
public static final String FIELD_VALUE_FIELD_NAME = "fieldValue";
/** Field name. */
public static final String RATING_FIELD_NAME = "rating";
@Override
public MutableFudgeMsg buildMessage(FudgeSerializer serializer, HistoricalTimeSeriesRatingRule object) {
MutableFudgeMsg message = serializer.newMessage();
message.add(FIELD_NAME_FIELD_NAME, object.getFieldName());
message.add(FIELD_VALUE_FIELD_NAME, object.getFieldValue());
message.add(RATING_FIELD_NAME, object.getRating());
return message;
}
@Override
public HistoricalTimeSeriesRatingRule buildObject(FudgeDeserializer deserializer, FudgeMsg message) {
String fieldName = message.getString(FIELD_NAME_FIELD_NAME);
if (fieldName == null) {
throw new IllegalArgumentException("Fudge message is not a HistoricalTimeSeriesRatingRule - field 'fieldName' is not present");
}
String fieldValue = message.getString(FIELD_VALUE_FIELD_NAME);
if (fieldValue == null) {
throw new IllegalArgumentException("Fudge message is not a HistoricalTimeSeriesRatingRule - field 'fieldValue' is not present");
}
Integer rating = message.getInt(RATING_FIELD_NAME);
if (rating == null) {
throw new IllegalArgumentException("Fudge message is not a HistoricalTimeSeriesRatingRule - field 'rating' is not present");
}
return HistoricalTimeSeriesRatingRule.of(fieldName, fieldValue, rating);
}
}