/*
 * Licensed Materials - Property of Rogue Wave Software, Inc. 
 * © Copyright Rogue Wave Software, Inc. 2014, 2015 
 * © Copyright IBM Corp. 2009, 2014
 * © Copyright ILOG 1996, 2009
 * All Rights Reserved.
 *
 * Note to U.S. Government Users Restricted Rights:
 * The Software and Documentation were developed at private expense and
 * are "Commercial Items" as that term is defined at 48 CFR 2.101,
 * consisting of "Commercial Computer Software" and
 * "Commercial Computer Software Documentation", as such terms are
 * used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4,
 * as applicable.
 */

package monitoring.web.model.integration;

import ilog.cpl.datasource.IlpDefaultDataSource;
import ilog.cpl.model.IlpObject;
import ilog.cpl.util.IlpFilter;

/**
 * A data model provider that serves the role of adapting/integrating the TGO data model
 * (IlpDataSource) into an external data model. 
 */
public interface IntegratedDataModelProvider {

  /**
   * Sets the data source that is to be integrated.
   */
  public void setDataSource(IlpDefaultDataSource dataSource);

  /**
   * Returns the data source that is being integrated.
   */
  public IlpDefaultDataSource getDataSource();

  /**
   * Sets an <code>IlpFilter</code> that is used to filter the objects that are 
   * to be integrated in the data source. 
   */
  public void setFilter(IlpFilter filter);

  /**
   * Returns the <code>IlpFilter</code> that is being used to filter the objects 
   * that are to be integrated in the data source. 
   */
  public IlpFilter getFilter();

  /**
   * Causes the model provider to "refresh" the integrated model, by rebuilding it. 
   */
  public void refreshModel();

  /**
   * Returns the integrated data model.
   * 
   */
  public Object getDataModel();

  /**
   * Returns the integrated model object for the given TGO object.
   */
  public Object getModelObject(IlpObject tgoObject);
}