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 { /** * コンストラクター */ public ComputeDayAction() { super(); } public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionErrors errors = new ActionErrors(); ActionForward forward = new ActionForward(); // 戻り値 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] = "日曜日"; daysOfWeek[1] = "月曜日"; daysOfWeek[2] = "火曜日"; daysOfWeek[3] = "水曜日"; daysOfWeek[4] = "木曜日"; daysOfWeek[5] = "金曜日"; daysOfWeek[6] = "土曜日"; try { day = dateData.getDay(); month = dateData.getMonth(); year = dateData.getYear(); if (month < 3) { year--; // 年から 1 を減算 } 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) { // 適切な名前と ID を使用してエラーを報告します。 errors.add("name", new ActionError("id")); e.printStackTrace(); } // メッセージが必要とされる場合は、<struts:errors> タグ // で使用される指定のキーを、リクエストに保管します。 if (!errors.isEmpty()) { saveErrors(request, errors); forward = mapping.findForward("failure"); } else { forward = mapping.findForward("success"); } // リターンして終了 return (forward); } }