pw.spn.mptg.controller.ProjectTemplateController.java Source code

Java tutorial

Introduction

Here is the source code for pw.spn.mptg.controller.ProjectTemplateController.java

Source

package pw.spn.mptg.controller;

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import pw.spn.mptg.model.Dependency;
import pw.spn.mptg.model.JavaVersion;
import pw.spn.mptg.model.License;
import pw.spn.mptg.model.Packaging;
import pw.spn.mptg.model.ParentProject;
import pw.spn.mptg.model.PomTemplate;
import pw.spn.mptg.model.Repository;
import pw.spn.mptg.model.ScmType;
import pw.spn.mptg.service.ProjectService;

@Controller
@RequestMapping("/")
public final class ProjectTemplateController {
    private static final String CONTENT_DISPOSITION_VALUE = "attachment; filename=\"%s.zip\"";
    private final ProjectService projectService;

    public ProjectTemplateController(ProjectService projectService) {
        this.projectService = projectService;
    }

    @GetMapping
    public String index(Model model) {
        model.addAttribute("pomTemplate", new PomTemplate());
        model.addAttribute("packagingTypes", Packaging.values());
        model.addAttribute("javaVersions", JavaVersion.values());
        model.addAttribute("licenses", License.values());
        model.addAttribute("repositories", Repository.values());
        model.addAttribute("parents", ParentProject.values());
        model.addAttribute("scms", ScmType.values());
        model.addAttribute("dependencies", Dependency.values());
        return "index";
    }

    @PostMapping(produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
    public ResponseEntity<byte[]> generate(@ModelAttribute PomTemplate pomTemplate) {
        HttpHeaders headers = new HttpHeaders();
        headers.add(HttpHeaders.CONTENT_DISPOSITION,
                String.format(CONTENT_DISPOSITION_VALUE, pomTemplate.getArtifactId()));
        ResponseEntity<byte[]> responseEntity = new ResponseEntity<byte[]>(
                projectService.generateProjectAndZip(pomTemplate), headers, HttpStatus.OK);
        return responseEntity;
    }
}