de.appsolve.padelcampus.api.controllers.ApiBaseController.java Source code

Java tutorial

Introduction

Here is the source code for de.appsolve.padelcampus.api.controllers.ApiBaseController.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package de.appsolve.padelcampus.api.controllers;

import de.appsolve.padelcampus.api.data.Option;
import de.appsolve.padelcampus.db.dao.generic.BaseEntityDAOI;
import de.appsolve.padelcampus.db.model.BaseEntityI;
import de.appsolve.padelcampus.db.model.Player;
import de.appsolve.padelcampus.utils.SessionUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;

import static org.springframework.web.bind.annotation.RequestMethod.GET;

/**
 * @param <T>
 * @author dominik
 */
public abstract class ApiBaseController<T extends BaseEntityI> {

    @Autowired
    BaseEntityDAOI<T> dao;

    @Autowired
    SessionUtil sessionUtil;

    @RequestMapping(method = GET, value = "options", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ResponseBody
    public List<Option> getOptions(HttpServletRequest request, @RequestParam("q") String q) {
        Player user = sessionUtil.getUser(request);
        if (user == null) {
            return null;
        }
        List<Option> options = new ArrayList<>();
        if (!StringUtils.isEmpty(q)) {
            Page<T> page = dao.findAllByFuzzySearch(q);
            for (T model : page.getContent()) {
                options.add(getOption(model));
            }
        }
        return options;
    }

    abstract Option getOption(T model);
}