package com.iambookmaster.server.tags;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import com.google.appengine.api.datastore.KeyFactory;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
import com.iambookmaster.server.beans.JPAUser;
@SuppressWarnings("serial")
public class UserInfoTag extends MyTagSupport {
private static final String FIELD_ID="id";
private static final String FIELD_NAME="name";
private static final String FIELD_EMAIL="email";
private String item;
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
public int doStartTag() throws JspException {
UserService userService = UserServiceFactory.getUserService();
try {
if (userService.isUserLoggedIn()) {
User usr = userService.getCurrentUser();
if (FIELD_NAME.equals(item)) {
pageContext.getOut().append(usr.getNickname());
} else if (FIELD_EMAIL.equals(item)) {
pageContext.getOut().append(usr.getEmail());
} else if (FIELD_ID.equals(item)) {
Object object = getObjectByName();
if (object instanceof JPAUser) {
JPAUser user = (JPAUser) object;
pageContext.getOut().append(KeyFactory.keyToString(user.getId()));
} else {
throw new JspException(getName()+" is not a JPAUser");
}
} else {
throw new JspException("Unknown attribute "+getName());
}
} else {
throw new JspException("User is not logged");
}
} catch (IOException e) {
throw new JspException(e.getMessage(),e);
}
return SKIP_BODY;
}
}