package de.fhb.autobday.manager.account;
import de.fhb.autobday.data.AbdAccount;
import de.fhb.autobday.data.AbdGroup;
import de.fhb.autobday.exception.account.AccountAlreadyExsistsException;
import de.fhb.autobday.exception.account.AccountNotFoundException;
import de.fhb.autobday.exception.commons.CouldNotDecryptException;
import de.fhb.autobday.exception.commons.CouldNotLoadMasterPasswordException;
import de.fhb.autobday.exception.connector.ConnectorCouldNotLoginException;
import de.fhb.autobday.exception.connector.ConnectorInvalidAccountException;
import de.fhb.autobday.exception.connector.ConnectorNoConnectionException;
import de.fhb.autobday.exception.connector.ConnectorRequestFailedException;
import de.fhb.autobday.exception.user.NoValidUserNameException;
import de.fhb.autobday.exception.user.UserNotFoundException;
import java.util.List;
import javax.ejb.Local;
/**
*
* The AccountManager processes all accountData specific things.
*
* @author Michael Koppen mail: koppen@fh-brandenburg.de
* @author Andy Klay mail: klay@fh-brandenburg.de
*
*/
@Local
public interface AccountManagerLocal {
/**
* add a account of a user
*
* @param abdUserId
* @param password
* @param userName
* @param type
* @return the currently added Account
* @throws UserNotFoundException
* @throws AccountAlreadyExsistsException
* @throws NoValidUserNameException
* @throws CouldNotLoadMasterPasswordException
* @throws CouldNotDecryptException
*/
AbdAccount addAccount(int abdUserId, String password, String userName, String type)
throws UserNotFoundException, AccountAlreadyExsistsException, NoValidUserNameException, CouldNotLoadMasterPasswordException, CouldNotDecryptException;
/**
* remove a account of a user by a AbdAccountobject
*
* @param account - AbdAccount
* @throws AccountNotFoundException
*/
void removeAccount(AbdAccount account)
throws AccountNotFoundException;
/**
* remove a account of a user by a accountid
*
* @param accountId - int
* @throws AccountNotFoundException
*/
void removeAccount(int accountId)
throws AccountNotFoundException;
/**
* import all groups and contacts
*
* @param accountId
* @return errorStack
* @throws AccountNotFoundException
* @throws ConnectorCouldNotLoginException
* @throws ConnectorInvalidAccountException
* @throws ConnectorNoConnectionException
*/
List<String> importGroupsAndContacts(int accountId)
throws AccountNotFoundException, ConnectorCouldNotLoginException, ConnectorInvalidAccountException, ConnectorNoConnectionException, ConnectorRequestFailedException, CouldNotDecryptException, CouldNotLoadMasterPasswordException;
/**
* update all groups and contacts
*
* @param accountId
* @return errorStack
* @throws AccountNotFoundException
* @throws ConnectorCouldNotLoginException
* @throws ConnectorInvalidAccountException
* @throws ConnectorNoConnectionException
*/
List<String> updateGroupsAndContacts(int accountId)
throws AccountNotFoundException, ConnectorCouldNotLoginException, ConnectorInvalidAccountException, ConnectorNoConnectionException, ConnectorRequestFailedException, CouldNotDecryptException, CouldNotLoadMasterPasswordException;
/**
* get all groups of a specific account by a AbdAccountobject
*
* @param account
* @return List<AbdGroup>
* @throws AccountNotFoundException
*/
List<AbdGroup> getAllGroupsFromAccount(AbdAccount account)
throws AccountNotFoundException;
/**
* get all groups of a specific account by a accountid
*
* @param accountId
* @return List<AbdGroup>
* @throws AccountNotFoundException
*/
List<AbdGroup> getAllGroupsFromAccount(int accountId)
throws AccountNotFoundException;
}