본문 바로가기

수업관련

게시판 수정v2

package memberManagerV2;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/*
 * 끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝
 * 끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝끝
 */

class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);

		DB db = new DB();
		db.loadGlobal();

		MemberDao memberDao = new MemberDao(db);

		ArticleDao articleDao = new ArticleDao(db);

		MemberService memberService = new MemberService(memberDao);

		ArticleService articleService = new ArticleService(articleDao);

		TotalController controller = new TotalController(memberService, articleService);
		controller.setScanner(scanner);

		while (true) {
			controller.shwHelp();
			System.out.print(" > ");
			String cmd = scanner.next().trim();
			if (cmd.equals("join")) {
				scanner.nextLine();
				controller.doCommandJoin();
			} else if (cmd.equals("help")) {
				controller.shwHelp();
			} else if (cmd.equals("mmodify")) {
				scanner.nextLine();
				controller.doCommandModify();
			} else if (cmd.equals("mlist")) {
				scanner.nextLine();
				controller.doCommandList();
			} else if (cmd.equals("login")) {
				scanner.nextLine();
				controller.doCommandLogIn();
			} else if (cmd.equals("logout")) {
				scanner.nextLine();
				controller.doCommandLogOut();
			} else if (cmd.equals("signout")) {
				scanner.nextLine();
				// 게시판 ==============
				controller.doCommandSignOut();
			} else if (cmd.equals("add")) {
				scanner.nextLine();
				controller.doCommandAdd();
			} else if (cmd.equals("alist")) {
				scanner.nextLine();
				controller.doCommandartList();
			} else if (cmd.equals("amodify")) {
				scanner.nextLine();
				controller.doCommandartModify();
			} else if (cmd.equals("detail")) {
				scanner.nextLine();
				controller.doCommandDetail();
			} else if (cmd.equals("delete")) {
				scanner.nextLine();
				controller.doCommandDelete();
			} else if (cmd.equals("exit")) {
				System.out.println("프로그램을 종료합니다.");
				break;
			} else {
				System.out.println("일치하는 명령어가 없습니다.");
			}
		}
		scanner.close();
	}
}

class TotalController {
	MemberService memberService;
	Scanner scanner;
	Member loggedInMember;
	ArticleService articleService;

	TotalController(MemberService memberService, ArticleService articleService) {
		this.memberService = memberService;
		this.articleService = articleService;
		loggedInMember = null;

	}
	// 게시물 영역 ================================================================

	public void doCommandDelete() {
		System.out.printf("삭제하실 게시물의 번호를 입력해 주십시오 : ");
		int num = scanner.nextInt();
		int logOwnId = loggedInMember.ownId;
		if (loggedInMember == null) {
			System.out.println("로그인이 필요한 서비스 입니다.");
		} else {
			articleService.toDelete(num, logOwnId);
		}
	}

	public void doCommandDetail() {
		System.out.printf("조회하실 게시물의 번호를 입력해 주십시오 : ");
		int num = scanner.nextInt();

		articleService.printDetail(num);
	}

	public void doCommandartModify() {
		System.out.printf("수정하실 게시물의 번호를 입력해 주십시오 : ");
		int num = scanner.nextInt();

		String title = null;
		String body = null;
		int logOwnId = loggedInMember.ownId;

		if (loggedInMember == null) {
			System.out.println("로그인이 필요한 서비스입니다.");
		} else {
			while (true) {
				System.out.printf("제목을 입력해 주십시오.%n");
				System.out.printf(" >");
				title = scanner.next().trim();
				if (title.length() == 0) {
					System.out.println("제목을 입력해 주십시요.");
					continue;
				}
				if (title.length() < 2) {
					System.out.println("제목은 2자 이상이어야 합니다.");
					continue;
				}
				break;
			}
			while (true) {
				System.out.println("내용을 입력해주십시오 :  ");
				System.out.printf(" >");
				body = scanner.next().trim();
				if (body.length() == 0) {
					System.out.println("내용을 입력해 주십시요.");
					continue;
				}
				if (body.length() < 5) {
					System.out.println("내용은 5자 이상이어야 합니다.");
					continue;
				}
				break;
			}
			System.out.println("이대로 수정하시겠습니까? y / n");
			System.out.print("> ");
			String yn = scanner.next().trim();
			if (yn.equals("y")) {
				articleService.artModify(num, title, body, logOwnId);
			}
		}

	}

