-
ApplicationDatabase/Oracle 2016. 9. 8. 14:08반응형
import java.util.List;
import java.util.Scanner;
import javax.swing.plaf.synth.SynthSeparatorUI;
import com.maetamong.dao.NewsDao;
import com.maetamong.dao.NewsDaoImpl;
import com.maetamong.vo.CategoryVO;
import com.maetamong.vo.JournalistVO;
import com.maetamong.vo.NewsVO;
public class Application {
/**
* Oracle Database에 접근할 수 있는 NewsDao를 선언한다.
*/
private NewsDao newsDao;
private Scanner input;
/**
* NewsDao를 초기화 시킨다.
*/
public Application() {
newsDao = new NewsDaoImpl();
input = new Scanner(System.in);
}
public void startProcess() {
int chooseMenu = 0;
int chooseJournalist = 0;
while ( true ) {
System.out.println("ktds university 언론사 입니다.");
System.out.println("작업을 선택하세요.");
System.out.println("===============================");
System.out.println("1. 기사등록");
System.out.println("2. 기사조회");
System.out.println("3. 종료");
System.out.println("===============================");
chooseMenu = input.nextInt();
if ( chooseMenu == 1 ) {
System.out.println("기사 등록을 선택했습니다.");
// 카테고리를 선택한다.
chooseMenu = choiceCategory();
// 기자 목록을 DB에서 가져온다.
chooseJournalist = choiceJournalist();
// 기사를 등록한다.
NewsVO newsVO = new NewsVO();
newsVO.setCategoryId(chooseMenu);
newsVO.setJournalistId(chooseJournalist);
input.nextLine();
System.out.println("제목을 입력하세요.");
String subject = input.nextLine();
newsVO.setSubject(subject);
System.out.println("내용을 입력하세요.");
System.out.println("기사 입력을 마치려면 \"<끝>\"을 입력하세요.");
// 기사의 내용
StringBuffer buffer = new StringBuffer();
String content = null;
while ( true ) {
content = input.nextLine();
if ( content.equals("<끝>") ) {
break;
}
// 문자열 합치기
buffer.append(content + "\n");
}
newsVO.setContent(buffer.toString());
newsDao.addNewNews(newsVO);
}
else if ( chooseMenu == 2 ) {
// 카테고리를 선택한다.
chooseMenu = choiceCategory();
boolean newsExist = printNewses(chooseMenu);
// 기사 목록을 출력한다.
if ( !newsExist ) {
continue;
}
System.out.println("보고 싶은 기사 번호를 입력하세요.");
System.out.println("원치 않으시면, 0 을 입력하세요.");
chooseMenu = input.nextInt();
if ( chooseMenu == 0) {
continue;
}
// 기사의 추천수를 1 증가 시킨다.
newsDao.updateRecommendCount(chooseMenu);
// 기사 번호에 해당하는 기사를 가져와 보여준다.
printNews(chooseMenu);
System.out.println("이 기사를 삭제 하시겠습니까?");
if( input.next().equalsIgnoreCase("Y") ) {
newsDao.deleteNews(chooseMenu);
}
else if ( input.next().equalsIgnoreCase("N") ) {
break;
}
}
else if ( chooseMenu == 3 ) {
System.out.println("종료를 선택하셨습니다.");
System.out.println("안녕히 가세요.");
break;
}
}
}
public int choiceCategory() {
int chooseMenu = 0;
List<CategoryVO> categories = null;
while ( true ) {
System.out.println("등록할 기사의 분류를 선택해주세요.");
// DB에서 ParentCategoryId가 chooseMenu 인것을 가져온다.
categories = newsDao.getCategoriesOf(chooseMenu);
System.out.println("===============================");
for ( CategoryVO category : categories ){
System.out.printf("%d. %s\n",
category.getCategoryId()
, category.getCategoryName());
}
System.out.println("===============================");
// 카테고리 선택받음.
chooseMenu = input.nextInt();
for ( CategoryVO category : categories ){
if ( category.getCategoryId() == chooseMenu ) {
System.out.printf("%s을(를) 선택했습니다.\n",
category.getCategoryName());
}
}
// 선택한 카테고리가 리프노드 일 경우 카테고리 선택 반복을 종료함.
if ( newsDao.isCategoryLeafNode(chooseMenu) ) {
break;
}
}
return chooseMenu = 0;
}
public int choiceJournalist() {
int chooseJournalist = 0;
List<JournalistVO> journalists = newsDao.getJournalist();
// 기자를 보여준다.
System.out.println("기사를 작성할 기자를 선택해주세요.");
for ( JournalistVO journalist : journalists) {
System.out.printf("%d. %s, %s, %s\n",
journalist.getJournalistId()
, journalist.getJournalistNmae()
, journalist.getJournalistIdEmail()
, journalist.getCompany());
}
System.out.println("===============================");
chooseJournalist = input.nextInt();
for ( JournalistVO journalist : journalists) {
if ( journalist.getJournalistId() == chooseJournalist ) {
System.out.printf("%s 기자님, 기사를 입력해 주세요. \n",
journalist.getJournalistNmae());
break;
}
}
return chooseJournalist;
}
private boolean printNewses(int category) {
List<NewsVO> newses = newsDao.getNewsesOf(category);
boolean isNotEmpty = true;
if ( newses.size() == 0 ) {
System.out.println("기사가 들어있지 않습니다.");
isNotEmpty = false;
return isNotEmpty;
}
System.out.printf("현재 기사는 총 : %d건 있습니다.\n", newses.size());
for ( NewsVO newsVO : newses ) {
System.out.println("===============================");
System.out.println("번호 : " + newsVO.getNewsId());
System.out.println("추천수 : " + newsVO.getRecommendCount());
System.out.println("제목 : " + newsVO.getSubject());
}
System.out.println("===============================");
return isNotEmpty;
}
private void printNews(int newsId) {
NewsVO newsVO = newsDao.getNewsAt(newsId);
JournalistVO journalistVO = newsVO.getJournalistVO();
CategoryVO categoryVO = newsVO.getCategoryVO();
System.out.println("===============================");
System.out.println("번호 : " + newsVO.getNewsId());
System.out.println("분류 : " + categoryVO.getCategoryName());
System.out.println("작성일 : " + newsVO.getCreatedDate());
System.out.println("추천수 : " + newsVO.getRecommendCount());
System.out.println("기자 : " + journalistVO.getJournalistNmae());
System.out.println("제목 : " + newsVO.getSubject());
System.out.println("내용 : " );
System.out.println(newsVO.getContent());
System.out.println("===============================");
}
public static void main(String[] args) {
new Application().startProcess();
}
}
반응형'Database > Oracle' 카테고리의 다른 글
NewsVO (0) 2016.09.08 JournalistVO (0) 2016.09.08 CategoryVO (0) 2016.09.08 NewsDao (0) 2016.09.08 NewsDaoImpl (0) 2016.09.08