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);
}
}