	public void doCommandAdd() {// 게시물 추가

		String title = null;
		String body = null;
		int writerOwnId = 0;
		String writer = null;
		if (loggedInMember == null) {
			System.out.println("로그인이 필요한 서비스입니다.");
		} else {
			while (true) {
				System.out.printf("제목을 입력해 주십시오.%n");
				System.out.printf(" >");
				title = scanner.next().trim();
				if (title.length() == 0) {
					System.out.println("제목을 입력해 주십시요.");
					continue;
				}
				if (title.length() < 2) {
					System.out.println("제목은 2자 이상이어야 합니다.");
					continue;
				}
				break;
			}
			while (true) {
				System.out.println("내용을 입력해주십시오 :  ");
				System.out.printf(" >");
				body = scanner.next().trim();
				if (body.length() == 0) {
					System.out.println("내용을 입력해 주십시요.");
					continue;
				}
				if (body.length() < 5) {
					System.out.println("내용은 5자 이상이어야 합니다.");
					continue;
				}
				break;
			}
			System.out.println("이대로 작성하시겠습니까? y / n");
			System.out.print("> ");
			String yn = scanner.next().trim();
			writerOwnId = loggedInMember.ownId;
			writer = loggedInMember.nickName;
			if (yn.equals("y")) {
				articleService.add(title, body, writer, writerOwnId);
			}
		}
	}

	public void doCommandartList() {
		articleService.printList();
	}

//멤버 영역 =======================================================================
	public void doCommandList() {
		memberService.printList();
	}

	public void doCommandSignOut() {
		if (loggedInMember == null) {
			System.out.println("로그인이 필요한 서비스 입니다.");
		} else {
			// 아이디 비밀번호를 다시 한번 확인한다.
			System.out.println("본인 확인을 위해 다시한번 아이디와 비밀번호를 입력해 주십시오.");
			System.out.println("아이디 : ");
			System.out.print(" >");
			String ckId = scanner.next().trim();
			System.out.println("비밀번호 : ");
			System.out.print(" >");
			String ckPw = scanner.next().trim();
			if (loggedInMember.id.equals(ckId) && loggedInMember.pw.equals(ckPw)) {
				System.out.print("정말 계정을 삭제하시겠습니까?");
				System.out.printf("\ty or n  :  ");

				String asr = scanner.next().trim();

				if (asr.equals("y")) {
					memberService.deleteId(loggedInMember);
				}
			}
		}
		loggedInMember = null;
	}

	public void doCommandModify() {
		if (loggedInMember == null) {
			System.out.println("로그인이 필요한 서비스 입니다.");
		} else {
			// 아이디 비밀번호를 다시 한번 확인한다.
			System.out.println("본인 확인을 위해 다시한번 아이디와 비밀번호를 입력해 주십시오.");
			System.out.println("아이디 : ");
			System.out.print(" >");
			String ckId = scanner.next().trim();
			System.out.println("비밀번호 : ");
			System.out.print(" >");
			String ckPw = scanner.next().trim();

			String cgPw = null;
			String cgNN = null;
			if (loggedInMember.id.equals(ckId) && loggedInMember.pw.equals(ckPw)) {

				System.out.println("변경하실 비밀번호와 닉네임을 입력해주십시오.");
				System.out.println("비밀번호 :");
				System.out.print(" >");
				String pw = scanner.next().trim();
				System.out.println("닉네임 :");
				System.out.print(" >");
				String nickName = scanner.next().trim();

				cgPw = pw;
				cgNN = nickName;

				memberService.login(ckId, ckPw).pw = cgPw;
				memberService.login(ckId, ckPw).nickName = cgNN;
				loggedInMember.pw = cgPw;
				loggedInMember.nickName = cgNN;

			} else {
				System.out.println("입력하신 정보가 계정과 일치하지 않습니다.");
			}

			memberService.memberModify(loggedInMember.id, cgPw, cgNN, loggedInMember);
		}
		loggedInMember = null;
	}

