/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.web.analytics; import java.util.List; import com.opengamma.core.position.Portfolio; import com.opengamma.engine.value.ValueRequirement; import com.opengamma.engine.view.ViewResultModel; import com.opengamma.engine.view.compilation.CompiledViewDefinition; import com.opengamma.engine.view.cycle.ViewCycle; import com.opengamma.id.UniqueId; import com.opengamma.util.ArgumentChecker; import com.opengamma.web.analytics.formatting.TypeFormatter; import com.opengamma.web.analytics.push.UpdateListener; /** * View implementation that delegates operations to another view, catches any exceptions and notifies the client. */ /* package */ class CatchingAnalyticsView implements AnalyticsView { private final AnalyticsView _delegate; private final ErrorManager _errorManager; private final UpdateListener _listener; /* package */ CatchingAnalyticsView(AnalyticsView delegate, ErrorManager errorManager, UpdateListener listener) { ArgumentChecker.notNull(delegate, "delegate"); ArgumentChecker.notNull(errorManager, "errorManager"); ArgumentChecker.notNull(listener, "listener"); _errorManager = errorManager; _listener = listener; _delegate = delegate; } @Override public List<String> updateStructure(CompiledViewDefinition compiledViewDefinition, Portfolio resolvedPortfolio) { try { return _delegate.updateStructure(compiledViewDefinition, resolvedPortfolio); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public String viewCompilationFailed(Throwable ex) { try { return _delegate.viewCompilationFailed(ex); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public List<String> updateResults(ViewResultModel results, ViewCycle viewCycle) { try { return _delegate.updateResults(results, viewCycle); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public GridStructure getGridStructure(GridType gridType, int viewportId) { try { return _delegate.getGridStructure(gridType, viewportId); } catch (Exception e) { throw e; } } @Override public GridStructure getInitialGridStructure(GridType gridType) { try { return _delegate.getInitialGridStructure(gridType); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public boolean createViewport(int requestId, GridType gridType, int viewportId, String callbackId, String structureCallbackId, ViewportDefinition viewportDefinition) { try { return _delegate.createViewport(requestId, gridType, viewportId, callbackId, structureCallbackId, viewportDefinition); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public String updateViewport(GridType gridType, int viewportId, ViewportDefinition viewportDefinition) { try { return _delegate.updateViewport(gridType, viewportId, viewportDefinition); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public void deleteViewport(GridType gridType, int viewportId) { try { _delegate.deleteViewport(gridType, viewportId); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public ViewportResults getData(GridType gridType, int viewportId) { try { return _delegate.getData(gridType, viewportId); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public GridStructure getGridStructure(GridType gridType, int graphId, int viewportId) { try { return _delegate.getGridStructure(gridType, graphId, viewportId); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public GridStructure getInitialGridStructure(GridType gridType, int graphId) { try { return _delegate.getInitialGridStructure(gridType, graphId); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public void openDependencyGraph(int requestId, GridType gridType, int graphId, String callbackId, int row, int col) { try { _delegate.openDependencyGraph(requestId, gridType, graphId, callbackId, row, col); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public void openDependencyGraph(int requestId, GridType gridType, int graphId, String callbackId, String calcConfigName, ValueRequirement valueRequirement) { try { _delegate.openDependencyGraph(requestId, gridType, graphId, callbackId, calcConfigName, valueRequirement); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public void closeDependencyGraph(GridType gridType, int graphId) { try { _delegate.closeDependencyGraph(gridType, graphId); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public boolean createViewport(int requestId, GridType gridType, int graphId, int viewportId, String callbackId, String structureCallbackId, ViewportDefinition viewportDefinition) { try { return _delegate.createViewport(requestId, gridType, graphId, viewportId, callbackId, structureCallbackId, viewportDefinition); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public String updateViewport(GridType gridType, int graphId, int viewportId, ViewportDefinition viewportDefinition) { try { return _delegate.updateViewport(gridType, graphId, viewportId, viewportDefinition); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public void deleteViewport(GridType gridType, int graphId, int viewportId) { try { _delegate.deleteViewport(gridType, graphId, viewportId); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public ViewportResults getData(GridType gridType, int graphId, int viewportId) { try { return _delegate.getData(gridType, graphId, viewportId); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public List<String> entityChanged(MasterChangeNotification<?> notification) { try { return _delegate.entityChanged(notification); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public List<String> portfolioChanged() { try { return _delegate.portfolioChanged(); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public ViewportResults getAllGridData(GridType gridType, TypeFormatter.Format format) { try { return _delegate.getAllGridData(gridType, format); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public UniqueId getViewDefinitionId() { try { return _delegate.getViewDefinitionId(); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public List<ErrorInfo> getErrors() { try { return _delegate.getErrors(); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } @Override public void deleteError(long errorId) { try { _delegate.deleteError(errorId); } catch (Exception e) { String id = _errorManager.add(e); _listener.itemUpdated(id); throw e; } } }