package in.partake.controller.api.account;
import in.partake.base.PartakeException;
import in.partake.base.Util;
import in.partake.controller.api.AbstractPartakeAPI;
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.dto.UserOpenIDLink;
import in.partake.model.dto.UserPreference;
import java.util.List;
import org.codehaus.jackson.node.ObjectNode;
import play.mvc.Result;
public class GetAPI extends AbstractPartakeAPI {
public static Result get() throws DAOException, PartakeException {
return new GetAPI().execute();
}
@Override
public Result doExecute() throws DAOException, PartakeException {
UserEx user = ensureLogin();
GetAPITransaction transaction = new GetAPITransaction(user.getId());
transaction.execute();
ObjectNode obj = user.toSafeJSON();
obj.put("preference", transaction.getPreference().toSafeJSON());
obj.put("openIds", Util.toJSONArray(transaction.getOpenIds()));
return renderOK(obj);
}
}
class GetAPITransaction extends DBAccess<Void> {
private String userId;
private UserPreference preference;
private List<UserOpenIDLink> openIds;
public GetAPITransaction(String userId) {
this.userId = userId;
}
@Override
protected Void doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
preference = daos.getUserPreferenceAccess().find(con, userId);
if (preference == null)
preference = UserPreference.getDefaultPreference(userId);
openIds = daos.getOpenIDLinkageAccess().findByUserId(con, userId);
return null;
}
public UserPreference getPreference() {
return preference;
}
public List<UserOpenIDLink> getOpenIds() {
return openIds;
}
}