	public void doCommandLogOut() {
		if (loggedInMember == null) {
			System.out.println("로그인이 필요합니다.");
		} else {
			System.out.printf("%s님 또 뵙길 기원합니다.%n", loggedInMember.nickName);
			loggedInMember = null;
			System.out.println("로그아웃 되었습니다.");
		}
	}

	public void doCommandLogIn() {
		System.out.println("== 로그인 ==");
		System.out.printf("아이디를 입력해 주십시오.%n");
		System.out.printf(">");
		String id = scanner.next().trim();
		System.out.printf("비밀번호를 입력해 주십시오.%n");
		System.out.printf(">");
		String pw = scanner.next().trim();

		Member logginIn = memberService.login(id, pw);
		if (logginIn != null) {
			loggedInMember = logginIn;
			System.out.println("로그인 되었습니다.");
			System.out.printf("%s님 환영합니다.%n", loggedInMember.nickName);
		} else {
			System.out.println("로그인에 실패했습니다.");
		}
	}

	public void doCommandJoin() {
		System.out.println("== 회원가입 ==");

		String id;
		String pw;
		String pwCheck;
		String nickName;

		while (true) {
			System.out.printf("사용하실 아이디를 입력해 주십시오.%n");
			System.out.printf(" >");
			id = scanner.next().trim();
			if (id.length() == 0) {
				System.out.println("아이디를 입력해 주십시요.");
				continue;
			}
			if (id.length() < 3) {
				System.out.println("아이디는 3자 이상이어야 합니다.");
				continue;
			}
			if (memberService.isUsedId(id) == true) {
				System.out.println("이미 사용중인 아이디 입니다.");
				continue;
			}
			break;
		}
		while (true) {
			boolean pwValid = true;
			while (true) {
				System.out.printf("사용하실 비밀번호를 입력해 주십시오.%n");
				System.out.printf(" >");
				pw = scanner.next().trim();
				if (pw.length() == 0) {
					System.out.println("비밀번호를 입력해 주십시요.");
					continue;
				}
				if (pw.length() < 4) {
					System.out.println("비밀번호는 4자 이상이어야 합니다.");
					continue;
				}
				break;
			}
			while (true) {
				System.out.println("로그인 비밀번호 확인 : ");
				System.out.printf(" >");
				pwCheck = scanner.next().trim();
				if (pwCheck.length() == 0) {
					System.out.println("비밀번호 확인을 위해 비밀번호를 다시 입력해주십시오.");
					continue;
				}
				if (pwCheck.equals(pw) == false) {
					System.out.println("입력한 비밀번호가 일치하지 않습니다.");
					pwValid = false;
					break;
				}
				break;
			}
			if (pwValid) {
				break;
			}
		}

		System.out.printf("사용하실 닉네임을 입력해 주십시오.%n");
		System.out.printf(" >");
		nickName = scanner.next().trim();

		System.out.printf("아이디 : %s 비밀번호 : %s 닉네임 : %s%n", id, pw, nickName);
		System.out.println("이대로 진행하시겠습니까? y / n");
		System.out.print("> ");
		String yn = scanner.next().trim();
		if (yn.equals("y")) {
			memberService.join(id, pw, nickName);
			System.out.printf("%s님의 회원가입을 환영합니다.%n%n", nickName);
		}
	}

