Search in sources :

Example 11 with BoardDTO

use of com.worksmobile.Assignment.Domain.BoardDTO in project Assignment by WMPeople.

the class RestController method boardList.

/**
 * 첫 화면으로, 사용자가 요청한 페이지에 해당하는 게시물을 보여줍니다.
 * @param req pages 파라미터에 사용자가 요청한 페이지 번호가 있습니다.
 */
@RequestMapping(value = "/", method = RequestMethod.GET)
@ResponseBody
public ModelAndView boardList(HttpServletRequest req) throws Exception {
    // /(localhost:8080)페이지로 오면 처음에 표시할 페이지 (1 = 첫번째 페이지)
    int currentPageNo = CURRENT_PAGE_NO;
    // 페이지당 표시될 게시물  최대 갯수
    int maxPost = MAX_POST;
    if (// 게시물이 1개도없으면(=페이지가 생성이 안되었으면)이 아니라면 == 페이징이 생성되었다면
    req.getParameter("pages") != null)
        // pages에있는 string 타입 변수를 int형으로 바꾸어서 currentPageNo에 담는다.
        currentPageNo = Integer.parseInt(req.getParameter("pages"));
    // Paging.java에있는 currentPageNo, maxPost를 paging변수에 담는다.
    Paging paging = new Paging(currentPageNo, maxPost);
    int offset = (paging.getCurrentPageNo() - 1) * paging.getmaxPost();
    // 현재 3페이지 이고, 그 페이지에 게시물이 10개가 있다면 offset값은 (3-1) * 10 = 20이 된다.
    // BoardDTO에 있는 변수들을 ArrayList 타입의 배열로 둔 다음 이를 page라는 변수에 담는다.
    ArrayList<BoardDTO> board = new ArrayList<BoardDTO>();
    HashMap<String, Integer> params = new HashMap<String, Integer>();
    params.put("offset", offset);
    params.put("noOfRecords", paging.getmaxPost());
    board = (ArrayList<BoardDTO>) boardMapper.articleList(params);
    // writeService.java에 있는 articleList 함수를 이용하여 offset값과 maxPost값을 ArrayList 타입의 배열로 담고, 이 배열 자체를 page 변수에 담는다.
    // 페이지를 표시하기 위해 전체 게시물 수를 파악하기 위한것
    paging.setNumberOfRecords(boardMapper.articleGetCount());
    paging.makePaging();
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("board", board);
    modelAndView.addObject("paging", paging);
    modelAndView.setViewName("boardList");
    return modelAndView;
}
Also used : BoardDTO(com.worksmobile.Assignment.Domain.BoardDTO) HashMap(java.util.HashMap) Paging(com.worksmobile.Assignment.Service.Paging) ArrayList(java.util.ArrayList) ModelAndView(org.springframework.web.servlet.ModelAndView) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 12 with BoardDTO

use of com.worksmobile.Assignment.Domain.BoardDTO in project Assignment by WMPeople.

the class VersionManagementTest method testRecoverVersion.

