25-controllers #28

Merged
romanov73 merged 3 commits from 25-controllers into master 2025-03-14 15:22:16 +04:00
12 changed files with 86 additions and 82 deletions

View File

@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import ru.ulstu.fc.project.model.Project; import ru.ulstu.fc.project.model.Project;
import ru.ulstu.fc.project.model.ProjectForm; import ru.ulstu.fc.project.model.ProjectDto;
import ru.ulstu.fc.project.service.ProjectRulesService; import ru.ulstu.fc.project.service.ProjectRulesService;
import ru.ulstu.fc.project.service.ProjectService; import ru.ulstu.fc.project.service.ProjectService;
import ru.ulstu.fc.project.service.ProjectVariableService; import ru.ulstu.fc.project.service.ProjectVariableService;
@ -41,7 +41,7 @@ public class ProjectController {
@GetMapping("/edit/{projectId}") @GetMapping("/edit/{projectId}")
public String edit(@PathVariable(value = "projectId") Integer id, Model model) { public String edit(@PathVariable(value = "projectId") Integer id, Model model) {
model.addAttribute("project", model.addAttribute("project",
new ProjectForm((id != null && id != 0) new ProjectDto((id != null && id != 0)
? projectService.getById(id) ? projectService.getById(id)
: new Project())); : new Project()));
@ -51,15 +51,15 @@ public class ProjectController {
} }
@PostMapping(value = "save", params = "save") @PostMapping(value = "save", params = "save")
public String save(ProjectForm projectForm, Model model) { public String save(ProjectDto projectDto, Model model) {
model.addAttribute("project", projectService.save(projectForm)); model.addAttribute("project", projectService.save(projectDto));
return "redirect:/project/list"; return "redirect:/project/list";
} }
@PostMapping(value = "save", params = "delete") @PostMapping(value = "save", params = "delete")
public String delete(ProjectForm projectForm) { public String delete(ProjectDto projectDto) {
if (projectForm != null && projectForm.getId() != null) { if (projectDto != null && projectDto.getId() != null) {
projectService.delete(projectForm); projectService.delete(projectDto);
} }
return "redirect:/project/list"; return "redirect:/project/list";
} }

View File

@ -6,8 +6,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import ru.ulstu.fc.project.model.Project; import ru.ulstu.fc.project.model.ProjectDto;
import ru.ulstu.fc.project.model.ProjectForm;
import ru.ulstu.fc.project.service.ProjectService; import ru.ulstu.fc.project.service.ProjectService;
import ru.ulstu.fc.user.model.UserRoleConstants; import ru.ulstu.fc.user.model.UserRoleConstants;
@ -24,18 +23,18 @@ public class ProjectRestController {
} }
@GetMapping("list") @GetMapping("list")
public List<Project> getProjects() { public List<ProjectDto> getProjects() {
return projectService.getCurrentUserProjects(); return projectService.getCurrentUserProjectsDto();
} }
@PostMapping("save") @PostMapping("save")
public Project save(Project project) { public ProjectDto save(ProjectDto projectDto) {
return projectService.save(project); return projectService.save(projectDto);
} }
@DeleteMapping("delete") @DeleteMapping("delete")
public String delete(ProjectForm projectForm) { public String delete(ProjectDto projectDto) {
projectService.delete(projectForm); projectService.delete(projectDto);
return "redirect:/list"; return "redirect:/list";
} }
} }

View File