	public void shwHelp() {
		System.out.println("== 회원 관리 프로그램 ==");
		System.out.printf("help- 	명령어 리스트%n");
		System.out.printf("join-    회원가입%n");
		System.out.printf("login-   로그인%n");
		System.out.printf("logout-  로그아웃%n");
		System.out.printf("signout- 회원탈퇴%n");
		System.out.printf("mlist-	회원 리스트%n");
		System.out.printf("mmodify- 회원 정보 수정%n");
		System.out.printf("==== 게시판 프로그램 ====%n");
		System.out.printf("add-  	게시물 작성%n");
		System.out.printf("alist-   게시물 리스트%n");
		System.out.printf("amodify- 게시물 수정%n");
		System.out.printf("detail- 	게시물 디테일%n");
		System.out.printf("delete- 	게시물 삭제%n");
		System.out.printf("exit-    프로그램 종료%n");
	}

	public void setScanner(Scanner scanner) {
		this.scanner = scanner;
	}
}

class ArticleService {
	ArticleDao articleDao;

	ArticleService(ArticleDao articleDao) {
		this.articleDao = articleDao;
	}

	public void toDelete(int num, int logOwnId) {
		articleDao.delete(num, logOwnId);
	}

	public void printDetail(int num) {
		articleDao.detail(num);

	}

	public void artModify(int num, String title, String body, int logOwnId) {
		articleDao.modify(num, title, body, logOwnId);
	}

	public void printList() {
		articleDao.printList();
	}

	public void add(String title, String body, String writer, int writerOwnId) {
		articleDao.writeArticle(title, body, writer, writerOwnId);
	}
}

class MemberService {
	MemberDao memberDao;

	MemberService(MemberDao articleDao) {
		this.memberDao = articleDao;
	}

	public void printList() {
		memberDao.printList();
	}

	void deleteId(Member loggedInMember) {
		memberDao.deleteId(loggedInMember);
	}

	void memberModify(String id, String pw, String nickName, Member member) {
		memberDao.modify(id, pw, nickName, member);
	}

	boolean checkId(String id) {
		if (isUsedId(id)) {
			return true;
		}
		return false;
	}

	boolean isUsedId(String id) { // true = 가입된 아이디, false = 가입되지 않은 아이디.
		return memberDao.isUsedId(id);
	}

	Member login(String id, String pw) {
		Member loggingIn = memberDao.login(id, pw);
		return loggingIn;
	}

	public void join(String id, String pw, String nickName) {
		memberDao.join(id, pw, nickName);
	}
}

class ArticleDao {
	DB db;
	Article[] articles;
	int articlesLastIndex;
	int articlesLastId;

	ArticleDao(DB db) {
		this.db = db;

		articles = db.getArticlesFromFiles();

		for (int i = 0; i < articles.length; i++) {
			if (articles[i] == null) {
				articlesLastIndex = i - 1;
				break;
			}
		}
		articlesLastId = db.getLastMemberOwnId();
	}

	public void delete(int num, int logOwnId) {
		Article article = getArticleById(num);
		if (article.writerOwnId == logOwnId) {
			String articleFilePath = "article/" + num + ".txt";
			db.deleteArticle(articleFilePath);
		}else {
			System.out.println("본인이 작성한 게시물만 수정이 가능합니다.");
		}
	}

	void detail(int num) {
		Article article = getArticleById(num);
		System.out.println(article);
	}

	void modify(int num, String title, String body, int logOwnId) {
		Article article = getArticleById(num);
		article.title = title;
		article.body = body;
		if (article.writerOwnId == logOwnId) {
			String articleFilePath = "article/" + num + ".txt";
			db.writeArticleJsonFile(articleFilePath, article);
			System.out.println("게시물이 수정되었습니다.");
		} else {
			System.out.println("본인이 작성한 게시물만 수정이 가능합니다.");
		}
	}

	Article getArticleById(int num) {
		int index = getArticleIndexById(num);

		if (index >= 0) {
			return articles[index];
		}
		return null;
	}

