package in.partake.controller.action.user;
import in.partake.base.PartakeException;
import in.partake.controller.action.AbstractPartakeAction;
import in.partake.model.IPartakeDAOs;
import in.partake.model.UserEx;
import in.partake.model.access.DBAccess;
import in.partake.model.dao.DAOException;
import in.partake.model.dao.PartakeConnection;
import in.partake.model.daofacade.UserDAOFacade;
import in.partake.model.dto.UserPreference;
import in.partake.resource.UserErrorCode;
import play.mvc.Result;
public class ShowAction extends AbstractPartakeAction {
private String userId;
private UserEx user;
public static Result get(String userId) throws DAOException, PartakeException {
ShowAction action = new ShowAction();
action.userId = userId;
return action.execute();
}
public Result doExecute() throws DAOException, PartakeException {
checkIdParameterIsValid(userId,UserErrorCode.INVALID_NOTFOUND, UserErrorCode.INVALID_NOTFOUND);
ShowActionTransaction transaction = new ShowActionTransaction(userId);
transaction.execute();
if (!transaction.getPreference().isProfilePublic())
return render(views.html.users.showPrivate.render(context()));
user = transaction.getUser();
return render(views.html.users.show.render(context(), user));
}
public UserEx getUser() {
return user;
}
}
class ShowActionTransaction extends DBAccess<UserEx> {
private String userId;
private UserEx user;
private UserPreference pref;
public ShowActionTransaction(String userId) {
this.userId = userId;
}
@Override
protected UserEx doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
user = UserDAOFacade.getUserEx(con, daos, userId);
if (user == null)
throw new PartakeException(UserErrorCode.INVALID_NOTFOUND);
pref = daos.getUserPreferenceAccess().find(con, userId);
if (pref == null)
pref = UserPreference.getDefaultPreference(userId);
return user;
}
public UserEx getUser() {
return user;
}
public UserPreference getPreference() {
return pref;
}
}