/**
*
*/
package net.agef.jobexchange.application;
import java.util.ArrayList;
import java.util.List;
import net.agef.jobexchange.domain.DataProvider;
import net.agef.jobexchange.domain.LoginUser;
import net.agef.jobexchange.domain.OrganisationRoleData;
import net.agef.jobexchange.domain.User;
import net.agef.jobexchange.exceptions.APDUserNotFoundException;
import net.agef.jobexchange.exceptions.CantChangeOnlineStateException;
import net.agef.jobexchange.exceptions.CobraUserNotFoundException;
import net.agef.jobexchange.exceptions.InwentUserNotFoundException;
import net.agef.jobexchange.exceptions.ObjectNotDeletedException;
import net.agef.jobexchange.exceptions.ObjectNotSavedException;
import net.agef.jobexchange.exceptions.PassedAttributeIsNullException;
import net.agef.jobexchange.integration.DataProviderDAO;
import net.agef.jobexchange.integration.UserDAO;
/**
* @author Administrator
*
*/
public class UserWorkerHandler implements UserWorker{
private UserDAO userDAO;
private DataProviderDAO dataProviderDAO;
public UserWorkerHandler(UserDAO userDAO, DataProviderDAO dataProviderDAO){
this.userDAO = userDAO;
this.dataProviderDAO = dataProviderDAO;
}
@Override
public void addUser(User user) throws ObjectNotSavedException, PassedAttributeIsNullException {
if (user != null) {
try {
userDAO.doSave(user);
} catch (Exception e) {
e.printStackTrace();
throw new ObjectNotSavedException(user.getId().toString());
}
}else throw new PassedAttributeIsNullException();
}
@Override
public void addUser(User user, DataProvider dataProvider) throws ObjectNotSavedException, PassedAttributeIsNullException{
if (user != null && dataProvider != null) {
user.setDataProvider(dataProviderDAO.doRetrieve(dataProvider
.getId(), false));
try {
userDAO.doSave(user);
} catch (Exception e) {
e.printStackTrace();
throw new ObjectNotSavedException(user.getId().toString());
}
} else throw new PassedAttributeIsNullException();
}
@Override
public void deleteUser(User user) throws ObjectNotDeletedException, PassedAttributeIsNullException {
if (user != null) {
try {
userDAO.doDelete(user);
} catch (Exception e) {
e.printStackTrace();
throw new ObjectNotDeletedException();
}
} else throw new PassedAttributeIsNullException();
}
@Override
public void deleteUser(Long userId) throws ObjectNotDeletedException, PassedAttributeIsNullException{
if (userId != null) {
try {
userDAO.doDelete(userId);
} catch (Exception e) {
e.printStackTrace();
throw new ObjectNotDeletedException(userId.toString());
}
} else throw new PassedAttributeIsNullException();
}
@Override
public void modifyUser(User user) throws ObjectNotSavedException, PassedAttributeIsNullException {
if (user != null) {
try {
userDAO.doSave(user);
} catch (Exception e) {
e.printStackTrace();
throw new ObjectNotSavedException(user.getId().toString());
}
} else throw new PassedAttributeIsNullException();
}
@Override
public User getUserByAPDId(Long userId) throws APDUserNotFoundException {
User user = userDAO.findAPDUserByID(userId);
if(user !=null){
return user;
} else throw new APDUserNotFoundException(String.valueOf(userId));
}
@Override
public User getUserByCobraId(Long userId, boolean isOrganisationUser) throws CobraUserNotFoundException {
User user = userDAO.findCobraUserByID(userId, isOrganisationUser);
if(user !=null){
return user;
} else throw new CobraUserNotFoundException(userId.toString());
}
@Override
public User getUserByInwentId(Long userId) throws InwentUserNotFoundException {
User user = userDAO.findInwentUserByID(userId);
if(user !=null){
return user;
} else throw new InwentUserNotFoundException(String.valueOf(userId));
}
@Override
public void switchContactAddressByAPDUserId(Long apdUserId) throws APDUserNotFoundException, ObjectNotSavedException {
User user = userDAO.findAPDUserByID(apdUserId);
if(user !=null){
user.setCurrentAddress(!user.getCurrentAddress());
} else throw new APDUserNotFoundException(apdUserId.toString());
try {
userDAO.doSave(user);
} catch (Exception e) {
e.printStackTrace();
throw new ObjectNotSavedException();
}
}
@Override
public void setUserOnlineStatus(User user, Boolean onlineStatus) throws ObjectNotSavedException, CantChangeOnlineStateException {
if(user != null && onlineStatus != null ){ //&& user.getOnlineStatus()!= onlineStatus -> auskommentieren um true als Rückgabewert für CobraDB zu haben
user.setOnlineStatus(onlineStatus);
try {
userDAO.doSave(user);
} catch (Exception e) {
e.printStackTrace();
throw new ObjectNotSavedException();
}
} else throw new CantChangeOnlineStateException();
}
public List<User> getOrganisationUserByLoginUser(LoginUser user) throws PassedAttributeIsNullException{
if(user !=null){
return user.getProvidedOrganisations();
} throw new PassedAttributeIsNullException();
}
public List<OrganisationRoleData> getOrganisationUserDataByLoginUser(LoginUser user) throws PassedAttributeIsNullException{
if (user != null) {
List<User> orgUser = user.getProvidedOrganisations();
List<OrganisationRoleData> orgRoleData;
if (orgUser != null) {
orgRoleData = new ArrayList<OrganisationRoleData>();
for (int i = 0; i < orgUser.size(); i++) {
orgRoleData.add((OrganisationRoleData) orgUser.get(i)
.getUserRoleData());
}
} else
return null;
return orgRoleData;
} throw new PassedAttributeIsNullException();
}
}