@Test
public void testRecoverVersion() throws InterruptedException, ExecutionException, JsonProcessingException {
    BoardHistoryDTO createdHistoryDTO = versionManagementService.createArticle(defaultBoardDTO);
    NodePtrDTO prevPtrDTO = createdHistoryDTO;
    BoardDTO prevLeapDTO = boardMapper.viewDetail(prevPtrDTO.toMap());
    NodePtrDTO newLeapPtrDTO = versionManagementService.recoverVersion(prevPtrDTO, prevPtrDTO);
    BoardHistoryDTO recoveredHistoryDTO = boardHistoryMapper.getHistory(newLeapPtrDTO);
    BoardDTO newLeapDTO = boardMapper.viewDetail(newLeapPtrDTO.toMap());
    prevLeapDTO.setNodePtrDTO(newLeapPtrDTO);
    assertNotNull(recoveredHistoryDTO);
    Utils.assertConvertToJsonObject(newLeapDTO, prevLeapDTO);
}
Also used : NodePtrDTO(com.worksmobile.Assignment.Domain.NodePtrDTO) BoardDTO(com.worksmobile.Assignment.Domain.BoardDTO) BoardHistoryDTO(com.worksmobile.Assignment.Domain.BoardHistoryDTO) Test(org.junit.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 13 with BoardDTO

use of com.worksmobile.Assignment.Domain.BoardDTO in project Assignment by WMPeople.

the class VersionManagementTest method createDefault.

@Before
public void createDefault() throws InterruptedException, ExecutionException {
    defaultBoardDTO = new BoardDTO();
    defaultBoardDTO.setSubject("versionTestSub");
    defaultBoardDTO.setContent("versionTestCont");
    ;
    defaultCreatedDTO = versionManagementService.createArticle(defaultBoardDTO);
}
Also used : BoardDTO(com.worksmobile.Assignment.Domain.BoardDTO) Before(org.junit.Before)

Example 14 with BoardDTO

use of com.worksmobile.Assignment.Domain.BoardDTO in project Assignment by WMPeople.

the class VersionManagementTest method testCreateSevenHundredThousandTextContentArticle.

@Test
public void testCreateSevenHundredThousandTextContentArticle() throws JsonProcessingException, InterruptedException, ExecutionException {
    StringBuilder sevenHundredContent = new StringBuilder();
    for (int i = 0; i < 700000; i++) {
        sevenHundredContent.append(i % 10);
    }
    defaultBoardDTO = new BoardDTO();
    defaultBoardDTO.setSubject("칠십만자가 들어가있습니다");
    defaultBoardDTO.setContent(sevenHundredContent.toString());
    defaultCreatedDTO = versionManagementService.createArticle(defaultBoardDTO);
    NodePtrDTO nodePtr = defaultCreatedDTO;
    BoardHistoryDTO dbHistoryDTO = boardHistoryMapper.getHistory(nodePtr);
    Utils.assertConvertToJsonObject(defaultCreatedDTO, dbHistoryDTO);
    defaultBoardDTO.setNodePtrDTO(nodePtr);
    defaultBoardDTO.setCreated(dbHistoryDTO.getCreated());
    BoardDTO dbBoardDTO = boardMapper.viewDetail(nodePtr.toMap());
    Utils.assertConvertToJsonObject(defaultBoardDTO, dbBoardDTO);
}
Also used : NodePtrDTO(com.worksmobile.Assignment.Domain.NodePtrDTO) BoardDTO(com.worksmobile.Assignment.Domain.BoardDTO) BoardHistoryDTO(com.worksmobile.Assignment.Domain.BoardHistoryDTO) Test(org.junit.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 15 with BoardDTO

use of com.worksmobile.Assignment.Domain.BoardDTO in project Assignment by WMPeople.

the class VersionManagementService method createArticleAndHistory.

/**
 *  충돌 영역! 게시판 DB 와 이력 DB 에 둘다 등록합니다.
 *  게시판 id를 1증가 시켜 작성합니다.
 * @param article 등록할 게시물의 제목, 내용, 첨부파일이 사용됩니다.
 * @param version 새로운 게시물의 버전
 * @param status 게시물 이력의 상태에 들어갈 내용
 * @param compressedContent 압축된 내용
 * @param parentNodePtr 게시물의 부모 노드 포인터
 * @return 새롭게 생성된 게시글 이력 DTO
 */
private synchronized BoardHistoryDTO createArticleAndHistory(BoardDTO article, int version, final String status, final byte[] compressedContent, final NodePtrDTO parentNodePtr) {
    int last_board_id = boardMapper.getMaxBoardId() + 1;
    NodePtrDTO newNodePtrDTO = new NodePtrDTO(last_board_id, version);
    if (parentNodePtr.getRoot_board_id() == 0) {
        parentNodePtr.setRoot_board_id(last_board_id);
    }
    BoardHistoryDTO boardHistoryDTO;
    if (version == 0) {
        BoardHistoryDTO rootHistoryDTO = new BoardHistoryDTO(new BoardDTO(), newNodePtrDTO, BoardHistoryDTO.STATUS_ROOT);
        int insertedRowCnt = boardHistoryMapper.createHistory(rootHistoryDTO);
        if (insertedRowCnt != 1) {
            String json = Utils.jsonStringIfExceptionToString(rootHistoryDTO);
            throw new RuntimeException("createArticleAndHistory메소드에서 게시글 이력 추가 에러 insertedRowCnt : " + insertedRowCnt + "\ndeletePtrDTO : " + json);
        }
        boardHistoryDTO = new BoardHistoryDTO(article, newNodePtrDTO, status);
        boardHistoryDTO.setVersion(1);
        boardHistoryDTO.setHistory_content(compressedContent);
        boardHistoryDTO.setParentNodePtrAndRoot(rootHistoryDTO);
        boardHistoryDTO.setRoot_board_id(newNodePtrDTO.getBoard_id());
        insertedRowCnt = boardHistoryMapper.createHistory(boardHistoryDTO);
        if (insertedRowCnt != 1) {
            String json = Utils.jsonStringIfExceptionToString(rootHistoryDTO);
            throw new RuntimeException("createArticleAndHistory메소드에서 게시글 이력 추가 에러 insertedRowCnt : " + insertedRowCnt + "\ndeletePtrDTO : " + json);
        }
    } else {
        boardHistoryDTO = new BoardHistoryDTO(article, newNodePtrDTO, status);
        boardHistoryDTO.setHistory_content(compressedContent);
        boardHistoryDTO.setParentNodePtrAndRoot(parentNodePtr);
        int insertedRowCnt = boardHistoryMapper.createHistory(boardHistoryDTO);
        if (insertedRowCnt == 0) {
            throw new RuntimeException("createArticle메소드에서 createHistory error" + boardHistoryDTO);
        }
    }
    NodePtrDTO nodePtr = boardHistoryDTO;
    article.setNodePtrDTO(nodePtr);
    article.setCreated(boardHistoryDTO.getCreated());
    int insertedRowCnt = boardMapper.boardCreate(article);
    if (insertedRowCnt == 0) {
        throw new RuntimeException("createArticle메소드에서 boardCreate error" + boardHistoryDTO);
    }
    return boardHistoryDTO;
}
Also used : NodePtrDTO(com.worksmobile.Assignment.Domain.NodePtrDTO) BoardDTO(com.worksmobile.Assignment.Domain.BoardDTO) BoardHistoryDTO(com.worksmobile.Assignment.Domain.BoardHistoryDTO)

Aggregations

BoardDTO (com.worksmobile.Assignment.Domain.BoardDTO)28 NodePtrDTO (com.worksmobile.Assignment.Domain.NodePtrDTO)13 Test (org.junit.Test)13 BoardHistoryDTO (com.worksmobile.Assignment.Domain.BoardHistoryDTO)12 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)9 HashMap (java.util.HashMap)5 IOException (java.io.IOException)4 ArrayList (java.util.ArrayList)4 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)4 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)4 Before (org.junit.Before)3 Transactional (org.springframework.transaction.annotation.Transactional)3 ModelAndView (org.springframework.web.servlet.ModelAndView)3 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)2 FileDTO (com.worksmobile.Assignment.Domain.FileDTO)2 Paging (com.worksmobile.Assignment.Service.Paging)1