edu.cornell.mannlib.vitro.webapp.controller.edit.ApplicationBeanRetryController.java Source code

Java tutorial

Introduction

Here is the source code for edu.cornell.mannlib.vitro.webapp.controller.edit.ApplicationBeanRetryController.java

Source

/* $This file is distributed under the terms of the license in /doc/license.txt$ */

package edu.cornell.mannlib.vitro.webapp.controller.edit;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import edu.cornell.mannlib.vedit.beans.EditProcessObject;
import edu.cornell.mannlib.vedit.beans.FormObject;
import edu.cornell.mannlib.vedit.beans.Option;
import edu.cornell.mannlib.vedit.controller.BaseEditController;
import edu.cornell.mannlib.vedit.util.FormUtils;
import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission;
import edu.cornell.mannlib.vitro.webapp.beans.ApplicationBean;
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.dao.ApplicationDao;

public class ApplicationBeanRetryController extends BaseEditController {

    private static final Log log = LogFactory.getLog(ApplicationBeanRetryController.class.getName());

    public void doPost(HttpServletRequest req, HttpServletResponse response) {

        if (!isAuthorizedToDisplayPage(req, response, SimplePermission.EDIT_SITE_INFORMATION.ACTION)) {
            return;
        }

        VitroRequest request = new VitroRequest(req);

        try {
            super.doGet(request, response);
        } catch (Exception e) {
            log.error(e, e);
        }

        //create an EditProcessObject for this and put it in the session
        EditProcessObject epo = super.createEpo(request);

        epo.setBeanClass(ApplicationBean.class);

        String action = "update";

        ApplicationDao aDao = request.getUnfilteredWebappDaoFactory().getApplicationDao();
        ApplicationBean applicationForEditing = aDao.getApplicationBean();
        epo.setDataAccessObject(aDao);

        if (!epo.getUseRecycledBean()) {
            action = "update";
            epo.setOriginalBean(applicationForEditing);
        } else {
            applicationForEditing = (ApplicationBean) epo.getNewBean();
            action = "update";
            log.debug("using newBean");
        }

        //set the getMethod so we can retrieve a new bean after we've inserted it
        try {
            epo.setGetMethod(aDao.getClass().getDeclaredMethod("getApplicationBean"));
        } catch (NoSuchMethodException e) {
            log.error("could not find the getApplicationBean method in the facade");
        }

        FormObject foo = new FormObject();
        foo.setErrorMap(epo.getErrMsgMap());

        HashMap optionMap = new HashMap();

        List<Option> themeOptions = getThemeOptions(applicationForEditing);
        optionMap.put("ThemeDir", themeOptions);

        foo.setOptionLists(optionMap);

        epo.setFormObject(foo);
        FormUtils.populateFormFromBean(applicationForEditing, epo.getAction(), foo);

        RequestDispatcher rd = request.getRequestDispatcher(Controllers.BASIC_JSP);
        request.setAttribute("bodyJsp", "/templates/edit/formContact.jsp");
        request.setAttribute("formJsp", "/templates/edit/specific/applicationBean_retry.jsp");
        request.setAttribute("scripts", "/templates/edit/formBasic.js");
        request.setAttribute("title", "Site Information");
        request.setAttribute("_action", action);
        request.setAttribute("unqualifiedClassName", "ApplicationBean");
        setRequestAttributes(request, epo);

        try {
            rd.forward(request, response);
        } catch (Exception e) {
            log.error(e, e);
        }

    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        doPost(request, response);
    }

    /**
     * Returns a list of Option objects for valid themes in the application, based on names of subdirectories
     * of the "/themes" directory.
     * 
     * @return list of Options for valid themes
     */
    private final List<Option> getThemeOptions(ApplicationBean application) {

        // Get the available themes
        ServletContext sc = getServletContext();
        boolean doSort = true;
        List<String> themeNames = ApplicationBean.themeInfo.getThemeNames();

        // Create the list of theme Options
        String currentThemeDir = application.getThemeDir();
        Iterator<String> i = themeNames.iterator();
        List<Option> themeOptions = new ArrayList<Option>(themeNames.size());
        String themeName, themeDir;
        boolean selected;
        while (i.hasNext()) {
            themeName = i.next();
            themeDir = "themes/" + themeName + "/";
            selected = themeDir.equals(currentThemeDir);
            themeOptions.add(new Option(themeDir, themeName, selected));
        }

        return themeOptions;
    }

}