Skip to content
Merged

Step4 #134

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions src/main/java/codesquad/domain/ContentType.java

This file was deleted.

3 changes: 3 additions & 0 deletions src/main/java/codesquad/domain/DeleteHistory.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package codesquad.domain;

import codesquad.domain.issue.ContentType;
import codesquad.domain.user.User;

import javax.persistence.*;
import java.time.LocalDateTime;

Expand Down
5 changes: 5 additions & 0 deletions src/main/java/codesquad/domain/issue/ContentType.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package codesquad.domain.issue;

public enum ContentType {
ISSUE, ANSWER;
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package codesquad.domain;
package codesquad.domain.issue;

import javax.persistence.Column;
import javax.persistence.Embeddable;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package codesquad.domain;
package codesquad.domain.issue;

import codesquad.UnAuthorizedException;
import codesquad.domain.DeleteHistory;
import codesquad.domain.label.Label;
import codesquad.domain.milestone.Milestone;
import codesquad.domain.user.User;
import org.slf4j.Logger;
import support.domain.AbstractEntity;

Expand All @@ -23,6 +27,18 @@ public class Issue extends AbstractEntity {
@JoinColumn(foreignKey = @ForeignKey(name = "fk_issue_writer"))
private User writer;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(foreignKey = @ForeignKey(name = "fk_milestone"))
private Milestone milestone;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(foreignKey = @ForeignKey(name = "fk_label"))
private Label label;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(foreignKey = @ForeignKey(name = "fk_assignee"))
private User assignee;

private Boolean deleted = false;

public Issue() {
Expand Down Expand Up @@ -95,4 +111,28 @@ public void setDeleted(Boolean deleted) {
public boolean isSameComment(Issue issue) {
return this.contents == issue.getContents();
}

public Milestone getMilestone() {
return milestone;
}

public void setMilestone(Milestone milestone) {
this.milestone = milestone;
}

public Label getLabel() {
return label;
}

public void setLabel(Label label) {
this.label = label;
}

public User getAssignee() {
return assignee;
}

public void setAssignee(User assignee) {
this.assignee = assignee;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package codesquad.domain;
package codesquad.domain.issue;

import org.springframework.data.jpa.repository.JpaRepository;

Expand Down
41 changes: 41 additions & 0 deletions src/main/java/codesquad/domain/label/Label.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package codesquad.domain.label;

import codesquad.domain.user.User;
import support.domain.AbstractEntity;

import javax.persistence.*;
import javax.validation.constraints.Size;

@Entity
public class Label extends AbstractEntity {
@Size(min = 1, max = 10)
@Column(nullable = false, length = 10)
private String label;

@ManyToOne
@JoinColumn(foreignKey = @ForeignKey(name = "fk_issue_writer"))
private User writer;

public Label() {
}

public Label(String label) {
this.label = label;
}

public String getLabel() {
return label;
}

public void setLabel(String label) {
this.label = label;
}

public User getWriter() {
return writer;
}

public void setWriter(User writer) {
this.writer = writer;
}
}
6 changes: 6 additions & 0 deletions src/main/java/codesquad/domain/label/LabelRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package codesquad.domain.label;

import org.springframework.data.jpa.repository.JpaRepository;

public interface LabelRepository extends JpaRepository<Label, Long> {
}
78 changes: 78 additions & 0 deletions src/main/java/codesquad/domain/milestone/Milestone.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package codesquad.domain.milestone;

import codesquad.domain.user.User;
import support.domain.AbstractEntity;

import javax.persistence.*;
import javax.validation.constraints.Size;

@Entity
public class Milestone extends AbstractEntity {

@Size(min = 1, max = 30)
@Column(nullable = false, length = 30)
private String subject;

@Column(nullable = false)
private String startDate;

@Column(nullable = false)
private String endDate;

@ManyToOne
@JoinColumn(foreignKey = @ForeignKey(name = "fk_issue_writer"))
private User writer;

private Boolean deleted = false;

public Milestone() {
}

public Milestone(long id, String subject, String startDate, String endDate, User writer) {
super(id);
this.subject = subject;
this.startDate = startDate;
this.endDate = endDate;
this.writer = writer;
}

public String getSubject() {
return subject;
}

public void setSubject(String subject) {
this.subject = subject;
}

public String getStartDate() {
return startDate;
}

public void setStartDate(String startDate) {
this.startDate = startDate;
}

public String getEndDate() {
return endDate;
}

public void setEndDate(String endDate) {
this.endDate = endDate;
}

public User getWriter() {
return writer;
}

public void setWriter(User writer) {
this.writer = writer;
}

public Boolean getDeleted() {
return deleted;
}

public void setDeleted(Boolean deleted) {
this.deleted = deleted;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package codesquad.domain.milestone;

import codesquad.domain.issue.Issue;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MilestoneRepository extends JpaRepository<Milestone, Long> {
Iterable<Issue> findByDeleted(boolean deleted);
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package codesquad.domain;
package codesquad.domain.user;

import codesquad.UnAuthorizedException;
import codesquad.dto.UserDto;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package codesquad.domain;
package codesquad.domain.user;

import org.springframework.data.jpa.repository.JpaRepository;

Expand Down
6 changes: 3 additions & 3 deletions src/main/java/codesquad/dto/IssueDto.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package codesquad.dto;

import codesquad.domain.Contents;
import codesquad.domain.Issue;
import codesquad.domain.User;
import codesquad.domain.issue.Contents;
import codesquad.domain.issue.Issue;
import codesquad.domain.user.User;

import javax.persistence.Column;
import javax.persistence.Lob;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/codesquad/dto/UserDto.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package codesquad.dto;

import codesquad.domain.User;
import codesquad.domain.user.User;

import javax.validation.constraints.Size;

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/codesquad/security/BasicAuthInterceptor.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package codesquad.security;

import codesquad.UnAuthenticationException;
import codesquad.domain.User;
import codesquad.domain.user.User;
import codesquad.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/codesquad/security/HttpSessionUtils.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package codesquad.security;

import codesquad.domain.User;
import codesquad.domain.user.User;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.context.request.WebRequest;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package codesquad.security;

import codesquad.UnAuthorizedException;
import codesquad.domain.User;
import codesquad.UnAuthenticationException;
import codesquad.domain.user.User;
import org.springframework.core.MethodParameter;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
Expand All @@ -24,7 +24,7 @@ public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer m

LoginUser loginUser = parameter.getParameterAnnotation(LoginUser.class);
if (loginUser.required()) {
throw new UnAuthorizedException("You're required Login!");
throw new UnAuthenticationException("You're required Login!");
}
return user;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ public void unAuthorized() {

@ExceptionHandler(UnAuthenticationException.class)
@ResponseStatus(value = HttpStatus.UNAUTHORIZED)
public void unAuthentication() {
public String unAuthentication() {
log.debug("UnAuthenticationException is happened!");
return "user/login";
}
}
26 changes: 22 additions & 4 deletions src/main/java/codesquad/service/IssueService.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package codesquad.service;

import codesquad.UnAuthorizedException;
import codesquad.domain.Contents;
import codesquad.domain.Issue;
import codesquad.domain.IssueRepository;
import codesquad.domain.User;
import codesquad.domain.issue.Contents;
import codesquad.domain.issue.Issue;
import codesquad.domain.issue.IssueRepository;
import codesquad.domain.label.Label;
import codesquad.domain.milestone.Milestone;
import codesquad.domain.user.User;
import codesquad.dto.IssueDto;
import org.slf4j.Logger;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -37,6 +39,7 @@ public Issue add(IssueDto issueDto, User loginUser) {
public Issue oneself(User loginUser, long id) {
return issueRepository.findById(id)
.filter(issue -> issue.isOwner(loginUser))
.filter(issue -> !issue.getDeleted())
.orElseThrow(UnAuthorizedException::new);
}

Expand All @@ -56,4 +59,19 @@ public void delete(User loginUser, long id) {
public Iterable<Issue> findAll() {
return issueRepository.findByDeleted(false);
}

@Transactional
public void registerMilestone(Milestone milestone, long id, User loginUser) {
oneself(loginUser, id).setMilestone(milestone);
}

@Transactional
public void registerLabel(Label label, long id, User loginUser) {
oneself(loginUser, id).setLabel(label);
}

@Transactional
public void registerAssignee(User assignee, long id, User loginUser) {
oneself(loginUser, id).setAssignee(assignee);
}
}
34 changes: 34 additions & 0 deletions src/main/java/codesquad/service/LabelService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package codesquad.service;

import codesquad.domain.label.Label;
import codesquad.domain.label.LabelRepository;
import codesquad.domain.user.User;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.persistence.EntityNotFoundException;
import java.util.List;

import static org.slf4j.LoggerFactory.getLogger;

@Service
public class LabelService {
private static final Logger log = getLogger(LabelService.class);

@Autowired
LabelRepository labelRepository;

public List<Label> findAll() {
return labelRepository.findAll();
}

public void add(Label label, User loginUser) {
label.setWriter(loginUser);
labelRepository.save(label);
}

public Label findById(long labelId) {
return labelRepository.findById(labelId).orElseThrow(EntityNotFoundException::new);
}
}
Loading