Skip to content
Snippets Groups Projects
Commit e91192ec authored by Jan Tymel's avatar Jan Tymel
Browse files

[Cleanup] Rename QuestionnaireLevel to QuestionnairePhase

parent 269b8a6b
Branches
Tags
No related merge requests found
Showing
with 122 additions and 48 deletions
......@@ -4,9 +4,9 @@ import com.example.demo.dto.AbstractPhaseDto;
import com.example.demo.dto.InfoPhaseDto;
import com.example.demo.dto.InfoPhaseUpdateDto;
import com.example.demo.dto.PhaseCreateDTO;
import com.example.demo.dto.QuestionnairePhaseDto;
import com.example.demo.dto.TrainingPhaseDto;
import com.example.demo.dto.TrainingPhaseUpdateDto;
import com.example.demo.dto.QuestionnaireLevelDto;
import com.example.demo.dto.QuestionnaireUpdateDto;
import com.example.demo.facade.TrainingPhaseFacade;
import io.swagger.annotations.Api;
......@@ -192,7 +192,7 @@ public class PhasesController {
@ApiResponse(code = 500, message = "Unexpected application error")
})
@PutMapping(path = "/{phaseId}/questionnaire")
public ResponseEntity<QuestionnaireLevelDto> updateQuestionnairePhase(
public ResponseEntity<QuestionnairePhaseDto> updateQuestionnairePhase(
@ApiParam(value = "Training definition ID", required = true)
@PathVariable(name = "definitionId") Long definitionId,
@ApiParam(value = "Phase ID", required = true)
......@@ -200,7 +200,7 @@ public class PhasesController {
@ApiParam(value = "Questionnaire to be updated")
@RequestBody @Valid QuestionnaireUpdateDto questionnaireUpdateDto) {
QuestionnaireLevelDto updatedQuestionnairePhase = trainingPhaseFacade.updateQuestionnairePhase(definitionId, phaseId, questionnaireUpdateDto);
QuestionnairePhaseDto updatedQuestionnairePhase = trainingPhaseFacade.updateQuestionnairePhase(definitionId, phaseId, questionnaireUpdateDto);
return new ResponseEntity<>(updatedQuestionnairePhase, HttpStatus.OK);
}
......
......@@ -36,7 +36,7 @@ public class Question {
private int order;
@ManyToOne(fetch = FetchType.LAZY)
private QuestionnaireLevel questionnaireLevel;
private QuestionnairePhase questionnairePhase;
@OrderBy
@OneToMany(mappedBy = "question", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
......@@ -77,12 +77,12 @@ public class Question {
this.order = order;
}
public QuestionnaireLevel getQuestionnaireLevel() {
return questionnaireLevel;
public QuestionnairePhase getQuestionnairePhase() {
return questionnairePhase;
}
public void setQuestionnaireLevel(QuestionnaireLevel questionnaireLevel) {
this.questionnaireLevel = questionnaireLevel;
public void setQuestionnairePhase(QuestionnairePhase questionnairePhase) {
this.questionnairePhase = questionnairePhase;
}
public List<QuestionChoice> getChoices() {
......
......@@ -12,13 +12,13 @@ import javax.persistence.OrderBy;
import java.util.List;
@Entity
public class QuestionnaireLevel extends AbstractPhase {
public class QuestionnairePhase extends AbstractPhase {
@Enumerated(EnumType.STRING)
private QuestionnaireType questionnaireType;
@OrderBy
@OneToMany(mappedBy = "questionnaireLevel", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@OneToMany(mappedBy = "questionnairePhase", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private List<Question> questions;
@OrderBy
......
......@@ -23,7 +23,7 @@ public class QuestionnairePhaseRelation {
private Integer order;
@ManyToOne(fetch = FetchType.LAZY)
private QuestionnaireLevel relatedPhase;
private QuestionnairePhase relatedPhase;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
@JoinTable(name = "questionnaire_phase_relation_question",
......@@ -50,11 +50,11 @@ public class QuestionnairePhaseRelation {
this.order = order;
}
public QuestionnaireLevel getRelatedPhase() {
public QuestionnairePhase getRelatedPhase() {
return relatedPhase;
}
public void setRelatedPhase(QuestionnaireLevel relatedPhase) {
public void setRelatedPhase(QuestionnairePhase relatedPhase) {
this.relatedPhase = relatedPhase;
}
......
......@@ -2,7 +2,7 @@ package com.example.demo.dto;
import java.util.List;
public class QuestionnaireLevelDto extends AbstractPhaseDto {
public class QuestionnairePhaseDto extends AbstractPhaseDto {
private List<QuestionDto> questions;
......
......@@ -4,15 +4,15 @@ import com.example.demo.dto.AbstractPhaseDto;
import com.example.demo.dto.InfoPhaseDto;
import com.example.demo.dto.InfoPhaseUpdateDto;
import com.example.demo.dto.PhaseCreateDTO;
import com.example.demo.dto.QuestionnairePhaseDto;
import com.example.demo.dto.TrainingPhaseDto;
import com.example.demo.dto.TrainingPhaseUpdateDto;
import com.example.demo.dto.QuestionnaireLevelDto;
import com.example.demo.dto.QuestionnaireUpdateDto;
import com.example.demo.enums.PhaseType;
import com.example.demo.service.InfoPhaseService;
import com.example.demo.service.TrainingPhaseService;
import com.example.demo.service.PhaseService;
import com.example.demo.service.QuestionnaireLevelService;
import com.example.demo.service.QuestionnairePhaseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -29,7 +29,7 @@ public class TrainingPhaseFacade {
private InfoPhaseService infoPhaseService;
@Autowired
private QuestionnaireLevelService questionnaireLevelService;
private QuestionnairePhaseService questionnairePhaseService;
@Autowired
private TrainingPhaseService trainingPhaseService;
......@@ -39,7 +39,7 @@ public class TrainingPhaseFacade {
if (PhaseType.INFO.equals(phaseCreateDTO.getPhaseType())) {
abstractPhaseDto = infoPhaseService.createDefaultInfoPhase(trainingDefinitionId);
} else if (PhaseType.QUESTIONNAIRE.equals(phaseCreateDTO.getPhaseType())) {
abstractPhaseDto = questionnaireLevelService.createDefaultQuestionnaireLevel(trainingDefinitionId);
abstractPhaseDto = questionnairePhaseService.createDefaultQuestionnairePhase(trainingDefinitionId);
} else {
abstractPhaseDto = trainingPhaseService.createDefaultTrainingPhase(trainingDefinitionId);
}
......@@ -75,8 +75,8 @@ public class TrainingPhaseFacade {
return trainingPhaseService.updateTrainingPhase(definitionId, phaseId, trainingPhaseUpdate);
}
public QuestionnaireLevelDto updateQuestionnairePhase(Long definitionId, Long phaseId, QuestionnaireUpdateDto questionnaireUpdateDto) {
return questionnaireLevelService.updateQuestionnairePhase(definitionId, phaseId, questionnaireUpdateDto);
public QuestionnairePhaseDto updateQuestionnairePhase(Long definitionId, Long phaseId, QuestionnaireUpdateDto questionnaireUpdateDto) {
return questionnairePhaseService.updateQuestionnairePhase(definitionId, phaseId, questionnaireUpdateDto);
}
public void movePhaseToSpecifiedOrder(Long phaseIdFrom, int newPosition) {
......
......@@ -3,10 +3,10 @@ package com.example.demo.mapper;
import com.example.demo.domain.AbstractPhase;
import com.example.demo.domain.DecisionMatrixRow;
import com.example.demo.domain.InfoPhase;
import com.example.demo.domain.QuestionnairePhase;
import com.example.demo.domain.TrainingPhase;
import com.example.demo.domain.Question;
import com.example.demo.domain.QuestionChoice;
import com.example.demo.domain.QuestionnaireLevel;
import com.example.demo.domain.Task;
import com.example.demo.dto.AbstractPhaseDto;
import com.example.demo.dto.DecisionMatrixRowDto;
......@@ -18,7 +18,7 @@ import com.example.demo.dto.QuestionChoiceDto;
import com.example.demo.dto.QuestionChoiceUpdateDto;
import com.example.demo.dto.QuestionDto;
import com.example.demo.dto.QuestionUpdateDto;
import com.example.demo.dto.QuestionnaireLevelDto;
import com.example.demo.dto.QuestionnairePhaseDto;
import com.example.demo.dto.QuestionnaireUpdateDto;
import com.example.demo.dto.TaskCreateDto;
import com.example.demo.dto.TaskDto;
......@@ -43,8 +43,8 @@ public interface BeanMapper {
abstractPhaseDto = toDto((InfoPhase) abstractPhase);
} else if (abstractPhase instanceof Task) {
abstractPhaseDto = toDto((Task) abstractPhase);
} else if (abstractPhase instanceof QuestionnaireLevel) {
abstractPhaseDto = toDto((QuestionnaireLevel) abstractPhase);
} else if (abstractPhase instanceof QuestionnairePhase) {
abstractPhaseDto = toDto((QuestionnairePhase) abstractPhase);
} else {
throw new RuntimeException("Unknown level type " + abstractPhase.getClass().getName());
}
......@@ -91,9 +91,9 @@ public interface BeanMapper {
QuestionDto toDto(Question question);
QuestionnaireLevel toEntity(QuestionnaireUpdateDto questionnaireUpdateDto);
QuestionnairePhase toEntity(QuestionnaireUpdateDto questionnaireUpdateDto);
QuestionnaireLevel toEntity(QuestionnaireLevelDto questionnaireLevelDto);
QuestionnairePhase toEntity(QuestionnairePhaseDto questionnairePhaseDto);
QuestionnaireLevelDto toDto(QuestionnaireLevel questionnaireLevel);
QuestionnairePhaseDto toDto(QuestionnairePhase questionnairePhase);
}
......@@ -8,12 +8,12 @@ import org.springframework.data.repository.query.Param;
public interface QuestionRepository extends JpaRepository<Question, Long> {
@Query("SELECT COALESCE(MAX(q.order), -1) FROM Question q WHERE q.questionnaireLevel.id = :questionnaireId")
@Query("SELECT COALESCE(MAX(q.order), -1) FROM Question q WHERE q.questionnairePhase.id = :questionnaireId")
Integer getCurrentMaxOrder(@Param("questionnaireId") Long questionnaireId);
@Modifying
@Query("UPDATE Question q SET q.order = q.order - 1 " +
"WHERE q.questionnaireLevel.id = :questionnaireLevelId " +
"WHERE q.questionnairePhase.id = :questionnairePhaseIdLevelId " +
"AND q.order > :order ")
void decreaseOrderAfterQuestionWasDeleted(@Param("order") int order, @Param("questionnaireLevelId") Long questionnaireLevelId);
void decreaseOrderAfterQuestionWasDeleted(@Param("order") int order, @Param("questionnairePhaseIdLevelId") Long questionnairePhaseIdLevelId);
}
package com.example.demo.repository;
import com.example.demo.domain.QuestionnaireLevel;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
public interface QuestionnaireLevelRepository extends JpaRepository<QuestionnaireLevel, Long> {
}
package com.example.demo.repository;
import com.example.demo.domain.QuestionnairePhase;
import org.springframework.data.jpa.repository.JpaRepository;
public interface QuestionnairePhaseRepository extends JpaRepository<QuestionnairePhase, Long> {
}
package com.example.demo.service;
import com.example.demo.domain.Question;
import com.example.demo.domain.QuestionChoice;
import com.example.demo.domain.QuestionnaireLevel;
import com.example.demo.domain.QuestionnairePhase;
import com.example.demo.dto.QuestionDto;
import com.example.demo.enums.QuestionType;
import com.example.demo.mapper.BeanMapper;
import com.example.demo.repository.QuestionRepository;
import com.example.demo.repository.QuestionnaireLevelRepository;
import com.example.demo.repository.QuestionnairePhaseRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -21,14 +20,14 @@ public class QuestionService {
private static final Logger LOG = LoggerFactory.getLogger(QuestionService.class);
@Autowired
private QuestionnaireLevelRepository questionnaireLevelRepository;
private QuestionnairePhaseRepository questionnairePhaseRepository;
@Autowired
private QuestionRepository questionRepository;
public QuestionDto createDefaultQuestion(Long questionnaireId, QuestionType questionType) {
Optional<QuestionnaireLevel> questionnaireLevel = questionnaireLevelRepository.findById(questionnaireId);
if (questionnaireLevel.isEmpty()) {
Optional<QuestionnairePhase> questionnairePhase = questionnairePhaseRepository.findById(questionnaireId);
if (questionnairePhase.isEmpty()) {
// TODO return 404
return null;
}
......@@ -36,7 +35,7 @@ public class QuestionService {
Question question = new Question();
question.setText("Title of question");
question.setQuestionType(questionType);
question.setQuestionnaireLevel(questionnaireLevel.get());
question.setQuestionnairePhase(questionnairePhase.get());
question.setOrder(questionRepository.getCurrentMaxOrder(questionnaireId) + 1);
Question persistedEntity = questionRepository.save(question);
......@@ -54,7 +53,7 @@ public class QuestionService {
}
question.setChoices(persistedQuestion.get().getChoices());
question.setQuestionnaireLevel(persistedQuestion.get().getQuestionnaireLevel());
question.setQuestionnairePhase(persistedQuestion.get().getQuestionnairePhase());
question.setOrder(persistedQuestion.get().getOrder());
Question savedEntity = questionRepository.save(question);
......@@ -71,7 +70,7 @@ public class QuestionService {
}
int questionOrder = question.get().getOrder();
questionRepository.decreaseOrderAfterQuestionWasDeleted(questionOrder, question.get().getQuestionnaireLevel().getId());
questionRepository.decreaseOrderAfterQuestionWasDeleted(questionOrder, question.get().getQuestionnairePhase().getId());
questionRepository.delete(question.get());
}
......
package com.example.demo.service;
import com.example.demo.domain.QuestionnaireLevel;
import com.example.demo.dto.QuestionnaireLevelDto;
import com.example.demo.domain.QuestionnairePhase;
import com.example.demo.dto.QuestionnairePhaseDto;
import com.example.demo.dto.QuestionnaireUpdateDto;
import com.example.demo.mapper.BeanMapper;
import com.example.demo.repository.AbstractPhaseRepository;
import com.example.demo.repository.QuestionnaireLevelRepository;
import com.example.demo.repository.QuestionnairePhaseRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -14,63 +14,63 @@ import org.springframework.stereotype.Service;
import java.util.Optional;
@Service
public class QuestionnaireLevelService {
public class QuestionnairePhaseService {
private static final Logger LOG = LoggerFactory.getLogger(QuestionnaireLevelService.class);
private static final Logger LOG = LoggerFactory.getLogger(QuestionnairePhaseService.class);
@Autowired
private QuestionnaireLevelRepository questionnaireLevelRepository;
private QuestionnairePhaseRepository questionnairePhaseRepository;
@Autowired
private AbstractPhaseRepository abstractPhaseRepository;
public QuestionnaireLevelDto createDefaultQuestionnaireLevel(Long trainingDefinitionId) {
public QuestionnairePhaseDto createDefaultQuestionnairePhase(Long trainingDefinitionId) {
QuestionnaireLevel questionnaireLevel =new QuestionnaireLevel();
questionnaireLevel.setTitle("Title of questionnaire level");
questionnaireLevel.setTrainingDefinitionId(trainingDefinitionId);
questionnaireLevel.setOrder(abstractPhaseRepository.getCurrentMaxOrder(trainingDefinitionId) + 1);
QuestionnairePhase questionnairePhase =new QuestionnairePhase();
questionnairePhase.setTitle("Title of questionnaire level");
questionnairePhase.setTrainingDefinitionId(trainingDefinitionId);
questionnairePhase.setOrder(abstractPhaseRepository.getCurrentMaxOrder(trainingDefinitionId) + 1);
QuestionnaireLevel persistedEntity = questionnaireLevelRepository.save(questionnaireLevel);
QuestionnairePhase persistedEntity = questionnairePhaseRepository.save(questionnairePhase);
return BeanMapper.INSTANCE.toDto(persistedEntity);
}
public QuestionnaireLevelDto updateQuestion(QuestionnaireLevel questionnaireLevel) {
Optional<QuestionnaireLevel> persistedQuestion = questionnaireLevelRepository.findById(questionnaireLevel.getId());
public QuestionnairePhaseDto updateQuestion(QuestionnairePhase questionnairePhase) {
Optional<QuestionnairePhase> persistedQuestion = questionnairePhaseRepository.findById(questionnairePhase.getId());
if (persistedQuestion.isEmpty()) {
// TODO return 404
LOG.error("No questionnaire level found with ID {}.", questionnaireLevel.getId());
return new QuestionnaireLevelDto();
LOG.error("No questionnaire level found with ID {}.", questionnairePhase.getId());
return new QuestionnairePhaseDto();
}
questionnaireLevel.setTrainingDefinitionId(persistedQuestion.get().getTrainingDefinitionId());
questionnaireLevel.setQuestions(persistedQuestion.get().getQuestions());
questionnaireLevel.setOrder(persistedQuestion.get().getOrder());
questionnairePhase.setTrainingDefinitionId(persistedQuestion.get().getTrainingDefinitionId());
questionnairePhase.setQuestions(persistedQuestion.get().getQuestions());
questionnairePhase.setOrder(persistedQuestion.get().getOrder());
QuestionnaireLevel savedEntity = questionnaireLevelRepository.save(questionnaireLevel);
QuestionnairePhase savedEntity = questionnairePhaseRepository.save(questionnairePhase);
return BeanMapper.INSTANCE.toDto(savedEntity);
}
public QuestionnaireLevelDto updateQuestionnairePhase(Long definitionId, Long phaseId, QuestionnaireUpdateDto questionnaireUpdateDto) {
QuestionnaireLevel questionnaireLevel = BeanMapper.INSTANCE.toEntity(questionnaireUpdateDto);
questionnaireLevel.setId(phaseId);
public QuestionnairePhaseDto updateQuestionnairePhase(Long definitionId, Long phaseId, QuestionnaireUpdateDto questionnaireUpdateDto) {
QuestionnairePhase questionnairePhase = BeanMapper.INSTANCE.toEntity(questionnaireUpdateDto);
questionnairePhase.setId(phaseId);
QuestionnaireLevel persistedQuestionnairePhase = questionnaireLevelRepository.findById(questionnaireLevel.getId())
QuestionnairePhase persistedQuestionnairePhase = questionnairePhaseRepository.findById(questionnairePhase.getId())
.orElseThrow(() -> new RuntimeException("Questionnaire phase was not found"));
// TODO throw proper exception once kypo2-training is migrated
// TODO add check to trainingDefinitionId and phaseId (field structure will be probably changed);
questionnaireLevel.setTrainingDefinitionId(persistedQuestionnairePhase.getTrainingDefinitionId());
questionnaireLevel.setOrder(persistedQuestionnairePhase.getOrder());
questionnairePhase.setTrainingDefinitionId(persistedQuestionnairePhase.getTrainingDefinitionId());
questionnairePhase.setOrder(persistedQuestionnairePhase.getOrder());
// TODO questions, their choices and realtions among questions and training phases must be set here
QuestionnaireLevel savedEntity = questionnaireLevelRepository.save(questionnaireLevel);
QuestionnairePhase savedEntity = questionnairePhaseRepository.save(questionnairePhase);
return BeanMapper.INSTANCE.toDto(savedEntity);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment