package com.ibm.dayofweek; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import com.ibm.dayofweek.DateData; /** * @version 1.0 * @author */ public class ComputeDayAction extends Action { /** * Constructor */ public ComputeDayAction() { super(); } public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionErrors errors = new ActionErrors(); ActionForward forward = new ActionForward(); // return value DateData dateData = (DateData) form; int year; int month; int day; int dayOfWeek; int valcen; int valleap; int valyear; int valmon; int valday; int[] centuries = new int[4]; int[] months = new int[13]; String[] daysOfWeek = new String[7]; centuries[0] = 2; centuries[1] = 0; centuries[2] = 5; centuries[3] = 3; months[1] = 5; months[2] = 1; months[3] = 0; months[4] = 3; months[5] = 5; months[6] = 1; months[7] = 3; months[8] = 6; months[9] = 2; months[10] = 4; months[11] = 0; months[12] = 2; daysOfWeek[0] = "Sunday"; daysOfWeek[1] = "Monday"; daysOfWeek[2] = "Tuesday"; daysOfWeek[3] = "Wednesday"; daysOfWeek[4] = "Thursday"; daysOfWeek[5] = "Friday"; daysOfWeek[6] = "Saturday"; try { day = dateData.getDay(); month = dateData.getMonth(); year = dateData.getYear(); if (month < 3) { year--; // Subtract 1 from year } valcen = centuries[year / 100 % 4]; valleap = year % 100 / 4; valyear = year % 100 % 7; valmon = months[month]; valday = day % 7; dayOfWeek = valcen + valleap + valyear + valmon + valday; dayOfWeek = dayOfWeek % 7; dateData.setDayOfWeek(daysOfWeek[dayOfWeek]); request.setAttribute("dateData", dateData); } catch (Exception e) { // Report the error using the appropriate name and ID. errors.add("name", new ActionError("id")); e.printStackTrace(); } // If a message is required, save the specified key(s) // into the request for use by the <struts:errors> tag. if (!errors.isEmpty()) { saveErrors(request, errors); forward = mapping.findForward("failure"); } else { forward = mapping.findForward("success"); } // Finish with return (forward); } }