package costrecord;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import costrecord.jdo.Cost;
import costrecord.jdo.CostRecordManager;
import costrecord.jdo.CostRecordUtils;
import costrecord.jdo.HouseManager;
import costrecord.jdo.RoleManager;
@SuppressWarnings("serial")
public class RoleOperationServlet extends HttpServlet {
// private static final Logger log = Logger
// .getLogger(RoleOperationServlet.class.getName());
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/plain");
Long houseID = HouseManager.checkLogin(req, resp);
if ((new Long("-1")).equals(houseID)) {
return;
}
StringBuffer msg = new StringBuffer();
try {
String roleName = req.getParameter("roleName");
String operation = req.getParameter("operation");
if ("addrole".equalsIgnoreCase(operation)) {
if (CostRecordUtils.checkStringValue(roleName)) {
RoleManager.addRole(houseID, roleName);
msg.append("Role \"" + roleName + "\" created.");
} else {
msg.append("Invalid role name.");
}
} else if ("disablerole".equalsIgnoreCase(operation)) {
String roleID = req.getParameter("roleID");
if (CostRecordUtils.checkLongValue(roleID)) {
Long id = Long.valueOf(roleID);
List<Cost> costPaiedByThisRole = CostRecordManager
.getCostPaiedByRole(houseID, id);
if (costPaiedByThisRole != null
&& costPaiedByThisRole.size() > 0) {
msg.append("Unable to disable role \"" + roleName
+ "\". There are " + costPaiedByThisRole.size()
+ " cost record about this role. "
+ "Please handle them first.");
} else {
RoleManager.disableRole(id);
msg.append("Role \"" + roleName + "\" disabled.");
}
} else {
msg.append("Invalid role id.");
}
}
} catch (Exception ex) {
msg.append("Exception occured:\n");
msg.append(ex.getMessage());
} finally {
req.getSession().setAttribute("message", msg.toString());
resp.sendRedirect("/role.jsp");
}
}
}