Package com.m4f.web.controller.model

Source Code of com.m4f.web.controller.model.ExtendedCourseController

package com.m4f.web.controller.model;

import java.security.Principal;
import java.util.Date;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.logging.Logger;

import javax.servlet.http.HttpSession;
import javax.validation.Valid;

import org.springframework.security.access.annotation.Secured;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.google.appengine.api.datastore.Category;
import com.m4f.business.domain.InternalUser;
import com.m4f.business.domain.MediationService;
import com.m4f.business.domain.extended.ExtendedCourse;
import com.m4f.business.domain.extended.ExtendedSchool;
import com.m4f.business.domain.extended.Province;
import com.m4f.business.domain.extended.Town;
import com.m4f.utils.PageManager;
import com.m4f.utils.StackTraceUtil;

@Controller
@RequestMapping("/extended/course/")
public class ExtendedCourseController extends BaseModelController {
private static final Logger LOGGER = Logger.getLogger(ExtendedCourseController.class.getName());
 
  public ExtendedCourseController() {
    super();
  }
 
  @Secured("ROLE_MANUAL_MEDIATOR")
  @RequestMapping( method=RequestMethod.GET)
  public String getForm(Principal currentUser, Model model, Locale locale,
      @RequestHeader(required=false,value="referer") String referer,
      HttpSession session) {
    try {
      MediationService mediationService =
        this.serviceLocator.getTransversalService().getMediationServiceByUser(currentUser.getName());
      ExtendedCourse course = this.serviceLocator.getExtendedCourseService().createCourse();
      course.setMediationService(mediationService.getId());
      model.addAttribute("course", course);
      session.setAttribute(this.REFERER_PARAM, referer);
    } catch(Exception e) {
      LOGGER.severe(StackTraceUtil.getStackTrace(e));
      return "common.error";
    }
    return "extended.course.form";
  }
 
  @Secured("ROLE_MANUAL_MEDIATOR")
  @RequestMapping(value="/edit/{courseId}", method=RequestMethod.GET)
  public String edit(@PathVariable Long courseId, Model model, Locale locale,
      @RequestHeader(required=false,value="referer") String referer, HttpSession session) {
    try {
      ExtendedCourse course = this.serviceLocator.getExtendedCourseService().getCourse(courseId, locale);
      model.addAttribute("course", course);
      model.addAttribute("school", this.serviceLocator.getExtendedSchoolService().getSchool(course.getSchool(), locale));
      session.setAttribute(this.REFERER_PARAM, referer);
    } catch(Exception e) {
      LOGGER.severe(StackTraceUtil.getStackTrace(e));
      return "common.error";
    }
    return "extended.course.form";
  }
 
  @Secured("ROLE_MANUAL_MEDIATOR")
  @RequestMapping(method=RequestMethod.POST)
  public String save(@ModelAttribute("course") @Valid ExtendedCourse course,
      BindingResult result, Principal principal, Locale locale, Model model,
      @RequestHeader("Host") String host, HttpSession session) {       
    try {
      if(result.hasErrors()) {
        model.addAttribute("schools",
            this.serviceLocator.getExtendedSchoolService().getAllSchools(null, locale));
        return "extended.course.form";
      }
      if(principal != null) {
        InternalUser user = this.serviceLocator.getUserService().getUser(principal.getName());
        MediationService mediationService =
          this.serviceLocator.getMediatorService().getMediationServiceByUser(user.getId(), locale);
        course.setMediationService(mediationService.getId());
        if(course.getId() == null) {
          course.setCreated(new Date());
        }
        course.setUpdated(new Date());
        this.serviceLocator.getExtendedCourseService().save(course, locale);
      } else {
        return "common.error";
      }
    } catch(Exception e) {
      LOGGER.severe(StackTraceUtil.getStackTrace(e));
      return "common.error";
    }
    String returnURL = this.buildReturnURL(host,
        (String) session.getAttribute(this.REFERER_PARAM), locale);
    return "redirect:" + returnURL;
  }
 
 
 
  @Secured("ROLE_MANUAL_MEDIATOR")
  @RequestMapping(value="/delete/{courseId}", method=RequestMethod.GET)
  public String delete(@PathVariable Long courseId, Locale locale,
      @RequestHeader("referer") String referer, @RequestHeader("Host") String host) {
    try {
      ExtendedCourse course = this.serviceLocator.getExtendedCourseService().getCourse(courseId, locale);
      this.serviceLocator.getExtendedCourseService().delete(course, locale);
    } catch(Exception e) {
      LOGGER.severe(StackTraceUtil.getStackTrace(e));
      return "common.error";
    }
    String returnURL = this.buildReturnURL(host, referer, locale);
    return "redirect:" + returnURL;
  }
  @Secured("ROLE_ADMIN")
  @RequestMapping(value="/list", method=RequestMethod.GET)
  public String list(Model model, Locale locale,
      @RequestParam(defaultValue="1", required=false) Integer page, @RequestParam(defaultValue="", required=false) String order) {
    try {
      String ordering = order != null && !("").equals(order) ? order : "title";
      PageManager<ExtendedCourse> paginator = new PageManager<ExtendedCourse>();
      paginator.setOffset(this.getPageSize());
      paginator.setUrlBase("/" + locale.getLanguage()+ "/extended/course/list");
      paginator.setStart((page-1)*paginator.getOffset());
      paginator.setSize(this.serviceLocator.getExtendedCourseService().countCourses());
      paginator.setCollection(this.serviceLocator.getExtendedCourseService().getCourses(ordering, locale,
          paginator.getStart(), paginator.getEnd()));
      model.addAttribute("paginator", paginator);
      model.addAttribute("order", ordering);
    } catch(Exception e) {
      LOGGER.severe(StackTraceUtil.getStackTrace(e));
      model.addAttribute("paginator", new PageManager<ExtendedCourse>());
      //return "common.error";
    }
   
    return "extended.course.list";
  }
 
