java

39일차 오후 개인 공부(따로 보충)

비루블 2022. 8. 19. 01:03

example> entity> Professor.java

package com.example.entity;

import java.util.Date;
import java.util.List;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter // 꺼낼때 사용
@Setter // 추가할때 사용
@ToString // 담겨있는 데이터가 어떤겁니까 // 현재의 데이터는 어떤건가요?
public class Professor {
    private Long Id = null; // 학번 // null로 쓸때는 대문자 Long 써줌
    private String name = null; // 이름
    private String Room = null; // 연락처
    private Date regdate = null; // 가입일

    // OneToMany // List는 배열과 같다.
    private List<Course> courses = null;
}

 

example> service> ProfessorService.java

package com.example.service;

import java.util.List;

import com.example.entity.Professor;

public interface ProfessorService {
    

    // 교수등록
    // 오류처리를 사용하는 곳에서 처리함. => throws Exception;
    public int insertProfessor( Professor p ) throws Exception;

    // 교수삭제
    public boolean deleteProfessor( Professor p ) throws Exception;

    // 교수변경
    public short updateProfessor(Professor p) throws Exception;

    // 교수자정보1명
    public Professor selectOneProfessor(Long no) throws Exception;

    // 전체교수명
    public List<Professor> selectListProfessor(String name) throws Exception;
}

 

example> service> ProfessorServiceImpl.java

package com.example.service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.bson.Document;
import org.bson.conversions.Bson;

import com.example.config.MongoConfig;
import com.example.entity.Professor;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.InsertOneResult;
import com.mongodb.client.result.UpdateResult;

import lombok.Getter;
import lombok.Setter;

public class ProfessorServiceImpl implements ProfessorService {
    private MongoCollection<Document> collection = null; // 학생

    // 생성자 => DB접속하고 collection정보 가져오기
    public ProfessorServiceImpl() {
        collection = MongoConfig.create().getConnection("professors");
    }

    @Override
    public int insertProfessor(Professor p) throws Exception {
        Document doc = new Document();
        doc.append("_id", p.getId());
        doc.append("name", p.getName());
        doc.append("room", p.getRoom());
        doc.append("regdate", new Date());

        InsertOneResult result = collection.insertOne(doc);

        if (result.getInsertedId().asInt64().getValue() == p.getId()) {
            return 1;
        }
        return 0;
    }


    // 교수자를 삭제한다. 교수의 교수번호가 오면 삭제후에 참/거짓으로 반환
    @Override
    public boolean deleteProfessor(Professor p) throws Exception {
        Bson query = Filters.eq("_id", p.getId());
        DeleteResult result = collection.deleteOne(query);
        if(result.getDeletedCount() == 1L){
            return true;
        }
        return false;
    }

    @Override
    public List<Professor> selectListProfessor(String name) throws Exception {
        // .* a .*  => 이름에 a가 포함된 조건
        Bson query = Filters.regex("name", ".*" + name + ".*");
        FindIterable<Document> list = collection.find(query);

        List<Professor> retList = new ArrayList<>();
        for(Document doc : list){
            Professor p  = new Professor();
            p.setId(doc.getLong("_id"));
            p.setName(doc.getString("name"));
            p.setRoom(doc.getString("room"));
            p.setRegdate(doc.getDate("regdate"));
            retList.add(p);
        }
        return retList;
    }

    @Override
    public Professor selectOneProfessor(Long no) throws Exception {
        Bson query = Filters.eq("_id", no); //검색조건
        MongoCursor<Document> cursor = collection.find(query).limit(1).cursor(); //1개 가져오기
        
        if ( cursor.hasNext() ) { //가져올 항목이 있는지 확인
            Document doc = cursor.next(); //1개 가져오기

            //Document -> Professor객체로 변환해서 리턴
            Professor p = new Professor();
            p.setId(doc.getLong("_id"));
            p.setName(doc.getString("name"));
            p.setRoom(doc.getString("room"));
            p.setRegdate(doc.getDate("regdate"));

            return p;
        }
        return null;
    }

