2014년 1월 8일 수요일

Struts + EJB 게시판 - 5 (EJB Module / session)[재직자무료교육/프로그래머교육/구로디지털IT교육,오라클/자바/닷넷/C#/iOS/안드로이드/아이폰교육]

Struts + EJB 게시판 - 5 (EJB Module / session)[재직자무료교육/프로그래머교육/구로디지털IT교육,오라클/자바/닷넷/C#/iOS/안드로이드/아이폰교육]


// BoardSession.java -----------------------------------------------
package board.sessions;

import java.rmi.*;
import java.util.*;

import javax.ejb.*;

import board.dtos.*;

public interface BoardSession extends EJBObject {
       
        // 글 등록
        public Integer insertBoard(BoardDTO dto) throws RemoteException;
       
        // 답글 등록
        public Integer replyBoard(BoardDTO dto) throws RemoteException;
       
        // 글 상세정보
        public BoardDTO getBoardDetail(BoardDTO dto) throws RemoteException;
       
        // 첨부파일 상세정보
        public BoardFileDTO getBoardFileDetail(BoardFileDTO dto) throws RemoteException;
       
        // 답글을 위한 글 상세정보
        public BoardDTO getReplyBoardDetail(BoardDTO dto) throws RemoteException;
       
        // 글 수정
        public boolean updateBoard(BoardDTO dto) throws RemoteException;
       
        // 전체 게시물의 수
        public int getTotalCount() throws RemoteException;
       
        // 해당 페이지의 게시물 목록
        public Collection getBoardList(PageDTO dto) throws RemoteException;
       
        // 글 삭제
        public Collection deleteBoard(BoardDTO dto) throws RemoteException;
       
        // 첨부파일 삭제
        public BoardFileDTO deleteBoardFile(BoardFileDTO dto) throws RemoteException;

}
// BoardSession.java -----------------------------------------------

// BoardSessionHome.java ------------------------------------------
package board.sessions;

import java.rmi.*;
import javax.ejb.*;

public interface BoardSessionHome extends EJBHome {
       
        BoardSession create() throws CreateException, RemoteException;

}
// BoardSessionHome.java ------------------------------------------

// BoardSessionEJB.java -------------------------------------------
package board.sessions;

import java.rmi.*;
import java.util.*;

import javax.ejb.*;
import javax.naming.*;
import javax.rmi.*;

import board.common.*;
import board.dtos.*;
import board.entities.*;

public class BoardSessionEJB implements SessionBean {
       
        private SessionContext ctx;
       
        // 글 등록
        public Integer insertBoard(BoardDTO dto)
        {
                System.out.println("BoardSessionEJB : insertBoard()");
               
                Integer result = null;
               
                try
                {                       
                        BoardEntityHome boardHome = BoardEJBFactory.getBoardEntity();                       
                        BoardEntity boardRemote = boardHome.create(dto);
                       
                        // 생성된 로컬 엔티티로부터 고유키 값을 얻어와 리턴
                        result = boardRemote.getNo();
                       
                        // 첨부파일이 존재하는 경우
                        ArrayList upFiles = (ArrayList)dto.getUpFiles();
                        if(upFiles.size() > 0)
                        {
                                BoardFileEntityHome boardFileHome = BoardEJBFactory.getBoardFileEntity();
                                for(int i=0; i<upFiles.size(); i++)
                                {
                                        BoardFileDTO boardFileDTO = (BoardFileDTO)upFiles.get(i);
                                        boardFileDTO.setBno(result.intValue());
                                        boardFileHome.create(boardFileDTO);
                                }                               
                        }                       
                }
                catch(Exception e){ e.printStackTrace(); }
               
                return result;
        }
       
        // 답글 등록
        public Integer replyBoard(BoardDTO dto)
        {
                System.out.println("BoardSessionEJB : replyBoard()");
               
                Integer result = null;
               
                try
                {       
                        BoardEntityHome home = BoardEJBFactory.getBoardEntity();                       

                        // 해당 그룹의 정렬 순서를 수정한 후에 답글의 정렬 번호를 얻는다
                        int orderNo = home.updateOrderNo(dto);
                       
                        // 일반적인 글의 형태로 등록한 후 부모글과 그룹, 깊이등을 수정한다
                        BoardEntity boardRemote = home.create(dto);
                        result = boardRemote.getNo();
                       
                        boardRemote.setParentno(dto.getParentno());
                        boardRemote.setGroupno(dto.getGroupno());
                        boardRemote.setOrderno(orderNo);
                        boardRemote.setDepth(dto.getDepth());
                       
                        // 첨부파일이 존재하는 경우
                        ArrayList upFiles = (ArrayList)dto.getUpFiles();
                        if(upFiles.size() > 0)
                        {
                                BoardFileEntityHome boardFileHome = BoardEJBFactory.getBoardFileEntity();
                                for(int i=0; i<upFiles.size(); i++)
                                {
                                        BoardFileDTO boardFileDTO = (BoardFileDTO)upFiles.get(i);
                                        boardFileDTO.setBno(result.intValue());
                                        boardFileHome.create(boardFileDTO);
                                }                               
                        }       
                }
                catch(Exception e){ e.printStackTrace(); }
               
                return result;
        }
       
        // 글수정
        public boolean updateBoard(BoardDTO dto)
        {
                System.out.println("BoardSessionEJB : updateBoard()");
               
                boolean result = false;
               
                try
                {       
                        BoardEntityHome home = BoardEJBFactory.getBoardEntity();                       
                        BoardEntity boardRemote = home.findByPrimaryKey(dto.getNo());
                       
                        boardRemote.setName(dto.getName());
                        boardRemote.setPassword(dto.getPassword());
                        boardRemote.setTitle(dto.getTitle());
                        boardRemote.setContent(dto.getContent());
                       
                        // 첨부파일이 존재하는 경우
                        ArrayList upFiles = (ArrayList)dto.getUpFiles();
                        if(upFiles.size() > 0)
                        {
                                BoardFileEntityHome boardFileHome = BoardEJBFactory.getBoardFileEntity();
                                for(int i=0; i<upFiles.size(); i++)
                                {
                                        BoardFileDTO boardFileDTO = (BoardFileDTO)upFiles.get(i);
                                        boardFileDTO.setBno(dto.getNo().intValue());
                                        boardFileHome.create(boardFileDTO);
                                }                               
                        }                       
                       
                        result = true;
                }
                catch(Exception e){ e.printStackTrace(); }
               
                return result;
        }       
       
        // 답글을 위한 글의 세부정보를 가져온다
        public BoardDTO getReplyBoardDetail(BoardDTO dto)
        {
                System.out.println("BoardSessionEJB : getReplyBoardDetail()");
               
                BoardDTO result = null;
                Integer no = dto.getNo();
               
                try
                {                       
                        BoardEntityHome home = BoardEJBFactory.getBoardEntity();
                        BoardEntity boardRemote = home.findByPrimaryKey(dto.getNo());                       
                       
                        result = new BoardDTO();
                       
                        // 부모글에 대한 정보를 저장
                        result.setParentno(boardRemote.getNo().intValue());
                        result.setGroupno(boardRemote.getGroupno());
                        result.setOrderno(boardRemote.getOrderno());
                       
                        // 답글 이므로 깊이를 1 증가 시킨다
                        int depth = boardRemote.getDepth();
                        result.setDepth(++depth);
                }
                catch(Exception e){ e.printStackTrace(); }       
               
                return result;
        }
       
        // 첨부파일의 정보를 가져온다
        public BoardFileDTO getBoardFileDetail(BoardFileDTO dto)
        {
                System.out.println("BoardSessionEJB : getBoardFileDetail()");
               
                try
                {                       
                        BoardFileEntityHome home = BoardEJBFactory.getBoardFileEntity();
                        BoardFileEntity fileRemote = home.findByPrimaryKey(dto.getNo());
                       
                        dto.setBno(fileRemote.getBno());
                        dto.setFileName(fileRemote.getFileName());
                        dto.setTempFileName(fileRemote.getTempFileName());
                        dto.setContentType(fileRemote.getContentType());
                }
                catch(Exception e){ e.printStackTrace(); }       
               
                return dto;
        }
       
        // 글의 세부 정보를 가져온다
        public BoardDTO getBoardDetail(BoardDTO dto)
        {
                System.out.println("BoardSessionEJB : getBoardDetail()");
               
                BoardDTO result = null;
                Integer no = dto.getNo();
               
                try
                {                       
                        BoardEntityHome home = BoardEJBFactory.getBoardEntity();
                        BoardFileEntityHome boardFileHome = BoardEJBFactory.getBoardFileEntity();
                       
                        BoardEntity boardRemote = home.findByPrimaryKey(no);
                                               
                        result = new BoardDTO();
                       
                        result.setNo(boardRemote.getNo());
                        result.setParentno(boardRemote.getParentno());
                        result.setGroupno(boardRemote.getGroupno());
                        result.setOrderno(boardRemote.getOrderno());
                        result.setDepth(boardRemote.getDepth());
                        result.setWriteDate(boardRemote.getWriteDate());
                        result.setName(boardRemote.getName());
                        result.setPassword(boardRemote.getPassword());
                        result.setTitle(boardRemote.getTitle());
                        result.setContent(boardRemote.getContent());
                       
                        // 해당 글의 첨부파일을 가져와 저장한다
                        ArrayList upFiles = new ArrayList();
                        ArrayList fileList = (ArrayList)boardFileHome.findByBoardNo(boardRemote.getNo().intValue());
                       
                        for(int j=0; j<fileList.size(); j++)
                        {
                                BoardFileEntity file = (BoardFileEntity)fileList.get(j);
                                BoardFileDTO fileDTO = new BoardFileDTO();
                               
                                fileDTO.setNo(file.getNo());
                                fileDTO.setBno(file.getBno());
                                fileDTO.setFileName(file.getFileName());
                                fileDTO.setTempFileName(file.getTempFileName());
                                fileDTO.setContentType(file.getContentType());
                               
                                upFiles.add(fileDTO);                                       
                        }
                       
                        result.setUpFiles(upFiles);
                }
                catch(Exception e){ e.printStackTrace(); }       
               
                return result;
        }
       
        // 전체 게시물의 수를 가져온다
        public int getTotalCount()
        {
                System.out.println("BoardSessionEJB : getTotalCount()");
               
                int result = 0;               
               
                try
                {       
                        BoardEntityHome home = BoardEJBFactory.getBoardEntity();
                        result = home.getTotalCount();                       
                }
                catch(Exception e){ e.printStackTrace(); }       
               
                return result;               
        }
       
        // 페이지에 해당하는 글의 목록을 가져온다
        public Collection getBoardList(PageDTO dto)
        {
                System.out.println("BoardSessionEJB : getBoardList()");
               
                Collection result = new ArrayList();
               
                try
                {       
                        BoardEntityHome boardHome = BoardEJBFactory.getBoardEntity();                       
                        ArrayList temp = (ArrayList)boardHome.findByPage(dto);
                       
                        for(int i=0; i<temp.size(); i++)
                        {                               
                                BoardEntity board = (BoardEntity)temp.get(i);
                                BoardDTO boardDTO = new BoardDTO();                               
                               
                                boardDTO.setDepth(board.getDepth());
                                boardDTO.setNo(board.getNo());                       
                                boardDTO.setWriteDate(board.getWriteDate());
                                boardDTO.setName(board.getName());
                                boardDTO.setTitle(board.getTitle());                       
                                                               
                                result.add(boardDTO);                       
                        }
                }
                catch(Exception e){ e.printStackTrace(); }               
               
                return result;               
        }
       
        public void ejbCreate(){}
        public void ejbActivate() throws EJBException, RemoteException {}
        public void ejbPassivate() throws EJBException, RemoteException {}
        public void ejbRemove() throws EJBException, RemoteException {}
        public void setSessionContext(SessionContext c) throws EJBException,
                        RemoteException {
                System.out.println("BoardSessionEJB : setSessionContext()");
                ctx = c;               
        }
       
        // 글삭제
        public Collection deleteBoard(BoardDTO dto)
        {
                System.out.println("BoardSessionEJB : deleteBoard()");
               
                ArrayList result = new ArrayList();
               
                try
                {       
                        BoardEntityHome home = BoardEJBFactory.getBoardEntity();
                        BoardFileEntityHome fileHome = BoardEJBFactory.getBoardFileEntity();
                       
                        ArrayList fileList = (ArrayList)fileHome.findByBoardNo(dto.getNo().intValue());
                       
                        for(int i=0; i<fileList.size(); i++)
                        {
                                BoardFileEntity fileEntity = (BoardFileEntity)fileList.get(i);
                                result.add(fileEntity.getTempFileName());
                                fileHome.remove(fileEntity.getNo());
                        }
                       
                        home.remove(dto.getNo());
                }
                catch(Exception e){ e.printStackTrace(); }
               
                return result;
        }
       
        // 첨부파일 삭제
        public BoardFileDTO deleteBoardFile(BoardFileDTO dto)
        {
                System.out.println("BoardSessionEJB : deleteBoardFile()");                               
               
                try
                {
                        BoardFileEntityHome home = BoardEJBFactory.getBoardFileEntity();
                        BoardFileEntity remote = home.findByPrimaryKey(dto.getNo());
                       
                        dto.setTempFileName(remote.getTempFileName());
                        home.remove(dto.getNo());
                }
                catch(Exception e){ e.printStackTrace(); }
               
                return dto;
        }
}
// BoardSessionEJB.java --------------------------------------------
 
  • JAVA
  • ORACLE
  • iPhone/Android
  • .NET
  • 표준웹/HTML5
  • 채용/취업무료교육
  • 초보자(재학생)코스

  • 댓글 없음:

    댓글 쓰기