  @Secured({"ROLE_MANUAL_MEDIATOR","ROLE_ADMIN"})
  @RequestMapping(value="/detail/{courseId}", method=RequestMethod.GET)
  public String detail(@PathVariable Long courseId, Model model, Locale locale) {
    try {
      ExtendedCourse course = this.serviceLocator.getExtendedCourseService().getCourse(courseId, locale);
      ExtendedSchool school = this.serviceLocator.getExtendedSchoolService().getSchool(course.getSchool(), locale);
      model.addAttribute("course", course);
      model.addAttribute("school", school);
    } catch(Exception e) {
      LOGGER.severe(StackTraceUtil.getStackTrace(e));
      return "common.error";
   
    return "extended.course.detail";
  }
 
 
 
 
  /**********************************************************************
   *
   *               ADMIN ACCESS ONLY
   *
   **********************************************************************/
 
  /**
   *
   * @param locale
   * @param referer
   * @param session
   * @return
   */
 
  @Secured("ADMIN")
  @RequestMapping(value="/erasure", method=RequestMethod.GET)
  public String erasure(Locale locale,
      @RequestHeader("referer") String referer, HttpSession session) {
    try {
      this.serviceLocator.getExtendedSchoolService().erasure();
    } catch (Exception e) {
      LOGGER.severe(StackTraceUtil.getStackTrace(e));
      return "common.error";
    }
    return "redirect:/" + locale.getLanguage() + "/extended/school/list";
  }
 
  /*@ModelAttribute("course")p
  public ExtendedCourse getCourse() {
    return this.serviceLocator.getExtendedCourseService().createCourse();
  }*/
 
  /*
   * AJAX METHODS
   */
  @Secured({"ROLE_MANUAL_MEDIATOR","ADMIN"})
  @RequestMapping(value="/ajax/tags", method=RequestMethod.GET)
  public @ResponseBody List<Category> getCoursesTags(Locale locale) {
    try {
      Map<String, Category> mapa = new HashMap<String, Category>();
      List<Category> categories = new ArrayList<Category>();
      categories.addAll(this.serviceLocator.getExtendedCourseService().getCoursesTags(locale));
      categories.addAll(this.serviceLocator.getCourseService().getCoursesTags(locale));
      Iterator<Category> it = categories.iterator();
      while(it.hasNext()) {
        Category category = it.next();
        mapa.put(category.getCategory(), category);
      }
      return new ArrayList<Category>(mapa.values());
    } catch (Exception e) {
      LOGGER.severe(StackTraceUtil.getStackTrace(e));
      return new ArrayList<Category>();
    }
  }
 
  @Secured("ROLE_MANUAL_MEDIATOR")
  @RequestMapping(value="/ajax/provinces", method=RequestMethod.GET)
  public @ResponseBody List<Province> getProvinces(Locale locale) {
    try {
      return this.serviceLocator.getTerritorialService().getAllProvinces(locale);
    } catch (Exception e) {
      LOGGER.severe(StackTraceUtil.getStackTrace(e));
      return new ArrayList<Province>();
    }
  }
 
  @Secured("ROLE_MANUAL_MEDIATOR")
  @RequestMapping(value="/ajax/towns", method=RequestMethod.GET)
  public @ResponseBody List<Town> getTowns(@RequestParam(required=true, defaultValue="")
      Long provinceId, Locale locale) {
    List<Town> towns = new ArrayList<Town>();
    try {
      towns.addAll(this.serviceLocator.getTerritorialService().getTownsByProvince(provinceId, locale));
    } catch (Exception e) {
      LOGGER.severe(StackTraceUtil.getStackTrace(e));
    }
    return towns;
  }
 
  @Secured("ROLE_MANUAL_MEDIATOR")
  @RequestMapping(value="/ajax/schools", method=RequestMethod.GET)
  public @ResponseBody List<ExtendedSchool> getSchools(Principal currentUser,
      @RequestParam(required=true, defaultValue="") Long townId, Locale locale) {
    try {
      return this.serviceLocator.getExtendedSchoolService().getSchoolsByTown(townId, "name", locale);
    } catch (Exception e) {
      LOGGER.severe(StackTraceUtil.getStackTrace(e));
      return new ArrayList<ExtendedSchool>();
    }
  }
 
  @Secured("ROLE_MANUAL_MEDIATOR")
  @RequestMapping(value="/ajax/school", method=RequestMethod.GET)
  public @ResponseBody ExtendedSchool getSchool(Principal currentUser,
      @RequestParam(required=true, defaultValue="") Long schoolId, Locale locale) {
    try {
      return this.serviceLocator.getExtendedSchoolService().getSchool(schoolId, locale);
    } catch (Exception e) {
      LOGGER.severe(StackTraceUtil.getStackTrace(e));
      return new ExtendedSchool();
    }
  }
 
}
TOP

Related Classes of com.m4f.web.controller.model.ExtendedCourseController

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.