Skip to content
Merged
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
55 changes: 55 additions & 0 deletions src/main/java/codesquad/domain/Issue.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package codesquad.domain;

import codesquad.dto.IssueDto;
import support.domain.AbstractEntity;

import javax.persistence.Entity;

@Entity
public class Issue extends AbstractEntity {

private String subject;
private String comment;

public Issue(){
}

public Issue(String subject, String comment){
this.subject = subject;
this.comment = comment;
}

public Issue(long id, String subject, String comment){
super(id);
this.subject = subject;
this.comment = comment;
}

public String getSubject() {
return subject;
}

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

public String getComment() {
return comment;
}

public void setComment(String comment) {
this.comment = comment;
}

public IssueDto _toIssueDto(){
return new IssueDto(this.subject, this.comment);
}

@Override
public String toString() {
return "Issue{" +
"subject='" + subject + '\'' +
", comment='" + comment + '\'' +
'}';
}
}
8 changes: 8 additions & 0 deletions src/main/java/codesquad/domain/IssueRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package codesquad.domain;

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

import java.util.Optional;

public interface IssueRepository extends JpaRepository<Issue, Long> {
}
82 changes: 82 additions & 0 deletions src/main/java/codesquad/dto/IssueDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package codesquad.dto;

import codesquad.domain.Issue;

public class IssueDto {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue와 IssueDto 사이에 큰 차이점이 없으면 Issue만 있어도 되지 않을까?

private String subject;
private String comment;

public IssueDto(){
}

public IssueDto(String subject, String comment){
this.subject = subject;
this.comment = comment;
}

public IssueDto(long id, String subject, String comment){
super();
this.subject = subject;
this.comment = comment;
}

public String getSubject() {
return subject;
}

public String getComment() {
return comment;
}

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

public void setComment(String comment) {
this.comment = comment;
}

public Issue _toIssue(){
return new Issue(this.subject, this.comment);
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
IssueDto other = (IssueDto) obj;
if (subject == null) {
if (other.subject != null)
return false;
} else if (!subject.equals(other.subject))
return false;
if (comment == null) {
if (other.comment != null)
return false;
} else if (!comment.equals(other.comment))
return false;
return true;
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((subject == null) ? 0 : subject.hashCode());
result = prime * result + ((comment == null) ? 0 : comment.hashCode());

return result;
}

@Override
public String toString() {
return "IssueDto{" +
"subject='" + subject + '\'' +
", comment='" + comment + '\'' +
'}';
}
}
33 changes: 33 additions & 0 deletions src/main/java/codesquad/service/IssueService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package codesquad.service;

import codesquad.domain.Issue;
import codesquad.domain.IssueRepository;
import codesquad.dto.IssueDto;
import org.slf4j.Logger;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Optional;

import static org.slf4j.LoggerFactory.getLogger;

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

@Resource(name = "issueRepository")
private IssueRepository issueRepository;

public List<Issue> findAll(){
return issueRepository.findAll();
}

public Issue add(IssueDto issueDto){
return issueRepository.save(issueDto._toIssue());
}

public Issue findById(Long id){
return issueRepository.findById(id).orElseThrow(UnknownError::new);
}
}
13 changes: 13 additions & 0 deletions src/main/java/codesquad/service/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,18 @@
import codesquad.domain.User;
import codesquad.domain.UserRepository;
import codesquad.dto.UserDto;
import org.slf4j.Logger;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Optional;

import static org.slf4j.LoggerFactory.getLogger;

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

@Resource(name = "userRepository")
private UserRepository userRepository;
Expand All @@ -27,6 +31,15 @@ public User update(User loginUser, long id, UserDto updatedUser) {
return userRepository.save(original);
}

public User findByUserId(String userId){
log.debug("레파지토리 확인:{}", userRepository.findByUserId(userId).orElse(null));
return userRepository.findByUserId(userId).orElse(null);
}

public User findByIda(long id){
return userRepository.findById(id).orElse(null);
}

public User findById(User loginUser, long id) {
return userRepository.findById(id)
.filter(user -> user.equals(loginUser))
Expand Down
48 changes: 48 additions & 0 deletions src/main/java/codesquad/web/IssueController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package codesquad.web;

import codesquad.dto.IssueDto;
import codesquad.service.IssueService;
import org.slf4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;

import static org.slf4j.LoggerFactory.getLogger;

@Controller
@RequestMapping("/issues")
public class IssueController {
private static final Logger log = getLogger(IssueController.class);

@Resource(name = "issueService")
private IssueService issueService;

@GetMapping("/form")
public String form(){
return "/issue/form";
}


@PostMapping("")
public String create(IssueDto issueDto){
issueService.add(issueDto);
return "redirect:/issues/list";
}

@GetMapping("/list")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"list"가 없어도 되지 않을까?

public String list(Model model){
model.addAttribute("issues", issueService.findAll());
return "/index";
}

@GetMapping("/show/{id}")
public String showForm(@PathVariable Long id, Model model){
model.addAttribute("issues", issueService.findById(id));
return "/issue/show";
}
}
36 changes: 27 additions & 9 deletions src/main/java/codesquad/web/UserController.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package codesquad.web;

import codesquad.UnAuthenticationException;
import codesquad.domain.User;
import codesquad.dto.UserDto;
import codesquad.security.LoginUser;
Expand All @@ -11,6 +12,7 @@
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("/users")
Expand All @@ -20,9 +22,27 @@ public class UserController {
@Resource(name = "userService")
private UserService userService;

@GetMapping("/login")
public String loginForm(){
return "/user/login";
}

@PostMapping("/loginUser")
public String login(UserDto userDto, HttpSession session) throws UnAuthenticationException {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

String userId, String password로 인자를 받아도 됨

userService.login(userDto._toUser().getUserId(), userDto._toUser().getPassword());
session.setAttribute("loginedUser", userService.findByUserId(userDto._toUser().getUserId()));
return "/index";
}

@GetMapping("/logout")
public String logout(HttpSession session){
session.removeAttribute("loginedUser");
return "redirect:/";
}

@GetMapping("/form")
public String form() {
return "/user/form";
public String join() {
return "/user/join";
}

@PostMapping("")
Expand All @@ -31,17 +51,15 @@ public String create(UserDto userDto) {
return "redirect:/users";
}

@GetMapping("/{id}/form")
@GetMapping("/{id}/modify")
public String updateForm(@LoginUser User loginUser, @PathVariable long id, Model model) {
log.debug("LoginUser : {}", loginUser);
model.addAttribute("user", userService.findById(loginUser, id));
model.addAttribute("user", userService.findByUserId(loginUser.getUserId()));
return "/user/updateForm";
}

@PutMapping("/{id}")
@PutMapping("/{id}/update")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"update"가 없어도 되지 않을까?

public String update(@LoginUser User loginUser, @PathVariable long id, UserDto target) {
userService.update(loginUser, id, target);
return "redirect:/users";
return "/index";
}

}
}
3 changes: 2 additions & 1 deletion src/main/resources/import.sql
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
INSERT INTO user (id, user_id, password, name) values (1, 'javajigi', 'test', '자바지기');
INSERT INTO user (id, user_id, password, name) values (2, 'sanjigi', 'test', '산지기');
INSERT INTO user (id, user_id, password, name) values (2, 'sanjigi', 'test', '산지기');
INSERT INTO user (id, user_id, password, name) values (3, 'a', '1', 'test');
Loading