@ -20,11 +20,11 @@ public class Project extends BaseEntity {
public Project() { public Project() {
} }
public Project(ProjectForm projectForm) { public Project(ProjectDto projectDto) {
if (projectForm.getId() != null) { if (projectDto.getId() != null) {
setId(projectForm.getId()); setId(projectDto.getId());
} }
this.name = projectForm.getName(); this.name = projectDto.getName();
} }
public String getName() { public String getName() {

View File

@ -4,16 +4,16 @@ import jakarta.validation.constraints.NotEmpty;
import java.util.Date; import java.util.Date;
public class ProjectForm { public class ProjectDto {
private Integer id; private Integer id;
@NotEmpty(message = "Название проекта не может быть пустым") @NotEmpty(message = "Название проекта не может быть пустым")
private String name; private String name;
private Date createDate; private Date createDate;
public ProjectForm() { public ProjectDto() {
} }
public ProjectForm(Project project) { public ProjectDto(Project project) {
this.id = project.getId(); this.id = project.getId();
this.name = project.getName(); this.name = project.getName();
this.createDate = project.getCreateDate(); this.createDate = project.getCreateDate();

View File

@ -2,10 +2,12 @@ package ru.ulstu.fc.project.service;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.ulstu.fc.rule.model.FuzzyRule; import ru.ulstu.fc.rule.model.FuzzyRule;
import ru.ulstu.fc.rule.model.dto.FuzzyRuleDto;
import ru.ulstu.fc.rule.repository.FuzzyRuleRepository; import ru.ulstu.fc.rule.repository.FuzzyRuleRepository;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Service @Service
public class ProjectRulesService { public class ProjectRulesService {
@ -24,4 +26,8 @@ public class ProjectRulesService {
} }
return ruleRepository.findByProject(projectService.getById(projectId)); return ruleRepository.findByProject(projectService.getById(projectId));
} }
public List<FuzzyRuleDto> getDtoByProjectId(Integer projectId) {
return getByProjectId(projectId).stream().map(FuzzyRuleDto::new).collect(Collectors.toList());
}
} }

View File

@ -2,12 +2,13 @@ package ru.ulstu.fc.project.service;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.ulstu.fc.project.model.Project; import ru.ulstu.fc.project.model.Project;
import ru.ulstu.fc.project.model.ProjectForm; import ru.ulstu.fc.project.model.ProjectDto;
import ru.ulstu.fc.project.repository.ProjectRepository; import ru.ulstu.fc.project.repository.ProjectRepository;
import ru.ulstu.fc.user.model.User; import ru.ulstu.fc.user.model.User;
import ru.ulstu.fc.user.service.UserService; import ru.ulstu.fc.user.service.UserService;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Service @Service
public class ProjectService { public class ProjectService {
@ -24,6 +25,10 @@ public class ProjectService {
return projectRepository.findAllByUserId(userService.getCurrentUser().getId()); return projectRepository.findAllByUserId(userService.getCurrentUser().getId());
} }
public List<ProjectDto> getCurrentUserProjectsDto() {
return getCurrentUserProjects().stream().map(ProjectDto::new).collect(Collectors.toList());
}
public Project getById(Integer id) { public Project getById(Integer id) {
Project project = projectRepository Project project = projectRepository
.findById(id) .findById(id)
@ -32,8 +37,8 @@ public class ProjectService {
return project; return project;
} }
public Project save(ProjectForm projectForm) { public ProjectDto save(ProjectDto projectDto) {
return save(new Project(projectForm)); return new ProjectDto(save(new Project(projectDto)));
} }
public Project save(Project projectToSave) { public Project save(Project projectToSave) {
@ -47,9 +52,9 @@ public class ProjectService {
return projectRepository.save(dbProject); return projectRepository.save(dbProject);
} }
public void delete(ProjectForm projectForm) { public void delete(ProjectDto projectDto) {
getById(projectForm.getId()); getById(projectDto.getId());
projectRepository.deleteById(projectForm.getId()); projectRepository.deleteById(projectDto.getId());
} }
public void checkIsCurrentUserProjectWithThrow(Project project) { public void checkIsCurrentUserProjectWithThrow(Project project) {

View File

@ -1,5 +1,6 @@
package ru.ulstu.fc.rule.controller; package ru.ulstu.fc.rule.controller;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
@ -10,8 +11,8 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import ru.ulstu.fc.rule.model.FuzzyRuleForm;
import ru.ulstu.fc.rule.model.FuzzyTerm; import ru.ulstu.fc.rule.model.FuzzyTerm;
import ru.ulstu.fc.rule.model.dto.FuzzyRuleDto;
import ru.ulstu.fc.rule.model.dto.VariableDto; import ru.ulstu.fc.rule.model.dto.VariableDto;
import ru.ulstu.fc.rule.service.FuzzyRuleService; import ru.ulstu.fc.rule.service.FuzzyRuleService;
import ru.ulstu.fc.rule.service.FuzzyTermService; import ru.ulstu.fc.rule.service.FuzzyTermService;
@ -21,6 +22,7 @@ import java.util.List;
@Controller @Controller
@RequestMapping("rule") @RequestMapping("rule")
@Hidden
public class FuzzyRuleController { public class FuzzyRuleController {
private final FuzzyRuleService fuzzyRuleService; private final FuzzyRuleService fuzzyRuleService;
private final VariableService variableService; private final VariableService variableService;
@ -38,29 +40,29 @@ public class FuzzyRuleController {
public String edit(@PathVariable(value = "projectId") Integer projectId, public String edit(@PathVariable(value = "projectId") Integer projectId,
@PathVariable(value = "ruleId") Integer id, Model model) { @PathVariable(value = "ruleId") Integer id, Model model) {
model.addAttribute("projectId", projectId); model.addAttribute("projectId", projectId);
model.addAttribute("fuzzyRuleForm", model.addAttribute("fuzzyRuleDto",
(id != null && id != 0) (id != null && id != 0)
? new FuzzyRuleForm(id, fuzzyRuleService.getById(id)) ? new FuzzyRuleDto(fuzzyRuleService.getById(id))
: new FuzzyRuleForm(id, projectId)); : new FuzzyRuleDto(id, projectId));
return "rule/edit"; return "rule/edit";
} }
@PostMapping(value = "save", params = "save") @PostMapping(value = "save", params = "save")
public String save(@Valid FuzzyRuleForm fuzzyRuleForm, BindingResult bindingResult, Model model) { public String save(@Valid FuzzyRuleDto fuzzyRuleDto, BindingResult bindingResult, Model model) {
if (bindingResult.hasErrors()) { if (bindingResult.hasErrors()) {
model.addAttribute("projectId", fuzzyRuleForm.getProjectId()); model.addAttribute("projectId", fuzzyRuleDto.getProjectId());
return "rule/edit"; return "rule/edit";
} }
fuzzyRuleService.save(fuzzyRuleForm); fuzzyRuleService.save(fuzzyRuleDto);
return "redirect:/project/edit/" + fuzzyRuleForm.getProjectId(); return "redirect:/project/edit/" + fuzzyRuleDto.getProjectId();
} }
@PostMapping(value = "save", params = "delete") @PostMapping(value = "save", params = "delete")
public String delete(FuzzyRuleForm fuzzyRuleForm) { public String delete(FuzzyRuleDto fuzzyRuleDto) {
if (fuzzyRuleForm != null && fuzzyRuleForm.getId() != null) { if (fuzzyRuleDto != null && fuzzyRuleDto.getId() != null) {
fuzzyRuleService.delete(fuzzyRuleForm); fuzzyRuleService.delete(fuzzyRuleDto);
} }
return "redirect:/project/edit/" + fuzzyRuleForm.getProjectId(); return "redirect:/project/edit/" + fuzzyRuleDto.getProjectId();
} }
@ResponseBody @ResponseBody

View File

@ -1,20 +0,0 @@
package ru.ulstu.fc.rule.controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import ru.ulstu.fc.rule.service.FuzzyRuleParseService;
@RestController("fuzzyRuleParseRest")
public class FuzzyRuleParseRestController {
private final FuzzyRuleParseService fuzzyRuleParseService;
public FuzzyRuleParseRestController(FuzzyRuleParseService fuzzyRuleParseService) {
this.fuzzyRuleParseService = fuzzyRuleParseService;
}
@PostMapping("parse/{projectId}")
public void parseRule(@PathVariable("projectId") Integer projectId, String data) {
fuzzyRuleParseService.parseFuzzyRules(data, projectId);
}
}

View File

@ -9,7 +9,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import ru.ulstu.fc.project.service.ProjectRulesService; import ru.ulstu.fc.project.service.ProjectRulesService;
import ru.ulstu.fc.rule.model.FuzzyRule; import ru.ulstu.fc.rule.model.FuzzyRule;
import ru.ulstu.fc.rule.model.FuzzyRuleForm; import ru.ulstu.fc.rule.model.dto.FuzzyRuleDto;
import ru.ulstu.fc.rule.service.FuzzyRuleParseService;
import ru.ulstu.fc.rule.service.FuzzyRuleService; import ru.ulstu.fc.rule.service.FuzzyRuleService;
import java.util.List; import java.util.List;
@ -19,34 +20,40 @@ import java.util.List;
public class FuzzyRuleRestController { public class FuzzyRuleRestController {
private final FuzzyRuleService ruleService; private final FuzzyRuleService ruleService;
private final ProjectRulesService projectRulesService; private final ProjectRulesService projectRulesService;
private final FuzzyRuleParseService fuzzyRuleParseService;
public FuzzyRuleRestController(FuzzyRuleService ruleService, public FuzzyRuleRestController(FuzzyRuleService ruleService,
ProjectRulesService projectRulesService) { ProjectRulesService projectRulesService,
FuzzyRuleParseService fuzzyRuleParseService) {
this.ruleService = ruleService; this.ruleService = ruleService;
this.projectRulesService = projectRulesService; this.projectRulesService = projectRulesService;
this.fuzzyRuleParseService = fuzzyRuleParseService;
} }
@GetMapping("/getAll/{projectId}") @GetMapping("/getAll/{projectId}")
public List<FuzzyRule> getAll(@PathVariable(value = "projectId") Integer projectId) { public List<FuzzyRuleDto> getAll(@PathVariable(value = "projectId") Integer projectId) {
//TODO: return dto return projectRulesService.getDtoByProjectId(projectId);
return projectRulesService.getByProjectId(projectId);
} }
@GetMapping("/get/{ruleId}") @GetMapping("/get/{ruleId}")
public FuzzyRule get(@PathVariable(value = "ruleId") Integer id) { public FuzzyRuleDto get(@PathVariable(value = "ruleId") Integer id) {
//TODO: return dto return ruleService.getByIdDto(id);
return ruleService.getById(id);
} }
@PostMapping @PostMapping
public FuzzyRule save(@Valid FuzzyRuleForm fuzzyRuleForm) { public FuzzyRule save(@Valid FuzzyRuleDto fuzzyRuleDto) {
return ruleService.save(fuzzyRuleForm); return ruleService.save(fuzzyRuleDto);
} }
@DeleteMapping @DeleteMapping
public void delete(@Valid FuzzyRuleForm fuzzyRuleForm) { public void delete(@Valid FuzzyRuleDto fuzzyRuleDto) {
if (fuzzyRuleForm != null && fuzzyRuleForm.getId() != null) { if (fuzzyRuleDto != null && fuzzyRuleDto.getId() != null) {
ruleService.delete(fuzzyRuleForm); ruleService.delete(fuzzyRuleDto);
} }
} }
@PostMapping("parse/{projectId}")
public void parseRule(@PathVariable("projectId") Integer projectId, String data) {
fuzzyRuleParseService.parseFuzzyRules(data, projectId);
}
} }

View File

@ -1,9 +1,10 @@
package ru.ulstu.fc.rule.model; package ru.ulstu.fc.rule.model.dto;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size; import jakarta.validation.constraints.Size;
import ru.ulstu.fc.rule.model.FuzzyRule;
public class FuzzyRuleForm { public class FuzzyRuleDto {
private Integer id; private Integer id;
@NotNull @NotNull
private Integer projectId; private Integer projectId;
@ -11,15 +12,15 @@ public class FuzzyRuleForm {
@Size(min = 5, max = 250, message = "Длина от 5 до 250 символов") @Size(min = 5, max = 250, message = "Длина от 5 до 250 символов")
private String content; private String content;
public FuzzyRuleForm() { public FuzzyRuleDto() {
} }
public FuzzyRuleForm(Integer id, Integer projectId) { public FuzzyRuleDto(Integer id, Integer projectId) {
this.id = id; this.id = id;
this.projectId = projectId; this.projectId = projectId;
} }
public FuzzyRuleForm(Integer id, FuzzyRule fuzzyRule) { public FuzzyRuleDto(FuzzyRule fuzzyRule) {
this.id = fuzzyRule.getId(); this.id = fuzzyRule.getId();
this.projectId = fuzzyRule.getProject().getId(); this.projectId = fuzzyRule.getProject().getId();
this.content = fuzzyRule.getContent(); this.content = fuzzyRule.getContent();

View File

@ -3,7 +3,7 @@ package ru.ulstu.fc.rule.service;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.ulstu.fc.project.service.ProjectService; import ru.ulstu.fc.project.service.ProjectService;
import ru.ulstu.fc.rule.model.FuzzyRule; import ru.ulstu.fc.rule.model.FuzzyRule;
import ru.ulstu.fc.rule.model.FuzzyRuleForm; import ru.ulstu.fc.rule.model.dto.FuzzyRuleDto;
import ru.ulstu.fc.rule.repository.FuzzyRuleRepository; import ru.ulstu.fc.rule.repository.FuzzyRuleRepository;
@Service @Service
@ -25,7 +25,11 @@ public class FuzzyRuleService {
return fuzzyRule; return fuzzyRule;
} }
public FuzzyRule save(FuzzyRuleForm ruleForm) { public FuzzyRuleDto getByIdDto(Integer id) {
return new FuzzyRuleDto(getById(id));
}
public FuzzyRule save(FuzzyRuleDto ruleForm) {
FuzzyRule rule; FuzzyRule rule;
if (ruleForm.getId() == null || ruleForm.getId() == 0) { if (ruleForm.getId() == null || ruleForm.getId() == 0) {
rule = new FuzzyRule(); rule = new FuzzyRule();
@ -37,7 +41,7 @@ public class FuzzyRuleService {
return ruleRepository.save(rule); return ruleRepository.save(rule);
} }
public void delete(FuzzyRuleForm ruleForm) { public void delete(FuzzyRuleDto ruleForm) {
ruleRepository.delete(getById(ruleForm.getId())); ruleRepository.delete(getById(ruleForm.getId()));
} }

View File

@ -9,7 +9,7 @@
</head> </head>
<div class="container" layout:fragment="content"> <div class="container" layout:fragment="content">
<h3>Редактирование правила:</h3> <h3>Редактирование правила:</h3>
<form th:action="@{/rule/save}" th:object="${fuzzyRuleForm}" method="post"> <form th:action="@{/rule/save}" th:object="${fuzzyRuleDto}" method="post">
<input type="hidden" id="projectId" th:field="*{projectId}"> <input type="hidden" id="projectId" th:field="*{projectId}">
<input type="hidden" th:field="*{id}"> <input type="hidden" th:field="*{id}">
<div class="form-group"> <div class="form-group">