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;
}
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);
}
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);
}
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);
}
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;
}
Aggregations