나만의공부(이슈정리)
[JAVA] live -study 대시보드 만들어보기 (gitHub 라이브러리 사용)
jay Joon
2020. 12. 6. 19:08
과제 1. live-study 대시 보드를 만드는 코드를 작성하세요.
- 깃헙 이슈 1번부터 18번까지 댓글을 순회하며 댓글을 남긴 사용자를 체크 할 것.
- 참여율을 계산하세요. 총 18회에 중에 몇 %를 참여했는지 소숫점 두자리가지 보여줄 것.
- Github 자바 라이브러리를 사용하면 편리합니다.
- 깃헙 API를 익명으로 호출하는데 제한이 있기 때문에 본인의 깃헙 프로젝트에 이슈를 만들고 테스트를 하시면 더 자주 테스트할 수 있습니다.
member 라는 객체를 생성하여 정보를 담고 관리하는 쪽으로 개발 했다.
구현 Class
public class live_board {
public static void main(String[] args) {
try {
Map<String,Member> members =new HashMap<>();
String repoPath = "whiteship/live-study";
String token = "자신의 토큰값";
GitHub github = new GitHubBuilder().withOAuthToken(token).build();
GHRepository repository = github.getRepository(repoPath);
List<GHIssue> issues = repository.getIssues(GHIssueState.ALL);
int issueCount = issues.size();
for (GHIssue issue : issues) {
String title = issue.getTitle();
String[] s = title.split(" ");
for (GHIssueComment comment : issue.getComments()) {
String id = comment.getUser().getLogin();
Member member = members.get(id);
// member를 가져와서 null 이면 새로운 member를 생성
if(member == null){
member = new Member(id);
members.put(id,member);
}
member.weekJoinMap.put(s[0],true);
}
}
for (Member member : members.values()) {
member.percentProcess();
System.out.printf("[ %s ]" ,member.getId());
System.out.printf("[ 참여율:%.3f ]",member.percent*100);
System.out.printf(" 출석부:%s" ,member.weekJoinMap);
System.out.println();
}
} catch (Exception e) {
}
}
static class Member{
private String id;
private Map<String ,Boolean> weekJoinMap = new LinkedHashMap<>();
private Double percent;
public Member(String id) {
this.id = id;
}
public void percentProcess(){
double count = 0;
Collection<Boolean> values = weekJoinMap.values();
for (Boolean value : values) {
if(value){
count++;
}
}
this.percent = count/18;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Map<String, Boolean> getWeekJoinMap() {
return weekJoinMap;
}
public void setWeekJoinMap(Map<String, Boolean> weekJoinMap) {
this.weekJoinMap = weekJoinMap;
}
public Double getPercent() {
return percent;
}
public void setPercent(Double percent) {
this.percent = percent;
}
}
}