#311 Code Review of a Confirmation Document Creation Service
Perform a code review:
@Service
public class ConfirmDocService {
@Autowired
private ConfirmDocMapper confirmDocMapper;
@Autowired
private ConfirmDocRepository confirmDocRepository;
@Autowired
private ConfirmDocStateMachineService confirmDocStateMachineService;
@Autowired
private StateMachineFactory<DocStatusState, DocStatusEvent> confirmDocStateMachineFactory;
@Transactional
public ConfirmDocDto createConfirmDoc(ConfirmDocDto confirmDocDto) {
ConfirmDoc confirmDoc = confirmDocMapper.toEntity(confirmDocDto);
StateMachine<DocStatusState, DocStatusEvent> sm =
confirmDocStateMachineFactory.getStateMachine();
sm.getExtendedState()
.getVariables()
.put("CONFIRM_DOC_TO_BE_SAVED", confirmDoc);
sm.start();
confirmDoc.setDocStatusId(sm.getState().getId());
ConfirmDoc savedConfirmDoc = saveOrUpdate(confirmDoc);
return confirmDocMapper.toDto(savedConfirmDoc);
}
@Transactional
public ConfirmDoc saveOrUpdate(ConfirmDoc confirmDoc) {
if (confirmDocRepository.findAll()
.stream()
.filter(it -> it.getId().equals(confirmDoc.getId()))
.count() == 1) {
ConfirmDoc confirmDocFromDb =
confirmDocRepository.findById(confirmDoc.getId()).orElse(null);
ConfirmDoc updatedConfirmDoc =
confirmDocMapper.update(confirmDocFromDb, confirmDoc);
return confirmDocRepository.save(updatedConfirmDoc);
} else {
return confirmDocRepository.save(confirmDoc);
}
}
}
Question review
Sign in to start the dialogue
The mentor keeps the context of the current question and your previous messages.
Sign in
Available with Premium
This is just one of the solutions available with Premium. And more:
- 250+ advanced lectures
- 1300+ practice exercises
- 500+ solutions to problems from real interviews
- Personalized Java Hub certificates
- Expanded access to the AI mentor