본문 바로가기

Java

#050 게시글관련 전체코드 작성(1차)

MainClass

- 클라스 App을 생성한다.

package com.sbs.example.easytextboard;

public class Main {
	public static void main(String[] args) {
		new App().run();
	}
}

AppClass

  • Scanner 입력
  • MemberController / ArticleController 생성
  • 기본 While 문 작성 후, break 포인트 작성하기
package com.sbs.example.easytextboard;

import java.util.Scanner;

import com.sbs.example.easytextboard.controller.ArticleController;
import com.sbs.example.easytextboard.controller.MemberController;

public class App {
	// 가장 상위층 시작
	public void run() {
	Scanner sc = new Scanner(System.in);
	MemberController memberController = new MemberController(); //로그인 관련 내용
	ArticleController articleController = new AritlceController(); //게시글 관련 내용

	While ( true ) {
		System.out.printf(" 명령어 : ");
		String command = sc.nextLine(); //명령어 생성

		if (command.equals("system exit") {
				System.out.println("프로그램을 종료합니다."); //break point 생성
				break;
			}
		else if (command.startsWith("member ")) {
			memberController.run(sc, command); //memberController로 연결시켜주기
			}
		else if (command.startsWith("Article ")) {
			articleController.run(sc, command); //articleController로 연결시켜주기
				}
		}
		sc.close();
	}
}
더보기

Controller

Member Controller

package com.sbs.example.easytextboard.controller;

import java.util.Scanner;

import com.sbs.example.easytextboard.container.Container;
import com.sbs.example.easytextboard.dto.Member;
import com.sbs.example.easytextboard.Service.MemberService;

//Basic Setting 
public class MemberController extends Controller {
	private MemberService memberService;

//Basic Setting 2 for Container
	public  MemberController() {
		memberservice = Container.memberService;
}	
	public void run(Scanner sc, String command) {
--로그인------------------------------------------------------------
	if (command.equals("member login")) {
		System.out.println("== 로그인 ==");

//로그인 되어있는데 로그인 시도 할 시,
		if (Container.session.isLogined()) {
		System.out.println("이미 로그인되어있습니다.");
		return;
}
//기본 셋팅
	String loginId = "";
	String loginPw;
	
	int loginIdMaxCount = 3;
	int loginIdCount = 0;
	boolean loginIdIsValid = false;

	Member member = null;
//조건문 시작
	while (true) {
	//탈출조건
			if (loginIdMaxCount <= loginIdCount) {
					System.out.println("로그인을 취소합니다.");
					break;
			}
	//입력 받기
				System.out.printf("로그인 아이디 : ");
				loginId = sc.nextLine().trim();
				
				if (loginId.length() == 0) {
						loginIdCount++;
						continue;
				}
				
				member = memberService.getMemberByLoginId(loginId);
//없는 아이디 일 시,
				if (member == null) {
						loginIdCount++;
						System.out.printf("%s는 존재하지 않는 로그인아이디 입니다.\n", loginId);
						continue;
				}
		
				logingIdIsValid = true;
				break;
		}
			if (loginIdIsValid == fasle){
					return;
		}
//비밀번호 기본셋팅
	int loginPwMaxCount = 3;
	int loginPwCount = 0;
	boolean loginPwIsValid = false;
	//탈출조건
while (true) {
		if (loginPwMaxCount <= loginPwCount) {
				System.out.pritln("로그인을 취소합니다.");
				break;
		}
		
		System.out.pritnf("로그인비번 : ");
		loginPw = sc.nextLine().trim();
		
		if (loginPw.length() == 0) {
				continue;
		}
		//비밀번호 불일치시
		if (member.loginPw.equals(loginPw) == false) {
				loginPwCount++;
				System.out.pritnf("비밀번호가 일치하지 않습니다~\n");
				continue;
		}

			loginPwIsValid = true;
			break;
		}
		if (loginPwIsValid == false) {
				return;
		}
		System.out.pritnf("로그인 되었습니다! %s님 환영합니다~\n",member.name);
		
		Container.session.loginedMemberId = member.id;
	}
			
--내정보--------------------------------------------------------------------
	if (command.equals("member whoami") {
		//로그아웃 상태
		if (Container.session.isLogout()) {
			System.out.pritnf("로그아웃 상태입니다.");
			return;
		}//확인할 수 있는 회원 상태
		int longinedMemberId = Container.session.loginedMemberId;
		System.out.pritnf(" 당신의 회원번호는 %d번입니다\n",loginedMemberId);
}
--회원가입--------------------------------------------------------------------
	else if (command.equals("member join")) {
		Syetem.out.println("회원가입");

	//회원가입시 필요한 정보 나열		
		String loginId = "";
		String loginPw;
		String name;
	//기본 조건 걸기 (취소 = 탈출 조건)
		int loginIdMaxCount = 3;
		int loginIdCount = 0;
		boolean loginIdIsValid = false;
	//그런 후 조건문 생성!!
	While ( true ) {

		//회원가입 탈출
		if ( loginIdMaxCount <= loginIdCount ) {
			System.out.println("회원가입을 취소합니다");
			break;
		}
		
		//회원가입 1차 시도 (아이디)
		System.out.printf("아이디 : ");
		loginId = sc.nextLine().trim();
		
		if (loginId.length() == 0) {
				loginIdCount++;
				continue;
			}
			//중복 아이디 
		else if (memberService.isJoinAvailableLoginId(loginId == false)) {
				loginIdCount++;
				System.out.printf("%s(은)는 이미 사용중인 아이디 입니다.\n",loginId);
				continue;
			}
		
		loginIdIsValid = true;
		break;
	} 
	if (loginIdIsValid = false) {
		return;
	}

	//회원가입 2차 시도 (비번/이름)
	while (true) {
					System.out.printf("로그인비번 : ");
					loginPw = sc.nextLine().trim();
	
					if (loginPw.length() == 0) {
						continue;
					}
	
					break;
				}
	while (true) {
				System.out.printf(" 이름 : ");
				loginPw = sc.nextLine().trim();

				if (name.length() == 0) {
					continue;
				}

				break;
			}
	
	//마무우리이
		int id = memberService.join(loginId, loginPw, name);

			System.out.printf("%d번 회원이 생성되었습니다.\n", id);

		}	
	}	
}

 

ArticleController

package com.sbs.example.easytextboard.controller;

public class ArticleController {
	pivate ArticleService articleService;

