// 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 --------------------------------------------
댓글 없음:
댓글 쓰기