Lesson 1.6: Editing an action mapping

Action mapping is....

Provide additional context for what they are going to learn and do in this lesson. If the lesson includes more conceptual information (which is usually a good idea) or multiple procedures, use nested concepts and tasks following the taskbody element.
Tip: Avoid writing lessons that only include procedures. You should try to always include "why" or conceptual information.

To create a new ABC:

  1. In Project Explorer, navigate to DayOfWeek > Java Resources: src > com.ibm.defaultstruts.
  2. Double-click ComputeDayAction.java.
  3. Select all of the text in the ComputeDayAction.java file, then press Delete.
  4. Copy and paste the following code into the ComputeDayAction.java file:
    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);
    
    	}
    
    }
  5. Save and close the file.
Describe or show the results of the steps they just followed.

Lesson checkpoint

It's a good idea to include this tutorialSummary section here as a checkpoint for the lesson, even if it is very brief.

Describe or summarize what was learned in this lesson. You learned the following:
  • About ABCs
  • What makes a good ABC
  • How to create an ABC using X tool