diff --git a/src/main/java/ru/ulstu/fc/rule/controller/FuzzyTermRestController.java b/src/main/java/ru/ulstu/fc/rule/controller/FuzzyTermRestController.java index 4247ef5..96d8075 100644 --- a/src/main/java/ru/ulstu/fc/rule/controller/FuzzyTermRestController.java +++ b/src/main/java/ru/ulstu/fc/rule/controller/FuzzyTermRestController.java @@ -22,16 +22,13 @@ public class FuzzyTermRestController { this.fuzzyTermService = fuzzyTermService; } - @GetMapping("/list/{projectId}/{variableId}") - public List getList(@PathVariable(value = "projectId") Integer projectId, - @PathVariable(value = "variableId") Integer variableId) { - return fuzzyTermService.getAll(projectId, variableId); + @GetMapping("/list/{variableId}") + public List getList(@PathVariable(value = "variableId") Integer variableId) { + return fuzzyTermService.getAll(variableId); } - @GetMapping("/get/{projectId}/{variableId}/{fuzzyTermId}") - public FuzzyTerm getById(@PathVariable(value = "projectId") Integer projectId, - @PathVariable(value = "variableId") Integer variableId, - @PathVariable(value = "fuzzyTermId") Integer fuzzyTermId) { + @GetMapping("/get/{fuzzyTermId}") + public FuzzyTerm getById(@PathVariable(value = "fuzzyTermId") Integer fuzzyTermId) { return fuzzyTermService.getById(fuzzyTermId); } diff --git a/src/main/java/ru/ulstu/fc/rule/repository/FuzzyTermRepository.java b/src/main/java/ru/ulstu/fc/rule/repository/FuzzyTermRepository.java index 54ca372..7f5f7ff 100644 --- a/src/main/java/ru/ulstu/fc/rule/repository/FuzzyTermRepository.java +++ b/src/main/java/ru/ulstu/fc/rule/repository/FuzzyTermRepository.java @@ -1,8 +1,13 @@ package ru.ulstu.fc.rule.repository; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import ru.ulstu.fc.rule.model.FuzzyTerm; +import ru.ulstu.fc.rule.model.Variable; public interface FuzzyTermRepository extends JpaRepository { + @Query("SELECT v FROM Variable v LEFT JOIN v.fuzzyTerms ft WHERE ft = :fuzzyTerm") + Variable findByFuzzyTerm(@Param("fuzzyTerm") FuzzyTerm fuzzyTerm); } diff --git a/src/main/java/ru/ulstu/fc/rule/service/FuzzyTermService.java b/src/main/java/ru/ulstu/fc/rule/service/FuzzyTermService.java index 1548f13..7d9fc1e 100644 --- a/src/main/java/ru/ulstu/fc/rule/service/FuzzyTermService.java +++ b/src/main/java/ru/ulstu/fc/rule/service/FuzzyTermService.java @@ -1,6 +1,7 @@ package ru.ulstu.fc.rule.service; import org.springframework.stereotype.Service; +import ru.ulstu.fc.project.service.ProjectService; import ru.ulstu.fc.rule.model.FuzzyTerm; import ru.ulstu.fc.rule.model.FuzzyTermForm; import ru.ulstu.fc.rule.repository.FuzzyTermRepository; @@ -12,20 +13,26 @@ import java.util.List; public class FuzzyTermService { private final FuzzyTermRepository fuzzyTermRepository; private final VariableService variableService; + private final ProjectService projectService; public FuzzyTermService(FuzzyTermRepository fuzzyTermRepository, - VariableService variableService) { + VariableService variableService, + ProjectService projectService) { this.fuzzyTermRepository = fuzzyTermRepository; this.variableService = variableService; + this.projectService = projectService; } public FuzzyTerm getById(Integer id) { - return fuzzyTermRepository + FuzzyTerm fuzzyTerm = fuzzyTermRepository .findById(id) .orElseThrow(() -> new RuntimeException("Term not found by id")); + checkIsCurrentUserFuzzyTermWithThrow(fuzzyTerm); + return fuzzyTerm; } public FuzzyTerm save(FuzzyTermForm fuzzyTermForm) { + variableService.getById(fuzzyTermForm.getVariableId()); FuzzyTerm term; if (fuzzyTermForm.getId() == null || fuzzyTermForm.getId() == 0) { term = new FuzzyTerm(); @@ -39,12 +46,10 @@ public class FuzzyTermService { variableService.addFuzzyTerm(fuzzyTermForm.getVariableId(), ft); } return ft; - } public void delete(FuzzyTermForm fuzzyTermForm) { - getById(fuzzyTermForm.getId()); - fuzzyTermRepository.deleteById(fuzzyTermForm.getId()); + fuzzyTermRepository.delete(getById(fuzzyTermForm.getId())); } public List getByVariableId(Integer variableId) { @@ -54,7 +59,12 @@ public class FuzzyTermService { return variableService.getById(variableId).getFuzzyTerms(); } - public List getAll(Integer projectId, Integer variableId) { + public List getAll(Integer variableId) { + variableService.getById(variableId); return getByVariableId(variableId); } + + public void checkIsCurrentUserFuzzyTermWithThrow(FuzzyTerm fuzzyTerm) { + projectService.checkIsCurrentUserProjectWithThrow(fuzzyTermRepository.findByFuzzyTerm(fuzzyTerm).getProject()); + } }