	int getArticleIndexById(int num) {
		for (int i = 0; i <= articlesLastIndex; i++) {
			if (articles[i].id == num) {
				return i;
			}
		}
		return -1;
	}

	public void printList() {
		System.out.println(db.getartList());
	}

	public void writeArticle(String title, String body, String writer, int writerOwnId) {
		int id = articlesLastId + 1;
		String regDate = Util.getNowDateStr();
		Article article = new Article(id, regDate, title, body, writer, writerOwnId);
		articlesLastIndex++;

		articles[articlesLastIndex] = article;

		String articleFilePath = "article/" + article.id + ".txt";
		db.writeArticleJsonFile(articleFilePath, article);

		articlesLastId++;
		db.updateLastArticleId(articlesLastId);
	}

}

class MemberDao {
	DB db;
	Member[] members;
	Article[] articles;
	int lastMemberIndex;
	int lastMemberOwnId;
	int ArticlesLastIndex;
	int ArticlesLastOwnId;

	MemberDao(DB db) {
		this.db = db;

		members = db.getMembersFromFiles();

		for (int i = 0; i < members.length; i++) {
			if (members[i] == null) {
				lastMemberIndex = i - 1;
				break;
			}
		}
		lastMemberOwnId = db.getLastMemberOwnId();
	}

	public void printList() {
		System.out.println(db.getList());

	}

	public void deleteId(Member loggedInMember) {
		Member toDelete = loggedInMember;

		db.deleteMember(toDelete);
	}

	public void modify(String id, String pw, String nickName, Member member) {
		db.memberModifier(id, pw, nickName, member);
	}

	boolean isUsedId(String id) {// 멤버가 널일때 false = 사용된 아이디가 아니다.
		Member member = db.getMemberById(id);
		if (member == null) {
			return false;
		}
		return true;
	}

	Member login(String id, String pw) {
		Member loggingInMember = new Member();
		loggingInMember.id = id;
		loggingInMember.pw = pw;
		Member m = db.getMemberById(id);

		if (m == null) {
			System.out.println("가입되지 않은 회원입니다.");
		} else if (m.id.equals(loggingInMember.id) && m.pw.equals(loggingInMember.pw)) {
			return m;
		}
		return null;
	}

	public void join(String id, String pw, String nickName) {
		int ownId = lastMemberOwnId + 1;
		String regDate = Util.getNowDateStr();
		Member member = new Member(id, pw, nickName, regDate, ownId);
		lastMemberIndex++;

		members[lastMemberIndex] = member;

		String memberFilePath = "member/" + member.ownId + ".txt";
		db.writeMemberJsonFile(memberFilePath, member);

		lastMemberOwnId++;
		db.updateLastMemberOwnId(lastMemberOwnId);
	}

}

class Member {
	public String id;
	public String pw;
	public String nickName;
	public int ownId;
	public String regDate;

	public Member() {

	}

	public Member(String id, String pw, String nickName, String regDate, int ownId) {
		this.id = id;
		this.pw = pw;
		this.nickName = nickName;
		this.regDate = regDate;
		this.ownId = ownId;
	}

	@Override
	public String toString() {
		return String.format("%n<Member List> %nnickName : %s%nownId : %s%nid : %s%nregDate : %s%n", nickName, ownId,
				id, regDate);
	}
}

class Article {
	public int id;
	public String regDate;
	public String title;
	public String body;
	public String writer;
	public int writerOwnId;

	public Article() {

	}

	public Article(int id, String regDate, String title, String body, String writer, int writerOwnId) {
		this.id = id;
		this.regDate = regDate;
		this.title = title;
		this.body = body;
		this.writer = writer;
		this.writerOwnId = writerOwnId;

	}

	@Override
	public String toString() {
		return String.format("%n<Article List> %nid : %s%nregDate : %s%n" + "wirter = %s%ntitle : %s%nbody : %s%n", id,
				regDate, writer, title, body);
	}

}

