M_smgr.idl



#ifndef __PROSPECT_SUBSCRIPTION_IDLFILE_M_smgr_idl__
#define __PROSPECT_SUBSCRIPTION_IDLFILE_M_smgr_idl__




///////////////////////////////////////////////////////////////////////
//
// Subscriber Management Interface Definitions
// Description: This module defines the interface of the Subscriber
//	Management CO.
// Created: 29/7/96
// By: D.Lewis, A.DaCruz
//
///////////////////////////////////////////////////////////////////////
// Modifications:
//	Date: 29/7/96
//	By: D.Lewis
//	Reason: initial version based on TINA/TANGRAM
//		subscription models.
//
//	Date: 2/8/96
//	By: D.Lewis
//	Reason:
//		- change input paramter of modifySubscriber from
//		 t_SubscriberDetails to t_Subscriber
//		- create new interface i_sbrInfoQuery
//		- move operation getSubscriber from i_sbrMgmt to
//		 i_sbrInfoQuery
//		- add new operation modifySubscriberDetails to
//		 interface i_sbrInfoQuery
//
//	Date: 6/11/96
//	By: D.Lewis
//	Reason: 
//		- changed the return type of getSagList from t_SagIdList to
//		  t_SagList
//		- added method getAssignedSagList to interface
//		  i_SagInfoQuery. This returns only SAGs subscribed to
//		  a particular service
//
//	Date: 9/9/97
//	By: D.Lewis
//	Reason:
//		- added new operations, addSAGItem and removeSAGItem to
//		  interface i_sagMgmt
//
///////////////////////////////////////////////////////////////////////




#include "C_sub.idl"




///////////////////////////////////////////////////////////////////////
//
// begin module SubMgr
//

module SubMgr {





///////////////////////////////////////////////////////////////////////
// SubMgr Lifecycle Management Interface (i_smInit)

interface i_smInit: i_CoInit {


	void smgr_init()
		raises  (e_subAccessDenied);
};




///////////////////////////////////////////////////////////////////////
//SubMgr Management Interface (i_smMgmt)
//	This interface allows a client to set the
//	administrative state of the SubscriberManager,
//	set up the domain (set) of users to be handled
//	by a SubscriberManager

interface i_smMgmt: i_CoMgmt {};





///////////////////////////////////////////////////////////////////////
//SubMgr Subscriber Management Interface (i_sbrMgmt)
//	This interface allows a client to manage
//	subscriber information

interface i_sbrMgmt {


	void createSubscriber (
		in	t_Subscriber		subscriber,
		out	string			account_no )
		raises	(e_subAccessDenied);

		// This operation is used to create a subscriber.
		//////////////////////////////////////////////////


	void modifySubscriber (
		in	t_Subscriber		subscriber )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo);

		// This operation allows its clients to modify
		// the attributes of a particular subscriber.
		//////////////////////////////////////////////////


	void deleteSubscriber (
		in	string			account_no )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo);

		// This operation is used to delete a particular
		// Subscriber object.
		//////////////////////////////////////////////////

}; // end of i_sbrMgmt interface




///////////////////////////////////////////////////////////////////////
//SubMgr Subscriber Information Query Interface (i_sbrInfoQuery)
//	This interface allows a client to access and modify
//	non-financial subscriber information.

interface i_sbrInfoQuery {


	void listAccounts (
		out	t_AccountList		account_list )

		raises	(e_subAccessDenied);

		// This operation return the list of all accounts
		// currently held by the porvider, including those
		// with no current subscription contract
		/////////////////////////////////////////////////


	void getSubscriber (
		in	string			account_no,
		out	t_Subscriber		subscriber )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo);

	void modifySubscriberDetails (
		in	string			account_no,
		in	t_SubscriberDetails	subscriber_details )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo);

		// This operation allows its clients to modify
		// non-finacial	 attributes of a particular subscriber.
		//////////////////////////////////////////////////

}; // end of i_sbrInfoQuery interface




///////////////////////////////////////////////////////////////////////
//SubMgr Subscription Notification Interface (i_subscrnNotif)
//	This interface allows a client to notify
//	subscription/cancellation.

interface i_subscrnNotif {


