AdminController.java

팡태(❁´◡`❁)·2022년 3월 15일
0

java

목록 보기
29/36
package com.example.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpSession;

import com.example.entity.Book;
import com.example.service.BookDB;
import com.example.service.SequenceService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping(value = "/admin")
public class AdminController {

    @Autowired
    BookDB bookDB;

    @Autowired
    private SequenceService sequenceService;

    @Autowired
    HttpSession httpSession;

    @PostMapping(value = "/action")
    public String actionPOST(
            @RequestParam(name = "btn") String btn,
            @RequestParam(name = "chk") List<Long> code) {

                // Long[] == List<Long>

        // 전달되는 chk값 출력하기
        for(Long tmp: code) {
            System.out.println(tmp);
        }

        if (btn.equals("일괄삭제")) {
            bookDB.deleteBatchBook(code);
        } else if (btn.equals("일괄수정")) {
            httpSession.setAttribute("CHK", code);
            return "redirect:/admin/updatebatch";
        }
        return "redirect:/admin/selectlist";
    }

    @GetMapping(value = "/updatebatch")
    public String updateGET(Model model) {
        // 형변환을 하면 데이터가 안전하지 않음을 경고
        // 세션에 추가할 때와 가지고 올 때의 타입을 정확하게 매칭
        @SuppressWarnings({ "unchecked" })
        List<Long> code = (List<Long>)httpSession.getAttribute("CHK");

        List<Book> list = bookDB.selectListWhereIn(code);
        model.addAttribute("list", list);
        return "admin/updatebatch";
    }

    @PostMapping(value = "/updatebatch")
    public String updatePOST(
        Model model,
        @RequestParam(name = "code") long[] code,
        @RequestParam(name = "title") String[] title,
        @RequestParam(name = "price") long[] price,
        @RequestParam(name = "writer") String[] writer,
        @RequestParam(name = "category") String[] category) {

            List<Book> list = new ArrayList<>();
            for (int i = 0; i < code.length; i++) {
                Book book = new Book();
                book.setCode(code[i]);
                book.setTitle(title[i]);
                book.setPrice(price[i]);
                book.setWriter(writer[i]);
                book.setCategory(category[i]);
                book.setRegdate(new Date());
    
                list.add(book);
            }
            long ret = bookDB.updateBatchBook(list);
            if(ret == 1){
                model.addAttribute("msg", "일괄수정 완료");
                model.addAttribute("url", "/admin/selectlist");
                return "alert";
            }
            // jsp를 만들어서 알림 띄우고  redirect 수행
            model.addAttribute("msg", "일괄수정 실패");
            model.addAttribute("url", "/admin/selectlist");
            return "alert";
        }
    
    @GetMapping(value = "/insertbatch")
    public String insertGET() {
        return "admin/insertbatch";
    }

    @PostMapping(value = "/insertbatch")
    public String insertPOST(
            @RequestParam(name = "title") String[] title,
            @RequestParam(name = "price") long[] price,
            @RequestParam(name = "writer") String[] writer,
            @RequestParam(name = "category") String[] category) {

        List<Book> list = new ArrayList<>();
        for (int i = 0; i < title.length; i++) {
            Book book = new Book();
            book.setCode(sequenceService.generatorSequence("SEQ_BOOK4_CODE"));
            book.setTitle(title[i]);
            book.setPrice(price[i]);
            book.setWriter(writer[i]);
            book.setCategory(category[i]);
            book.setRegdate(new Date());

            list.add(book);
        }
        bookDB.insertBatchBook(list);
        return "redirect:/admin/selectlist";
    }

    @GetMapping(value = "/selectlist")
    public String selectlistGET(Model model,
            @RequestParam(name = "page", defaultValue = "1") int page,
            @RequestParam(name = "text", defaultValue = "") String text) {
        if (page == 0) {
            return "redirect:/admin/selectlist?page=1";
        }

        List<Book> list = bookDB.selectListPageSearchBook(page, text);

        // 2. 페이지네이션 개수
        long pages = bookDB.CountSearchBook(text);

        model.addAttribute("list", list);
        model.addAttribute("pages", (pages - 1) / 10 + 1);

        return "/admin/selectlist";
    }
}

0개의 댓글