class DB {
	Global global;

	void init() {// 일치
		loadGlobal();
	}

	public void deleteArticle(String articleFilePath) {
		String fileNm = articleFilePath;
		File file = new File(fileNm);
		if (file.exists()) {
			if (file.delete()) {
				System.out.println("게시물이 삭제 되었습니다.");
			} else {
				System.out.println("게시물 삭제가 실패하였습니다.");
			}
		} else {
			System.out.println("게시물이 존재하지 않습니다.");
		}
	}

	// article =======
	List<Article> getartList() {
		List<Article> articleList = getArticles();
		return articleList;
	}

	List<Article> getArticles() {
		List<Article> articles = new ArrayList<>();
		int lastId = getArticlesLastId();

		for (int i = 1; i < lastId + 1; i++) {
			String filePath = "article/" + i + ".txt";
			Article article = readArticleFromJsonFile(filePath);
			if (article != null) {
				articles.add(article);
			}
		}
		return articles;
	}

	Article[] getArticlesFromFiles() {
		Article[] articles = new Article[100];

		int articlesLastId = getArticlesLastId();

		int articlesIndex = 0;
		for (int i = 1; i < articlesLastId; i++) {
			String fileName = "article/" + i + ".txt";
			Article article = readArticleFromJsonFile(fileName);

			if (article != null) {
				articles[articlesIndex] = article;
				articlesIndex++;
			}
		}
		return articles;

	}

