package de.fhb.autobday.beans;
import de.fhb.autobday.data.AbdGroup;
import de.fhb.autobday.exception.account.AccountException;
import de.fhb.autobday.exception.account.AccountNotFoundException;
import de.fhb.autobday.exception.group.GroupNotFoundException;
import de.fhb.autobday.manager.account.AccountManagerLocal;
import de.fhb.autobday.manager.group.GroupManagerLocal;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.ListDataModel;
import javax.inject.Inject;
import javax.inject.Named;
/**
* Bean for account-tasks.
*
* @author Michael Koppen mail: koppen@fh-brandenburg.de
*/
@Named
@RequestScoped
public class AccountBean {
private final static Logger LOGGER = Logger.getLogger(AccountBean.class.getName());
@Inject
private AccountManagerLocal accountManager;
@Inject
private GroupManagerLocal groupManager;
@Inject
private SessionBean sessionBean;
private ListDataModel<AbdGroup> groupList;
/**
* Creates a new instance of AccountBean
*/
public AccountBean() {
groupList = new ListDataModel<AbdGroup>();
}
/**
* will redirect to showaccount-page
* @return redirect to showaccount
*/
public String showAccount(){
return "showaccount";
}
/**
* will delete a Google-Account.
* @return redirect to index
*/
public String deleteAccount(){
try {
accountManager.removeAccount(sessionBean.getAktAccount());
sessionBean.setAktAccount(null);
FacesContext.getCurrentInstance().addMessage(
null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Successfully deleted account!", ""));
} catch (AccountException ex) {
LOGGER.log(Level.SEVERE, null, ex.getMessage());
FacesContext.getCurrentInstance().addMessage(
null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), ""));
}
return "index";
}
/**
* will get all groups from given account and format it to ListDataModel.
*/
private void getAllGroupsFromAccount(){
try {
groupList = new ListDataModel<AbdGroup>(accountManager.getAllGroupsFromAccount(sessionBean.getAktAccount()));
} catch (AccountNotFoundException ex) {
LOGGER.log(Level.SEVERE, null, ex.getMessage());
FacesContext.getCurrentInstance().addMessage(
null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), ""));
}
}
public ListDataModel<AbdGroup> getGroupList() {
getAllGroupsFromAccount();
return groupList;
}
public void setGroupList(ListDataModel<AbdGroup> groupList) {
this.groupList = groupList;
}
/**
* will toggle group active/deaktive
* @return reload aktSite
*/
public String toggleGroupActivation() {
AbdGroup aktGroup = groupList.getRowData();
String infoString = "";
boolean toggle = false;
if (aktGroup.getActive()) {
infoString = "deactivated";
toggle=false;
}else{
infoString = "activated";
toggle=true;
}
try {
groupManager.setActive(aktGroup, toggle);
FacesContext.getCurrentInstance().addMessage(
null, new FacesMessage(FacesMessage.SEVERITY_INFO, "You successfully "+infoString+" this Group!", ""));
} catch (GroupNotFoundException ex) {
LOGGER.log(Level.SEVERE, null, ex.getMessage());
FacesContext.getCurrentInstance().addMessage(
null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), ""));
}
return null;
}
}