com.mycompany.rent.controllers.ListingController.java Source code

Java tutorial

Introduction

Here is the source code for com.mycompany.rent.controllers.ListingController.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 com.mycompany.rent.controllers;

import com.mycompany.rent.dao.ForRentDao;
import com.mycompany.rent.dao.UserDao;
import com.mycompany.rent.dto.ForRent;
import com.mycompany.rent.dto.UploadForm;
import com.mycompany.rent.dto.User;
import java.io.File;
import java.io.IOException;
import java.security.Principal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.enterprise.inject.Model;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
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 org.springframework.web.multipart.MultipartFile;

/**
 *
 * @author brennan
 */
@Controller
@RequestMapping(value = "/list")
public class ListingController {

    private ForRentDao forRentDao;
    private UserDao userDao;

    @Inject
    public ListingController(ForRentDao forRentDao, UserDao userDao) {
        this.forRentDao = forRentDao;
        this.userDao = userDao;
    }

    @RequestMapping(value = "/new", method = RequestMethod.GET)
    public String listingPage(Map model) {

        boolean list = true;
        model.put("list", list);
        return "listing";
    }

    @RequestMapping(value = "/sale", method = RequestMethod.GET)
    public String salePage(Map model) {

        boolean sale = true;
        model.put("sale", sale);
        return "sale";
    }

    @RequestMapping(value = "/create", method = RequestMethod.POST)
    @ResponseBody
    public ForRent createForRent(@RequestBody ForRent forRent, Principal principal, Map model) {

        String name = principal.getName();

        User u = userDao.getByUsername(name);

        forRent.setUser_id(u.getId());

        forRentDao.create(forRent);

        return forRent;
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public String addPhoto(@PathVariable int id, Map model) {

        ForRent rental = forRentDao.get(id);

        model.put("rental", rental);

        return "photo";

    }

    @RequestMapping(value = "/photo/{id}", method = RequestMethod.POST)
    public String addPhotos(@RequestParam("file") MultipartFile file, @PathVariable int id, Map model)
            throws IOException {

        if (!file.isEmpty()) {

            ForRent rent = forRentDao.get(id);

            String realPathtoUploads = "/home/brennan/_repos/rent/src/main/webapp/uploads/" + id;

            String orgName = file.getOriginalFilename();
            rent.setFileName(orgName);
            forRentDao.addPhotos(id, orgName);
            String filePath = (realPathtoUploads + rent.getId() + "_" + orgName);
            File dest = new File(filePath);
            file.transferTo(dest);

            return "home";
        }
        return "home";

    }

    @RequestMapping(value = "/savefiles", method = RequestMethod.POST)
    public String crunchifySave(@ModelAttribute("uploadForm") UploadForm uploadForm)
            throws IllegalStateException, IOException {

        String saveDirectory = "/home/brennan/_repos/rent/src/main/webapp/uploads/";

        List<MultipartFile> crunchifyFiles = uploadForm.getFiles();

        List<String> fileNames = new ArrayList<String>();

        ForRent fr = forRentDao.get(uploadForm.getProp_id());

        if (null != crunchifyFiles && crunchifyFiles.size() > 0) {
            for (MultipartFile multipartFile : crunchifyFiles) {

                String fileName = saveDirectory + uploadForm.getProp_id() + multipartFile.getOriginalFilename();
                if (!"".equalsIgnoreCase(fileName)) {
                    // Handle file content - multipartFile.getInputStream()
                    multipartFile.transferTo(new File(fileName));
                    fileNames.add("/rent/uploads/" + uploadForm.getProp_id() + multipartFile.getOriginalFilename());
                }
            }
        }

        fr.setImagePaths(fileNames);

        //Iterate through ForRent imagePath and add each path to db
        for (String s : fr.getImagePaths()) {
            forRentDao.addPhotos(fr.getId(), s);
        }

        //        map.addAttribute("files", fileNames);
        return "pricing";
    }

}