    @Override
    public short updateProfessor(Professor p) throws Exception {
        // 수정할 조건 정보
        Bson arg0 = Filters.eq("_id", p.getId());

        // 수정할 항목들
        Bson arg1 = Updates.set("name", p.getName());
        Bson arg2 = Updates.set("phone", p.getRoom());

        Bson arg3 = Updates.combine(arg1, arg2);

        UpdateResult result = this.collection.updateOne(arg0, arg3);
        System.out.println(result);
        if(result.getModifiedCount() == 1L){
            return 1;
        }
        return 0;
    }
}

 

example> view> ProfessorView.java

package com.view;

import java.util.List;
import java.util.Scanner;

import com.example.entity.Professor;
import com.example.service.ProfessorService;
import com.example.service.ProfessorServiceImpl;

public class ProfessorView {

    // 서비스 객체 생성
    private ProfessorService professorService = new ProfessorServiceImpl();
    private Scanner scanner = new Scanner(System.in);

    // 생성자            
    public ProfessorView() throws Exception  {
        while(true) {
            System.out.println("1.교수등록");
            System.out.println("2.교수변경");
            System.out.println("3.교수삭제");
            System.out.println("4.교수조회(1명)");
            System.out.println("5.교수전체조회");
            System.out.println("0.종료");
            System.out.print("메뉴 선택 => ");
            int menu = scanner.nextInt();
            if(menu == 0){
                break;
            }
            else if(menu == 5) {
                scanner.nextLine(); // buffer비우기

                System.out.print("검색어입력 => ");
                String searchText = scanner.nextLine();
                
                List<Professor> list 
                    = professorService.selectListProfessor(searchText);

                for(Professor tmp : list){
                    System.out.println(tmp.toString());
                }
                
            }
            else if(menu == 4) {
                scanner.nextLine(); // buffer비우기
                System.out.print("교수번호 입력 ex)1 => ");
                Long data = scanner.nextLong();
                System.out.println(professorService.selectOneProfessor(data)); 
            }
            else if(menu == 3) {
                System.out.print("정보 입력 ex)1 => ");
                String data = scanner.next();

                Professor p = new Professor();
                p.setId( Long.valueOf( data ) );

                boolean ret = professorService.deleteProfessor(p);
                if(ret == true) {
                    System.out.println("삭제 성공");
                }
                else {
                    System.out.println("삭제 실패");
                }
            }
            else if(menu == 2) {
                System.out.print("정보 입력 ex)1, 가나다, 606 => ");
                String data = scanner.next();
                String[] arr = data.split(",");

                Professor p = new Professor();
                p.setId( Long.valueOf(arr[0]) );
                p.setName( arr[1].trim() );
                p.setRoom( arr[2].trim() );

                int ret = professorService.updateProfessor(p);
                if(ret == 1) {
                    System.out.println("수정성공");
                }
                else {
                    System.out.println("수정실패");
                }
            }
            else if(menu == 1) {
                System.out.print("정보 입력 ex)1, 가나다, 606 => ");
                String data = scanner.next();
                String[] arr = data.split(",");

                Professor p = new Professor();
                p.setId( Long.valueOf(arr[0]) );
                p.setName( arr[1].trim() );
                p.setRoom( arr[2].trim() );

                int ret = professorService.insertProfessor(p);
                if(ret == 1) {
                    System.out.println("등록성공");
                }
                else {
                    System.out.println("등록실패");
                }
            }
        }
    }
}

 

 

App.java 

package com.example;

import com.view.ProfessorView;

// import java.util.Scanner;

// 파일명 == 클래스명 똑같아야함
// ex) Member.java == class Member
// ex) MemberJoin.java == class MemberJoin
public class App 
{
    public static void main( String[] args ){
        try{
            new ProfessorView();
        }
        catch(Exception e){
            e.getStackTrace();
            System.out.println(e);
        }
    }
}

service에서 에러 처리를 throws Exception 을 썻기 때문에

App.java에서 쓸때 !

try, catch문을 작성하여야 오류가 안뜸.