Package com.apress.progwt.server.web.controllers

Source Code of com.apress.progwt.server.web.controllers.SimpleAnnotatedController

/*
* Copyright 2008 Jeff Dwyer
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.apress.progwt.server.web.controllers;

import java.io.IOException;
import java.io.Writer;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.apress.progwt.client.domain.School;
import com.apress.progwt.server.service.SchoolService;
import com.apress.progwt.server.service.UserService;

/**
* Even with the Spring 2.5 enhancements in convention over configuration,
* using XML each page still requires a bean definition and a
* corresponding (if empty) class that extends Controller. Using
* annotations we can map many URLs is this one class easily.
*
* See how we can map requests here. We can get almost anything we desire
* from the request to streams, to model and binding errors just by asking
* in the method signature.
* http://static.springframework.org/spring/docs/2.5.x/reference/mvc.html#mvc-ann-requestmapping
*
* @author Jeff Dwyer
*
*/
@Controller
public class SimpleAnnotatedController {
    private static final Logger log = Logger
            .getLogger(SimpleAnnotatedController.class);

    private UserService userService;
    private SchoolService schoolService;

    @RequestMapping("/acknowledgements.html")
    public ModelMap acknowledgementsHandler(HttpServletRequest req) {
        return ControllerUtil.getModelMap(req, userService);
    }

    @RequestMapping("/calculator.html")
    public ModelMap calculatorHandler(HttpServletRequest req) {
        return ControllerUtil.getModelMap(req, userService);
    }

    @RequestMapping("/terms.html")
    public ModelMap termsHandler(HttpServletRequest req) {
        return ControllerUtil.getModelMap(req, userService);
    }

    @RequestMapping("/contact.html")
    public ModelMap contactHandler(HttpServletRequest req) {
        return ControllerUtil.getModelMap(req, userService);
    }

    @RequestMapping("/about.html")
    public ModelMap aboutHandler(HttpServletRequest req) {
        return ControllerUtil.getModelMap(req, userService);

    }
    @RequestMapping("/congratulations.html")
    public ModelMap congratulationsHandler(HttpServletRequest req) {
        return ControllerUtil.getModelMap(req, userService);

    }

    @RequestMapping("/users.html")
    public ModelMap usersHandler(HttpServletRequest req) {
        ModelMap rtn = ControllerUtil.getModelMap(req, userService);

        rtn.addAttribute("topUsers", userService.getTopUsers(20));

        return rtn;
    }

    /**
     * this is the gwtLoginTargetURL. When GWT does a form based login, it
     * will redirect here. GWT can then read this 'ok' in to know that it
     * was ok.
     *
     * @param w
     * @throws IOException
     */
    @RequestMapping("/secure/gwtLoginOK.html")
    public void gwtLoginHandler(Writer w) throws IOException {
        w.write("OK");
        w.close();
    }

    /**
     *
     * @param req
     * @param startLetter -
     *            if unavailable, show 'topschools'
     * @param start -
     *            paging start
     * @return
     */
    @RequestMapping("/schools.html")
    public ModelMap schoolsHandler(HttpServletRequest req,
            @RequestParam(value = "startLetter", required = false)
            String startLetter,
            @RequestParam(value = "start", required = false)
            Integer start) {
        ModelMap rtn = ControllerUtil.getModelMap(req, userService);

        if (start == null) {
            start = 0;
        }

        List<School> schools = null;
        if (startLetter == null) {
            startLetter = "";
            schools = schoolService.getTopSchools(start, 20);
        } else {
            schools = schoolService.getSchoolsStarting(startLetter,
                    start, 20);
        }

        rtn.addAttribute("start", start);
        rtn.addAttribute("startLetter", startLetter);
        rtn.addAttribute("schools", schools);

        return rtn;
    }

    /**
     * No bean definition in dispatcher-servlet.xml since we'll be found
     * with the scan for (AT)Controller because of <context:component-scan
     * base-package="com.apress.progwt.server.web.controllers" />
     *
     * @param userService
     */
    @Autowired
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    @Autowired
    public void setSchoolService(SchoolService schoolService) {
        this.schoolService = schoolService;
    }

}
TOP

Related Classes of com.apress.progwt.server.web.controllers.SimpleAnnotatedController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.