module musicServer { exception NoSuchUserException { string reason; }; exception UserIDExistsException { string reason; }; enum MediaType { CD, TAPE, RECORD, NOT_SPECIFIED }; interface AlbumI { attribute string sArtistName; attribute string sAlbumName; attribute string sListeningNotes; attribute float fPrice; attribute MediaType type; }; typedef sequenceAlbumSequence; struct AlbumQueryS { string sArtistName; string sAlbumName; float fPrice; MediaType type; }; interface MusicCollectionI { attribute string sUserName; attribute string sPassword; AlbumSequence getAllAlbums(); AlbumSequence getAllAlbumsByArtistName(); AlbumSequence getAllAlbumsByAlbumName(); void addAlbum(in AlbumI album); void deleteAlbum(in AlbumI album); AlbumI obtainEmptyAlbum(); }; interface RequestorI { void albumFound(in AlbumSequence album); }; interface MusicServerI { MusicCollectionI obtainCollection(in string sUserName, in string sPassword) raises(NoSuchUserException); MusicCollectionI createCollection(in string sUserName, in string sPassword) raises(UserIDExistsException); void logOut(in MusicCollectionI collection); AlbumQueryS obtainEmptyQuery(); void searchCatalog(in AlbumQueryS query, in RequestorI requestor); void saveCollection(); }; };