	public ArticleController() {
		articleService = Container.articleService;
	}

	public void run(Scanner sc, String command) {
//--게시글 등록--------------------------------------------------------------
	if (command.equals("article add")) {
			System.out.println("* 게시물 등록 *);

		//로그인이 필요한 상태
		if(Container.session.isLogout()) {
				System.out.println("로그인 후 이용해주세요.");
				return;
			}
		//기본 셋팅

		String title;
		String body;

		System.out.printf("제목 : ");
		title = sc.nextLine();

		System.out.printf(:"내용");
		boby =sc.nextLine();

		int id = articleService.add(Container.session.loginedMemberId, title, body);
		System.out.printf("%d번 게시물이 생성되었습니다.\n",id);
		} 

//--게시물 리스트--------------------------------------------------------------------
		else if (command.startsWith("article list")) {
			int page = Integer.paraseInt(command.split(" ")[2]);
			
			if (page <= 1) {
					page = 1;
				}
			System.out.println(" * 게시물 리스트 * ");
		
		// 게시물이 없을 때
			if (articleService.getArticle().size() == 0) {
					System.out.println("게시물이 존재하지 않습니다.");
					return;
				}
			 System.out.println("번호 / 작성자 / 제목");
		
		// 페이지 별 쪼깨기 시작
			int intemsInAPage = 10;
			int startPos = articleService.getArticlesSize() -1;
			startPos -= (page -1) * itemsInAPage;
			int endPos = startPos - (itemsInAPage -1);

			if (endPos < 0) {
					endPos = 0;
				}
		// 페이지가 없을 때
			if (startPos < 0) {
					System.out.printf("%d페이지는 존재하지 않습니다.\n",page);
					return;
			}
			for (int i = startPos; i >= endPos; i--) {
						Article article = articleService.getArticleByIndex(i);

						System.out.printf("%d /%s / %s\n", article.id, article.member.Id,article.title) 
				}

//--게시물 삭제----------------------------------------------------------------------
else if( command.startsWith("article delete")) {
					System.out.println(" * 게시물 삭제 * ");
			//로그아웃 상태일 경우
			if (Container.session.isLogout()) {
					System.out.println("로그인 후 이용해주세요");
					return;
				}
			// 쪼개기
			int inputedId = Integer.paraseInt(command.split(" ")[2]);  
			// 불러오기
			Aticle article = articleService.getArticle(inputedId);
			// 없는 게시물일 경우
			if (article == null) {
					System.out.printlf("%d번 게시물은 존재하지 않습니다.\n");
					return;
			}// 삭제하기
				articleService.remove(intputedId);
					System.out.printlf("%d번 게시물이 삭제되었습니다.\n",inputedId);
			}
//--게시물 수정----------------------------------------------------------------------
else if (command.startsWith("article modify")) {
				if (Container.session.isLogout()) {
						System.out.println("로그인 후 사용하세요.");
						return;
					}
				System.out.println(" * 게시물 수정 * ");
	// 명령어 쪼개고 과거 게시글 정보 불러오기
				int inputedId = Integer.paraseInt(command.split(" ")[2]);
				Article article = articleService.getArticle(inputedId);
	// 없는 게시글은 없다고 표시
				if (article == null) {
						System.out.printf("%d번 게시물은 존재하지 않습니다.\n",inputedId);
						return;
					}
	// 수정 할 내용 고치기
			System.out.printf("번호 : %d\n", article.id);
			System.out.printf("제목 : ");
			String title = sc.nextLine();
			System.out.printf("내용 : ");
			String body = sc.nextLine();
	// 컨펌하기
			articleService.modify(inputedId, title, body);
	}
//--게시물 검색--------------------------------------------------------------------
	else if( command.startsWith("article search")) {
				String[] commandBits = command.split(" ");
				String searchKeyword = commandBits[2];
				int page = 1;
				//리스트 번호를 얻기 위해 
				if (commandBits.length >= 4) {
						page = Integer.paraseInt(commandBits[3]);
				}
				if (page <= 1) {
						page = 1;
				}	
				System.out.println("* 게시물 검색 *");	
				
				List<Article> searchResultArticles = new ArrayList<>();
				
				for (Article article : aticlesService.getarticles()) {
							if (article.title.contains(searchKeyword)) {
									searchResultArticles.add(article);
						}
					}
				 if (searchResultArticles.size() == 0) {
							System.out.println("검색결과가 존재하지 않습니다.");
							return;
					}
					System.out.println("번호 / 제목");
					
					int itemsInAPage = 10;
					int startPos = searchResultArticles.size() -1;
					startPos -= (page - 1) * itemsInAPage;
					int endPos = startPos - (itemsInAPage - 1);

					if (endPos < 0) {
							endPos = 0;
					}

					if (startPos < 0) {
							System.out.printf("%d페이지는 존재하지 않습니다.\n", page);
							return;
					}

					for (int i = startPos; i >= endPos; i--) {
							Article article = searchResultArticles.get(i);

							System.out.printf("%d / %s\n", article.id, article.title);
							}
						}
					}
				}
		 

 

 

 

 

*전체적인 일상은 노션을 통해 작성하고 있습니다.

링크 : www.notion.so/018-f242a8fb3973420c9d0854e2828ed02c