Package com.opengamma.financial.user

Source Code of com.opengamma.financial.user.AbstractFinancialUserMaster

/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.user;

import com.opengamma.core.change.ChangeEvent;
import com.opengamma.core.change.ChangeListener;
import com.opengamma.core.change.ChangeType;
import com.opengamma.id.ObjectId;
import com.opengamma.master.AbstractChangeProvidingMaster;
import com.opengamma.master.AbstractDocument;

/**
* Base class for wrapping masters to trap calls to record user based information,
* allowing clean up and hooks for access control logics if needed.
*
* @param <D>  the type of the document
*/
public abstract class AbstractFinancialUserMaster<D extends AbstractDocument> implements AbstractChangeProvidingMaster<D> {

  /**
   * The user name.
   */
  private final String _userName;
  /**
   * The client name.
   */
  private final String _clientName;
  /**
   * The tracker.
   */
  private final FinancialUserDataTracker _tracker;
  /**
   * The data type.
   */
  private final FinancialUserDataType _type;


  private void setupChangeListener() {
    changeManager().addChangeListener(new ChangeListener() {
      @Override
      public void entityChanged(ChangeEvent event) {
        if (event.getType().equals(ChangeType.REMOVED)) {
          _tracker.deleted(_userName, _clientName, _type, event.getObjectId());
        } else if (event.getType().equals(ChangeType.ADDED)) {
          _tracker.created(_userName, _clientName, _type, event.getObjectId());
        }
      }
    });
  }

  /**
   * Creates an instance.
   *
   * @param userName  the user name, not null
   * @param clientName  the client name, not null
   * @param tracker  the tracker, not null
   * @param type  the data type, not null
   */
  public AbstractFinancialUserMaster(String userName, String clientName, FinancialUserDataTracker tracker, FinancialUserDataType type) {
    _userName = userName;
    _clientName = clientName;
    _tracker = tracker;
    _type = type;
  }
 
  protected void init() {
    setupChangeListener();
  }

  /**
   * Creates an instance.
   *
   * @param client  the client, not null
   * @param type  the data type, not null
   */
  public AbstractFinancialUserMaster(FinancialClient client, FinancialUserDataType type) {
    _userName = client.getUserName();
    _clientName = client.getClientName();
    _tracker = client.getUserDataTracker();
    _type = type;
  }

  //-------------------------------------------------------------------------
  protected void created(ObjectId oid) {
    _tracker.created(_userName, _clientName, _type, oid);
  }

  protected void deleted(ObjectId oid) {
    _tracker.deleted(_userName, _clientName, _type, oid);
  }

}
TOP

Related Classes of com.opengamma.financial.user.AbstractFinancialUserMaster

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.