MVC Pattern
Main : 입력받기
MemverDTO : 데이터 접근
interface MemberDAO : 데이터 관리
interface MemberService : 값들을 검증, 처리
파일 트리
disassemble.DTO
- MemberDTO.java
- IMemberDTO.java
- RequestRequest.java
- IRequestRequest.java
disassemble.DAO
- MemberDAO.java
- IMemberDAO.java
disassemble.Solution.Service
- MemberRegisterService.java
- ChangePasswordService.java
- MemberDeleteService.java
- MemberAllService.java
disassemble.main
//Main.java
package disassemble_Solution.main;
import java.util.Scanner;
import disassemble_Solution.DAO.MemberDAO;
import disassemble_Solution.DTO.RegisterRequest;
import disassemble_Solution.Service.ChangePasswordService;
import disassemble_Solution.Service.MemberAllService;
import disassemble_Solution.Service.MemberDeleteService;
import disassemble_Solution.Service.MemberRegisterService;
public class Main {
private static MemberDAO memberDao = new MemberDAO();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("명령어를 입력하세요");
System.out.print("> ");
String command = sc.nextLine();
if(command.equalsIgnoreCase("exit")){
System.out.println("종료합니다.");
break;
}
if(command.startsWith("new")){
processNewCommand(command.split(" "));
continue;
} else if(command.startsWith("change")){
processChangeCommand(command.split(" "));
continue;
} else if(command.startsWith("all")) {
processAllCommand();
continue;
} else if(command.startsWith("delete")) {
processDeleteCommand(command.split(" "));
continue;
}
printHelp();
}
}
private static void processNewCommand(String[] arg) {
if(arg.length != 5){
printHelp();
return;
}
MemberRegisterService regSvc = new MemberRegisterService(memberDao);
RegisterRequest req = new RegisterRequest();
req.setEmail(arg[1]);
req.setName(arg[2]);
req.setPassword(arg[3]);
req.setConfirmPassword(arg[4]);
regSvc.regist(req);
}
private static void processAllCommand() {
MemberAllService allSvc=new MemberAllService(memberDao);
allSvc.selectAll();
// MemberAllService 객체 생성
// allSvc.selectAll() 호출
}
private static void processChangeCommand(String[] arg) {
if(arg.length != 4) {
printHelp();
return;
}
ChangePasswordService change = new ChangePasswordService(memberDao);
change.changePassword(arg[1], arg[2], arg[3]);
// ChangePasswordService 객체 생성
// change.changePassword() 호출
}
private static void processDeleteCommand(String[] arg) {
if(arg.length != 4) {
printHelp();
return ;
}
MemberDeleteService delete = new MemberDeleteService(memberDao);
delete.checkPassword(arg[1], arg[2], arg[3]);
// MemberDeleteService 객체 생성
// delete.checkPassword() 호출
}
private static void printHelp(){
System.out.println();
System.out.println("명령어 사용법을 확인하세요.");
System.out.println("usage : ");
System.out.println("모든 정보 출력 : all");
System.out.println("정보 등록 : new [이메일] [이름] [암호] [암호확인]");
System.out.println("비밀번호 수정 : change [이메일] [현재비밀번호] [변경할비밀번호]");
System.out.println("정보 삭제 : delete [이메일] [암호] [암호확인]");
System.out.println("종료 : exit");
System.out.println();
}
}
//====================================================================================
//MemberRegisterService.java
package disassemble_Solution.Service;
import java.text.SimpleDateFormat;
import java.util.*;
import disassemble_Solution.DAO.MemberDAO;
import disassemble_Solution.DTO.MemberDTO;
import disassemble_Solution.DTO.RegisterRequest;
public class MemberRegisterService {
private MemberDAO memberDao;
public MemberRegisterService(MemberDAO memberDao) {
this.memberDao = memberDao;
}
public void regist(RegisterRequest req) {
if(!req.getPassword().equals(req.getConfirmPassword())) {
System.out.println("비밀번호가 다릅니다");
return;
}
MemberDTO check = memberDao.selectEmail(req.getEmail());
if(check != null) {
System.out.println(req.getEmail()+"는 등록된 이메일입니다.");
return;
}else {
MemberDTO member = new MemberDTO();
member.setEmail(req.getEmail());
member.setName(req.getName());
member.setPassword(req.getPassword());
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String regDate = sdf.format(date);
member.setRegisterDate(regDate);
memberDao.insert(member);
System.out.println("등록되었습니다");
}
// password == confirmPassword
// email로 계정 등록 여부 확인
// memberDao.insert() 계정 등록
}
}
//====================================================================================
//ChangePasswordService.java
package disassemble_Solution.Service;
import disassemble_Solution.DAO.MemberDAO;
import disassemble_Solution.DTO.MemberDTO;
public class ChangePasswordService {
private MemberDAO memberDao;
public ChangePasswordService(MemberDAO memberDao) {
this.memberDao=memberDao;
}
public void changePassword(String email, String oldPw, String newPw) {
// 이메일 등록여부 확인.
MemberDTO member = memberDao.selectEmail(email);
if(member == null) {
System.out.println(email+"는/은 등록되지 않았습니다");
}else {
if(member.getPassword().equals(oldPw)==false){
System.out.println("비밀번호가 일치하지않습니다");
}else {
member.setPassword(newPw);
memberDao.update(member);
System.out.println("변경되었습니다");
}
}
// 패스워드 확인 및 MemberDAO.update() 호출
}
}
//====================================================================================
//MemberDeleteService.java
package disassemble_Solution.Service;
import disassemble_Solution.DAO.MemberDAO;
import disassemble_Solution.DTO.MemberDTO;
public class MemberDeleteService {
private MemberDAO memberDao;
public MemberDeleteService(MemberDAO memberDao) {
this.memberDao=memberDao;
}
public void checkPassword(String email, String password, String confirmPassword) {
if(password !=null&&password.equals(confirmPassword)==false) {
System.out.println("비밀번호가 서로 다릅니다.");
return;
}
MemberDTO member = memberDao.selectEmail(email);
if(member==null) {
System.out.println(email+"은/는 등록되지 않았습니다");
}else {
if(password.equals(member.getPassword())==false) {
System.out.println("저장된 비밀번호와 일치하지 않습니다.");
}else{memberDao.delete(email);
System.out.println("삭제되었습니다");
}
}
// 패스워드 확인
// MemberDAO 객체 내 selectEmail() 메소드를 호출
// 저장된 회원 정보와 입력된 회원 정보 검증
// MemberDAO 객체 내 delete() 호출
}
}
//====================================================================================
//MemberAllService.java
package disassemble_Solution.Service;
import java.util.Collection;
import disassemble_Solution.DAO.MemberDAO;
import disassemble_Solution.DTO.MemberDTO;
public class MemberAllService {
private MemberDAO memberDao;
public MemberAllService(MemberDAO memberDao){
this.memberDao=memberDao;
}
public void selectAll() {
Collection<MemberDTO> members = memberDao.selectAll();
System.out.println("이메일\t이름\t비밀번호\t가입일");
if(members.isEmpty()==false) {
for(MemberDTO member : members) {
System.out.print(member.getEmail()+"\t");
System.out.print(member.getName()+"\t");
System.out.print(member.getPassword()+"\t");
System.out.println(member.getRegisterDate());
}
}else System.out.println("등록 후 이용하세요");
// MemberDAO 객체 내부 selectAll() 호출 후 회원 모든 정보 출력
}
}
//====================================================================================
//MemberDAO.java
package disassemble_Solution.DAO;
import java.util.*;
import disassemble_Solution.DTO.MemberDTO;
public class MemberDAO implements IMemberDAO {
private HashMap<String,MemberDTO> members = new HashMap<>();
@Override
public Collection<MemberDTO> selectAll() {
return members.values();//값들을 반환한다
}
@Override
public MemberDTO selectEmail(String email) {
return members.get(email);
}
@Override
public void insert(MemberDTO member) {
members.put(member.getEmail(),member);
}
@Override
public void update(MemberDTO member) {
members.put(member.getEmail(),member);
}
@Override
public void delete(String email) {
members.remove(email);
}
}
//====================================================================================
//IMemberDAO.java
package disassemble_Solution.DAO;
import java.util.Collection;
import disassemble_Solution.DTO.MemberDTO;
public interface IMemberDAO {
public Collection<MemberDTO> selectAll() ;
public MemberDTO selectEmail(String email);
public void insert(MemberDTO member);
public void update(MemberDTO member);
public void delete(String email);
}
//====================================================================================
//RequestRequest.java
package disassemble_Solution.DTO;
public class RegisterRequest implements IRegisterRequest{
String name,email,password,confirmPassword;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getConfirmPassword() {
return confirmPassword;
}
public void setConfirmPassword(String confirmPassword) {
this.confirmPassword = confirmPassword;
}
}
//====================================================================================
//IRequestRequest.java
package disassemble_Solution.DTO;
public interface IRegisterRequest {
public String getEmail();
public String getName() ;
public String getPassword();
public String getConfirmPassword();
public void setPassword(String password);
public void setEmail(String email);
public void setName(String name);
public void setConfirmPassword(String confirmPassword);
}
//====================================================================================
//MemberDTO.java
package disassemble_Solution.DTO;
public class MemberDTO implements IMemberDTO {
private String email;
private String name;
private String password;
private String registerDate;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRegisterDate() {
return registerDate;
}
public void setRegisterDate(String registerDate) {
this.registerDate = registerDate;
}
}
//====================================================================================
//IMemberDTO.java
package disassemble_Solution.DTO;
public interface IMemberDTO {
public void setEmail(String email);
public void setPassword(String password);
public void setName(String name);
public void setRegisterDate(String registerDate);
public String getEmail();
public String getPassword();
public String getName();
public String getRegisterDate();
}