====== 게시물관리 ======

===== 개요 =====
사용자 간의 정보공유를 위해 공통으로 사용되는 게시판을 관리할 수 있도록 게시물을 등록하고 등록된 게시물의 목록을 조회할 수 있는 기능을 제공한다.

===== 설명 =====
게시판 관리기능에 의해 생성된 게시판에 사용자가 게시물을 등록, 조회, 수정 할 수 있는 기능을 제공한다. 
생성된 게시판은 게시판 속성관리에 따라서 지정된 유형 및 속성에 따라서 실제 게시판은 다른 형태로 보여지게 된다.
각 게시판은 글 생성 및 조회, 수정, 삭제가 가능하며 수정 및 삭제의 경우 글을 게시한 당사자만이 수정, 삭제가 가능하다.
익명 게시판의 경우 작성자의 이름이 나오지 않으며, 갤러리 형태의 게시판의 경우 글 생성시 
첨부된 이미지 파일(BMP,JPG,GIF,PNG 포맷에 한함)을 본문에 같이 보여주는 기능을 제공한다.

==== 패키지 참조 관계 ====

게시판 패키지는 요소기술의 공통 패키지(cmm)와 시스템 패키지(sim), 포맷/계산/변환 패키지에 대해서 직접적인 함수적 참조 관계를 가진다. 하지만, 컴포넌트 배포 시 오류 없이 실행되기 위하여 패키지 간의 참조관계에 따라 협업의 공통기능(com), 디자인템플릿, 달력 패키지와 함께 배포 파일을 구성한다. 

  * 패키지 간 참조 관계 : [[egovframework:com:v2:init_pkg_dependency#게시판, 커뮤니티, 동호회|게시판, 커뮤니티, 동호회 Package Dependency]]

==== 관련소스 ====

^유형^대상소스^비고^
|Controller|egovframework.com.cop.bbs.EgovBBSManageController.java|게시물 관리를 위한 컨트롤러 클래스|
|Service|egovframework.com.cop.bbs.service.EgovBBSManageService.java|게시물 관리를 위한  서비스 인터페이스|
|ServiceImpl|egovframework.com.cop.bbs.service.impl.EgovBBSManageServiceImpl.java|게시물 관리를 위한 서비스 구현 클래스|
|Model|egovframework.com.cop.bbs.service.Board.java|게시물 관리를 위한 모델 클래스|
|Model|egovframework.com.cop.bbs.service.BoardMaster.java|게시판 속성 정보를 관리하기 위한 모델 클래스|
|VO|egovframework.com.cop.bbs.service.BoardVO.java|게시물 관리를 위한 VO 클래스|
|VO|egovframework.com.cop.bbs.service.BoardMasterVO.java|게시판 속성 정보를 관리하기 위한 VO 클래스|
|DAO|egovframework.com.cop.bbs.service.impl.BBSManageDAO.java|게시물 관리를 위한 데이터처리 클래스|
|JSP|/WEB-INF/jsp/egovframework/com/cop/bbs/EgovNoticeRegist.jsp|게시물 생성을 위한 jsp페이지|
|JSP|/WEB-INF/jsp/egovframework/com/cop/bbs/EgovNoticeUpdt.jsp|생성된 게시물 수정을 위한 jsp페이지|
|JSP|/WEB-INF/jsp/egovframework/com/cop/bbs/EgovNoticeList.jsp|생성된 게시물 조회를 위한 jsp페이지|
|JSP|/WEB-INF/jsp/egovframework/com/cop/bbs/EgovNoticeInqire.jsp|생성된 게시물 상세 조회를 위한 jsp페이지|
|JSP|/WEB-INF/jsp/egovframework/com/cop/bbs/EgovNoticeReply.jsp.jsp|생성된 게시물에 대한 답변을 등록하기 위한 jsp페이지|
|JSP|/WEB-INF/jsp/egovframework/com/cop/bbs/EgovGuestList.jsp|방명록 등록/조회를 위한 jsp페이지|
|Query XML|resources/egovframework/sqlmap/com/cop/bbs/EgovBoard_SQL_Mysql.xml|게시물 관리를 위한 MySQL용 Query XML|
|Query XML|resources/egovframework/sqlmap/com/cop/bbs/EgovBoard_SQL_Oracle.xml|게시물 관리를 위한 Oracle용 Query XML|
|Query XML|resources/egovframework/sqlmap/com/cop/bbs/EgovBoard_SQL_Tibero.xml|게시물 관리를 위한 Tibero용 Query XML|
|Query XML|resources/egovframework/sqlmap/com/cop/bbs/EgovBoard_SQL_Altibase.xml|게시물 관리를 위한 Altibase용 Query XML|
|Validator Rule XML|resources/egovframework/validator/validator-rules.xml|Validator Rule을 정의한 XML|
|Message properties|resources/egovframework/message/com/message-common_ko_KR.properties|게시물 관리를 위한 Message properties|
|Idgen XML|resources/egovframework/spring/context-idgen.xml|게시물 등록 Id생성 Idgen XML|

==== 클래스 다이어그램 ====
{{:egovframework:com:v2:cop:게시물관리_클래스다이어그램.jpg?740|}}

==== ID Generation ====
=== ID Generation 관련 DDL 및 DML ===
  * ID Generation Service를 활용하기 위해서 Sequence 저장테이블인  COMTECOPSEQ에 **NTT_ID** 항목을 추가해야 한다. 
 <code sql>
  CREATE TABLE COMTECOPSEQ ( table_name varchar(16) NOT NULL, 
  		   next_id DECIMAL(30) NOT NULL,
  		   PRIMARY KEY (table_name));

  INSERT INTO COMTECOPSEQ VALUES('NTT_ID','0');
 </code>

=== ID Generation 환경설정(context-idgen.xml) ===
<code xml>
	<bean name="egovNttIdGnrService"
		class="egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrService"
		destroy-method="destroy">
		<property name="dataSource" ref="egov.dataSource" />
		<property name="strategy" ref="nttIdStrategy" />
		<property name="blockSize" 	value="1"/>
		<property name="table"	   	value="COMTECOPSEQ"/>
		<property name="tableName"	value="NTT_ID"/>
	</bean>
	<bean name="nttIdStrategy"
		class="egovframework.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl">
		<property name="cipers" value="20" />
	</bean>		
</code>


==== 관련테이블 ====

^테이블명^테이블명(영문)^비고^
|게시물 정보|COMTNBBS|게시물 정보를 관리한다.|



===== 관련기능 =====
게시판 사용을 위한 방법은 시스템에 활용되는 게시판, 커뮤니티에서 활용되는 게시판, 동호회에서 활용되는 게시판 3가지로 구분된다.\\
게시물관리는 **게시물 목록조회**, **게시물 등록**, **게시물 상세조회**, **게시물 수정**, **답글 작성** 기능으로 구분되어 있다.








==== 게시물 목록조회 ====

=== 비즈니스 규칙 ===
게시물 목록을 조회할 수 있는 화면을 제공한다. 게시물에 대한 목록조회 화면은 접근은 URL 링크(시스템 사용 게시판), 커뮤니티를 통한 접근, 동호회를 통한 접근 3가지 방식이 존재한다.


=== 관련코드  ===

N/A

=== 관련화면 및 수행매뉴얼 ===

^Action^URL^Controller method^QueryID^
|목록조회|/cop/bbs/selectBoardList.do|selectBoardArticles|"BBSManageDAO.selectBoardArticleList",|
| | | |"BBSManageDAO.selectBoardArticleListCnt"|

게시물 목록은 페이지 당 10건씩 조회되며 페이징은 10페이지씩 이루어진다. 
검색조건은 제목, 내용, 작성자 대해서 수행된다. 페이지 당 검색 범위를 변경하고자 하는 경우
context-properties.xml 파일의 pageUnit, pageSize를 변경한다.(단 해당 설정은 전체 공통서비스 기능에 영향을 미친다.)

{{:egovframework:noticelist.gif|게시물 목록조회}}


신규 게시물을 등록하기 위해서는 상단의 등록 버튼을 통해서 **게시물 등록** 화면으로 이동할 수 있다.\\
게시내용을 확인하기 위해서는 제목을 선택하면 상세화면을 제공하는 **게시물 상세조회** 화면으로 이동한다.


==== 게시물 등록 ====


=== 비즈니스 규칙 ===
게시물의 내용을 입력한 뒤 등록 버튼을 선택하면 게시물이 등록된다. 게시판에 대한 유형 및 속성에 따라 게시시간, 작성자, 파일첨부 등을 입력할 수 있다. 등록이 성공적으로 처리되면 **게시물 목록조회** 화면으로 이동된다.


=== 관련코드  ===

N/A

=== 관련화면 및 수행매뉴얼 ===

^Action^URL^Controller method^QueryID^
|등록화면|/cop/bbs/addBoardArticle.do|addBoardArticle| |
|등록|/cop/bbs/insertBoardArticle.do|insertBoardArticle|"BBSManageDAO.insertBoardArticle"|

{{:egovframework:noticeregist.gif|게시물 등록}}


목록: **게시물 목록** 화면으로 이동한다. \\
등록: 입력한 게시물 정보들이 저장 처리된다. 



==== 게시물 상세조회 ====

=== 비즈니스 규칙 ===
게시물 목록화면에서 제목을 선택하면 상세화면으로 이동한다.

=== 관련코드  ===

N/A

=== 관련화면 및 수행매뉴얼 ===

^Action^URL^Controller method^QueryID^
|상세조회|/cop/bbs/selectBoardArticle.do|selectBoardArticle|"BBSManageDAO.selectBoardArticle"|


{{:egovframework:noticeinqire.gif|게시물 상세조회}}


상세화면에서 수정 버튼을 선택하면 **게시물 수정** 화면으로 이동한다.\\
삭제 버튼 선택 시 해당 게시글을 삭제하고 **게시물 목록** 화면으로 이동한다.


==== 게시물 수정 ====

=== 비즈니스 규칙 ===

게시물을 수정할 수 있는 화면을 제공하고 입력된 게시물 수정정보를 저장처리한다.

=== 관련코드  ===

N/A

=== 관련화면 및 수행매뉴얼 ===

^Action^URL^Controller method^QueryID^
|수정화면|/cop/bbs/forUpdateBoardArticle.do|selectBoardArticleForUpdt| |
|수정|/cop/bbs/updateBoardArticle.do|updateBoardArticle|"BBSManageDAO.updateBoardArticle"|

{{:egovframework:noticeupdt.gif|게시물 수정}}


게시글의 제목과 내용 등을 변경하고 수정 버튼을 누르면 게시글 정보가 변경되어 **게시물 목록조회** 화면으로 이동한다.

==== 답변 작성 ====


=== 비즈니스 규칙 ===

답변 작성은 **게시물 등록**과 같은 방식으로 입력하여 등록한다.

=== 관련코드  ===

N/A

=== 관련화면 및 수행매뉴얼 ===

^Action^URL^Controller method^QueryID^
|답변작성 화면|/cop/bbs/addReplyBoardArticle.do|addReplyBoardArticle| |
|답변작성|/cop/bbs/replyBoardArticle.do|replyBoardArticle|"BBSManageDAO.insertBoardArticle"|


{{:egovframework:com:cop:noticereply.jpg|답변 작성}}

정상적으로 답변이 등록되면 **게시물 목록조회** 화면으로 이동된다.


===== 참고자료 =====

  * 게시판 생성관리 기능 참조 : [[게시판생성관리|게시판 생성관리]]