	void notifySubscription (
		in	string		account_no,
		in	t_SvcId		svc_id )
		raises	(e_subAccessDenied);

		// If a SubscriptionPortfolio already exists
		// for the subscriber, then this subscription
		// is added to it. Otherwise, a SubscriptionPortfolio
		// is created and this subscription is added to it.
		//////////////////////////////////////////////////


	void notifyCancellation (
		in	string		account_no,
		in	t_SvcId		svc_id )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidSvcTemplate);

		// The result of this operation is to remove
		// a subscription for the service from a
		// SubscriptionPortfolio.
		//////////////////////////////////////////////////

}; // end of i_subscrnNotif interface




///////////////////////////////////////////////////////////////////////
//SubMgr Subscription Assignmnet Group Management Interface (i_sagMgmt)
// This interface allows a client to manage SAG

interface i_sagMgmt {


	void defineSAG (
		in	string			account_no,
		in	t_AssignGroupSelection	assign_group_selection,
		out	t_SagId			sag_group_id )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo);


		// This operation allows for the definition
		// and subsequent modification of a
		// SubscriptionAssignmentGroup.
		//////////////////////////////////////////////////


	void modifySAG (
		in	string			account_no,
		in	t_AssignGroupSelection	assign_group_selection )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidSAG);


		// This operation is used to add or delete
		// members from a SAG
		//////////////////////////////////////////////////


	void addSAGItem (
		in	string		account_no,
		in	t_SagId		sag_group_id,
		in	t_SagItem	sag_item)
	       	raises  (e_subAccessDenied,
        	         e_subInvalidAccountNo,
                	 e_subInvalidSAG);

                // This operation is used to add individual
                // members from a SAG
                //////////////////////////////////////////////////


	void removeSAGItem (
		in	string		account_no,
		in	t_SagId		sag_group_id,
		in	t_SagItem	sag_item)
	        raises  (e_subAccessDenied,
	                 e_subInvalidAccountNo,
	                 e_subInvalidSAG,
			 e_subInvalidItem);

                // This operation is used to remove individual
                // members from a SAG
                //////////////////////////////////////////////////


	void deleteSAG (
		in	string			account_no,
		in	t_SagId			sag_group_id )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidSAG);

		// This operation is used to delete a SAG
		//////////////////////////////////////////////////

}; // end of i_sagMgmt interface




///////////////////////////////////////////////////////////////////////
// SubMgr SAG Information Query Interface (i_sagInfoQuery)
//	This interface allows a client to have the
//	information SubscriptionAssignmentGroup

interface i_sagInfoQuery {


	void getSagList (
		in	string			account_no,
		out	t_SagList		sag_list )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo);

	void getAssignedSagList (
		in	string			account_no,
		in	t_SvcId			svc_id,
		out	t_SagList		sag_list )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidSvcTemplate);


	void getSAG (
		in	string			account_no,
		in	t_SagId			sag_group_id,
		out	t_AssignGroupSelection	assign_group_selection )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidSAG);


		// This operation allows its clients to get the
		// attribute values of a SubscriptionAssignmentGroup.
		//////////////////////////////////////////////////

}; // end of i_sagInfoQuery interface




///////////////////////////////////////////////////////////////////////
// SubMgr Portfolio Management Interface (i_portfolioMgmt)
//	This interface allows a client to manage
//	Subscription Portfolio

interface i_portfolioMgmt {



	void modifyPortfolio (
		in	string			account_no,
		in	t_SubscriptionPortfolio subscription_portfolio )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidPortfolio);

		// This operation is used to modify a SubscriptionPortfolio
		//////////////////////////////////////////////////


	void getPortfolio (
		in	string			account_no,
		out	t_SubscriptionPortfolio subscription_portfolio )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo);

		// This operation allows its clients to get the
		// attribute values of a SubscriptionPortfolio.
		//////////////////////////////////////////////////


	void deletePortfolio (
		in	string			account_no )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo);

		// This operation allows the SubMgr to delete
		// the SubscriptionPortfolio.
		//////////////////////////////////////////////////

}; // end of i_portfolioMgmt interface


}; // end of SubMgr Module




//
// end of module SubMgr
//
///////////////////////////////////////////////////////////////////////




#endif