ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Application
    Database/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

    댓글

Designed by Tistory.