/*
 * 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 integration;

import ilog.tgo.model.IltAlarm;

import java.util.List;

/**
 * This interface provides access to alarms based on managed
 * objects and alarm primary keys.
 */
public interface AlarmProvider {
  /**
   * Returns all alarms associated with a managed object in
   * the network data source.
   */
  public List<IltAlarm> getNetworkAlarms(Object moid);

  /**
   * Returns all alarms of a given severity associated with 
   * a managed object in the network data source.
   */
  public List<IltAlarm> getNetworkAlarms(Object moid, IltAlarm.Severity sev);

  /**
   * Returns all alarms associated with a managed object in
   * the inventory data source.
   */
  public List<IltAlarm> getInventoryAlarms(Object moid);

  /**
   * Returns all alarms of a given severity associated with 
   * a managed object in the inventory data source.
   */
  public List<IltAlarm> getInventoryAlarms(Object moid, IltAlarm.Severity sev);

  /**
   * Returns all alarms associated with a managed object in
   * the services data source.
   */
  public List<IltAlarm> getServicesAlarms(Object moid);

  /**
   * Returns all alarms of a given severity associated with 
   * a managed object in the services data source.
   */
  public List<IltAlarm> getServicesAlarms(Object moid, IltAlarm.Severity sev);

  /**
   * Returns all alarms associated with a managed object in
   * the services-network data source.
   */
  public List<IltAlarm> getServicesNetworkAlarms(Object moid);

  /**
   * Returns all alarms of a given severity associated with 
   * a managed object in the services-network data source.
   */
  public List<IltAlarm> getServicesNetworkAlarms(Object moid, IltAlarm.Severity sev);

  /**
   * Returns the alarm identifier corresponding to a given alarm primary key.
   */
  public Object getAlarm(String primaryKey);

  /**
   * Returns all alarms identifiers corresponding to list of alarm primary keys.
   */
  public List<Object> getAlarms(List<Object> primaryKeys);
}