/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.web.json; import com.opengamma.engine.view.ViewDefinition; import com.opengamma.livedata.UserPrincipal; import com.opengamma.util.ArgumentChecker; import com.opengamma.util.money.Currency; /** * Custom JSON builder to convert ViewDefinition to JSON object and back again */ public final class ViewDefinitionJSONBuilder extends AbstractJSONBuilder<ViewDefinition> { /** * Singleton */ public static final ViewDefinitionJSONBuilder INSTANCE = new ViewDefinitionJSONBuilder(); /** * JSON template */ private static final String TEMPLATE = createTemplate(); /** * Restricted constructor */ private ViewDefinitionJSONBuilder() { } @Override public ViewDefinition fromJSON(final String json) { ArgumentChecker.notNull(json, "JSON document"); return fromJSON(ViewDefinition.class, json); } @Override public String toJSON(final ViewDefinition viewDefinition) { ArgumentChecker.notNull(viewDefinition, "viewDefinition"); return fudgeToJson(viewDefinition); } private static String createTemplate() { ViewDefinitionJSONBuilder builder = ViewDefinitionJSONBuilder.INSTANCE; return builder.toJSON(getBlankView()); } private static ViewDefinition getBlankView() { ViewDefinition blank = new ViewDefinition("Untitled", new UserPrincipal("", "")); blank.setDefaultCurrency(Currency.GBP); blank.setMaxDeltaCalculationPeriod(0L); blank.setMaxFullCalculationPeriod(0L); blank.setMinDeltaCalculationPeriod(0L); blank.setMinFullCalculationPeriod(0L); blank.addPortfolioRequirementName("", "", ""); return blank; } @Override public String getTemplate() { return TEMPLATE; } }