/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.fudgemsg; 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 org.threeten.bp.Instant; import com.opengamma.engine.calcnode.CalculationJobSpecification; import com.opengamma.id.UniqueId; /** * Fudge message builder for {@code CalculationJobSpecification}. * * <pre> * message CalculationJobSpecification { * required UniqueId viewCycleId; // the view cycle identifier * required string calcConfig; // the calculation configuration name * required datetime valuationTime; // the valuation time * required long jobId; // the job identifier * } * </pre> */ @FudgeBuilderFor(CalculationJobSpecification.class) public class CalculationJobSpecificationFudgeBuilder implements FudgeBuilder<CalculationJobSpecification> { private static final String VIEW_CYCLE_ID_FIELD_NAME = "viewCycleId"; private static final String CALCULATION_CONFIGURATION_FIELD_NAME = "calcConfig"; private static final String VALUATION_TIME_FIELD_NAME = "valuationTime"; private static final String JOB_ID_FIELD_NAME = "jobId"; public static void buildMessageImpl(final MutableFudgeMsg msg, final CalculationJobSpecification object) { msg.add(VIEW_CYCLE_ID_FIELD_NAME, object.getViewCycleId()); msg.add(CALCULATION_CONFIGURATION_FIELD_NAME, object.getCalcConfigName()); msg.add(VALUATION_TIME_FIELD_NAME, object.getValuationTime()); msg.add(JOB_ID_FIELD_NAME, object.getJobId()); } @Override public MutableFudgeMsg buildMessage(FudgeSerializer serializer, CalculationJobSpecification object) { final MutableFudgeMsg msg = serializer.newMessage(); buildMessageImpl(msg, object); return msg; } public static CalculationJobSpecification buildObjectImpl(final FudgeMsg msg) { UniqueId viewCycleId = msg.getValue(UniqueId.class, VIEW_CYCLE_ID_FIELD_NAME); String calcConfigName = msg.getString(CALCULATION_CONFIGURATION_FIELD_NAME); Instant valuationTime = msg.getValue(Instant.class, VALUATION_TIME_FIELD_NAME); long jobId = msg.getLong(JOB_ID_FIELD_NAME); return new CalculationJobSpecification(viewCycleId, calcConfigName, valuationTime, jobId); } @Override public CalculationJobSpecification buildObject(FudgeDeserializer deserializer, FudgeMsg msg) { return buildObjectImpl(msg); } }