	private Article readArticleFromJsonFile(String fileName) {
		ObjectMapper om = new ObjectMapper();
		Article article = null;

		try {
			article = om.readValue(new File(fileName), Article.class);
		} catch (JsonParseException e) {
			e.printStackTrace();
		} catch (JsonMappingException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {

		} catch (IOException e) {
			e.printStackTrace();
		}
		return article;
	}

	int getArticlesLastId() {
		return global.articlesLastId;
	}

	public void updateLastArticleId(int articlesLastId) {

		global.articlesLastId = articlesLastId;

		writeGlobalJsonFile("global.txt", global);
	}

	public void writeArticleJsonFile(String articleFilePath, Article article) {

		String folderPath = "article";// 멤버폴더 먼저 만들기
		File Folder = new File(folderPath);

		if (!Folder.exists()) {
			Folder.mkdir();
		}

		ObjectMapper om = new ObjectMapper();
		try {
			om.writeValue(new File(articleFilePath), article);
		} catch (JsonGenerationException e) {
			e.printStackTrace();
		} catch (JsonMappingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

// member ===========
	List<Member> getList() {
		List<Member> memberList = getMembers();

		return memberList;
	}

	public void memberModifier(String id, String pw, String nickName, Member m) {
		Member member = new Member();
		member.regDate = m.regDate;
		member.ownId = m.ownId;
		member.id = id;
		member.pw = pw;
		member.nickName = nickName;

		String fileNm = "member/" + member.ownId + ".txt";
		File file = new File(fileNm);
		if (file.exists()) {
			if (file.delete()) {
				System.out.println("기존 정보가 삭제되었습니다.");
			}
		} else {
			System.out.println("회원이 존재하지 않습니다.");
		}

		ObjectMapper om = new ObjectMapper();
		try {
			om.writeValue(new File(fileNm), member);
		} catch (JsonGenerationException e) {
			e.printStackTrace();
		} catch (JsonMappingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("회원정보가 수정되었습니다.");
	}

	public void deleteMember(Member toDelete) {
		String fileNm = "member\\" + toDelete.ownId + ".txt";
		File file = new File(fileNm);
		if (file.exists()) {
			if (file.delete()) {
				System.out.println("회원탈퇴 성공");
			} else {
				System.out.println("회원탈퇴 실패");
			}
		} else {
			System.out.println("회원이 존재하지 않습니다.");
		}
	}

	Member getMemberByOwnId(int ownId) {
		List<Member> members = getMembers();

		for (Member member : members) {
			if (member.ownId == ownId) {
				return member;
			}
		}
		return null;
	}

	Member getMemberById(String id) {
		List<Member> members = getMembers();

		for (Member member : members) {
			if (member.id.equals(id)) {
				return member;
			}
		}
		return null;
	}

	List<Member> getMembers() {
		List<Member> members = new ArrayList<>();
		int lastId = getLastMemberOwnId();

		for (int i = 1; i < lastId + 1; i++) {
			String filePath = "member/" + i + ".txt";
			Member member = readMemberFromJsonFile(filePath);
			if (member != null) {
				members.add(member);
			}
		}
		return members;
	}

	public void loadGlobal() {// 일치
		global = readGlobalFromJsonFile("global.txt");
	}

	Global readGlobalFromJsonFile(String filePath) {// 일치
		ObjectMapper om = new ObjectMapper();
		Global global = null;

		try {
			global = om.readValue(new File(filePath), Global.class);
		} catch (JsonParseException e) {
			e.printStackTrace();
		} catch (JsonMappingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			global = new Global();
			writeGlobalJsonFile(filePath, global);
		}
		return global;
	}

	void writeGlobalJsonFile(String filePath, Global global) {// 일치

		ObjectMapper om = new ObjectMapper();

		try {
			om.writeValue(new File(filePath), global);
		} catch (JsonGenerationException e) {
			e.printStackTrace();
		} catch (JsonMappingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void updateLastMemberOwnId(int lastMemberOwnId) {// 일치
		global.lastMemberOwnId = lastMemberOwnId;

		writeGlobalJsonFile("global.txt", global);

	}

	void writeMemberJsonFile(String filePath, Member member) {// 일치

		String folderPath = "member";// 멤버폴더 먼저 만들기
		File Folder = new File(folderPath);

		if (!Folder.exists()) {
			Folder.mkdir();
		}

		ObjectMapper om = new ObjectMapper();
		try {
			om.writeValue(new File(filePath), member);
		} catch (JsonGenerationException e) {
			e.printStackTrace();
		} catch (JsonMappingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public int getLastMemberOwnId() {// 일치
		return global.lastMemberOwnId;
	}

	Member[] getMembersFromFiles() {// 일치
		Member[] members = new Member[100];

		int lastMemberOwnId = getLastMemberOwnId();

		int membersIndex = 0;
		for (int i = 1; i < lastMemberOwnId; i++) {
			String fileName = "member/" + i + ".txt";
			Member member = readMemberFromJsonFile(fileName);

			if (member != null) {
				members[membersIndex] = member;
				membersIndex++;
			}
		}
		return members;
	}

	Member readMemberFromJsonFile(String filePath) {// 일치
		ObjectMapper om = new ObjectMapper();
		Member member = null;

		try {
			member = om.readValue(new File(filePath), Member.class);
		} catch (JsonParseException e) {
			e.printStackTrace();
		} catch (JsonMappingException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {

		} catch (IOException e) {
			e.printStackTrace();
		}
		return member;
	}
}

class Util {

	static String getNowDateStr() {
		Calendar cal = Calendar.getInstance();
		SimpleDateFormat Date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String dateStr = Date.format(cal.getTime());

		return dateStr;
	}
}

abstract class Table {
	Global global;

}

class ArticleTable extends Table {

}

class MemberTable extends Table {

}

class Global {
	public int articlesLastId;
	public int lastMemberOwnId;

	Global() {
		lastMemberOwnId = 0;
		articlesLastId = 0;
	}
}

'수업관련' 카테고리의 다른 글

MVC 수정v1  (0) 2020.06.09
css  (0) 2020.06.06
Figma 를 이용한 the legends 앱 구현  (0) 2020.05.29
php codes  (0) 2020.05.27
숙제  (0) 2020.05.25